1
1
mirror of https://github.com/OpenDiablo2/OpenDiablo2 synced 2024-06-22 23:25:23 +00:00
OpenDiablo2/d2core/d2scene/character_select.go

103 lines
3.5 KiB
Go
Raw Normal View History

2019-11-10 13:51:02 +00:00
package d2scene
import (
2019-11-10 08:36:53 +00:00
"github.com/OpenDiablo2/OpenDiablo2/d2audio"
"github.com/OpenDiablo2/OpenDiablo2/d2common"
"github.com/OpenDiablo2/OpenDiablo2/d2common/d2enum"
"github.com/OpenDiablo2/OpenDiablo2/d2common/d2interface"
2019-11-10 13:51:02 +00:00
"github.com/OpenDiablo2/OpenDiablo2/d2common/d2resource"
"github.com/OpenDiablo2/OpenDiablo2/d2data/d2datadict"
2019-11-10 08:36:53 +00:00
dh "github.com/OpenDiablo2/OpenDiablo2/d2helper"
"github.com/OpenDiablo2/OpenDiablo2/d2render"
2019-11-10 13:51:02 +00:00
"github.com/OpenDiablo2/OpenDiablo2/d2render/d2ui"
"github.com/hajimehoshi/ebiten"
)
type CharacterSelect struct {
2019-11-10 13:51:02 +00:00
uiManager *d2ui.Manager
2019-11-10 08:36:53 +00:00
soundManager *d2audio.Manager
fileProvider d2interface.FileProvider
sceneProvider d2interface.SceneProvider
2019-11-10 15:44:13 +00:00
background d2render.Sprite
newCharButton d2ui.Button
convertCharButton d2ui.Button
deleteCharButton d2ui.Button
exitButton d2ui.Button
okButton d2ui.Button
}
func CreateCharacterSelect(
2019-11-10 08:36:53 +00:00
fileProvider d2interface.FileProvider,
sceneProvider d2interface.SceneProvider,
2019-11-10 13:51:02 +00:00
uiManager *d2ui.Manager,
2019-11-10 08:36:53 +00:00
soundManager *d2audio.Manager,
) *CharacterSelect {
result := &CharacterSelect{
uiManager: uiManager,
sceneProvider: sceneProvider,
fileProvider: fileProvider,
soundManager: soundManager,
}
return result
}
func (v *CharacterSelect) Load() []func() {
2019-11-10 13:51:02 +00:00
v.soundManager.PlayBGM(d2resource.BGMTitle)
return []func(){
func() {
2019-11-10 13:51:02 +00:00
v.background = d2render.CreateSprite(v.fileProvider.LoadFile(d2resource.CharacterSelectionBackground), d2datadict.Palettes[d2enum.Sky])
v.background.MoveTo(0, 0)
},
func() {
2019-11-10 13:51:02 +00:00
v.newCharButton = d2ui.CreateButton(d2ui.ButtonTypeTall, v.fileProvider, dh.CombineStrings(dh.SplitIntoLinesWithMaxWidth(d2common.TranslateString("#831"), 15)))
v.newCharButton.MoveTo(33, 468)
2019-10-27 06:58:37 +00:00
v.newCharButton.OnActivated(func() { v.onNewCharButtonClicked() })
v.uiManager.AddWidget(&v.newCharButton)
},
func() {
2019-11-10 13:51:02 +00:00
v.convertCharButton = d2ui.CreateButton(d2ui.ButtonTypeTall, v.fileProvider, dh.CombineStrings(dh.SplitIntoLinesWithMaxWidth(d2common.TranslateString("#825"), 15)))
v.convertCharButton.MoveTo(233, 468)
v.convertCharButton.SetEnabled(false)
v.uiManager.AddWidget(&v.convertCharButton)
},
func() {
2019-11-10 13:51:02 +00:00
v.deleteCharButton = d2ui.CreateButton(d2ui.ButtonTypeTall, v.fileProvider, dh.CombineStrings(dh.SplitIntoLinesWithMaxWidth(d2common.TranslateString("#832"), 15)))
v.deleteCharButton.MoveTo(433, 468)
v.deleteCharButton.SetEnabled(false)
v.uiManager.AddWidget(&v.deleteCharButton)
},
func() {
2019-11-10 13:51:02 +00:00
v.exitButton = d2ui.CreateButton(d2ui.ButtonTypeMedium, v.fileProvider, d2common.TranslateString("#970"))
v.exitButton.MoveTo(33, 537)
v.exitButton.OnActivated(func() { v.onExitButtonClicked() })
v.uiManager.AddWidget(&v.exitButton)
},
func() {
2019-11-10 13:51:02 +00:00
v.okButton = d2ui.CreateButton(d2ui.ButtonTypeMedium, v.fileProvider, d2common.TranslateString("#971"))
v.okButton.MoveTo(625, 537)
v.okButton.SetEnabled(false)
v.uiManager.AddWidget(&v.okButton)
},
}
}
2019-10-27 06:58:37 +00:00
func (v *CharacterSelect) onNewCharButtonClicked() {
v.sceneProvider.SetNextScene(CreateSelectHeroClass(v.fileProvider, v.sceneProvider, v.uiManager, v.soundManager))
}
func (v *CharacterSelect) onExitButtonClicked() {
mainMenu := CreateMainMenu(v.fileProvider, v.sceneProvider, v.uiManager, v.soundManager)
mainMenu.ShowTrademarkScreen = false
v.sceneProvider.SetNextScene(mainMenu)
}
func (v *CharacterSelect) Unload() {
}
func (v *CharacterSelect) Render(screen *ebiten.Image) {
v.background.DrawSegments(screen, 4, 3, 0)
}
func (v *CharacterSelect) Update(tickTime float64) {
}