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