More menu navigation

This commit is contained in:
2020-03-25 00:48:09 +00:00
parent 7824396c24
commit 4eb4b6e69f

View File

@@ -21,14 +21,24 @@ func (o *Ordoor) mainDriver() (*ui.Driver, error) {
return nil, err
}
newGame, err := o.newGameDriver(main)
if err != nil {
return nil, err
}
loadGame, err := o.loadGameDriver(main)
if err != nil {
return nil, err
}
options, err := o.optionsDriver(main)
if err != nil {
return nil, err
}
// TODO: clicking these buttons should load other interfaces
try(main.OnClick("2.1", func() {}), &err) // New game
try(main.OnClick("2.2", func() {}), &err) // Load game
try(main.OnClick("2.1", func() { o.driver = newGame }), &err) // New game
try(main.OnClick("2.2", func() { o.driver = loadGame }), &err) // Load game
try(main.SetFreeze("2.3", true), &err) // Multiplayer - disable for now
try(main.OnClick("2.4", func() { o.driver = options }), &err) // Options
try(main.OnClick("2.5", func() { o.nextState = StateExit }), &err) // Quit
@@ -36,6 +46,54 @@ func (o *Ordoor) mainDriver() (*ui.Driver, error) {
return main, err
}
func (o *Ordoor) newGameDriver(main *ui.Driver) (*ui.Driver, error) {
newGame, err := o.buildDriver("newgame")
if err != nil {
return nil, err
}
levelPly, err := o.levelPlyDriver(newGame)
if err != nil {
return nil, err
}
singles, err := o.singlesDriver(newGame)
if err != nil {
return nil, err
}
randomMap, err := o.randomMapDriver(newGame)
if err != nil {
return nil, err
}
try(newGame.OnClick("2.1", func() { o.driver = levelPly }), &err) // New campaign button
try(newGame.OnClick("2.2", func() { o.driver = singles }), &err) // Single scenario button
try(newGame.OnClick("2.3", func() { o.driver = randomMap }), &err) // Random scenario button
try(newGame.OnClick("2.4", func() { o.driver = main }), &err) // Back button
if err != nil {
return nil, err
}
return newGame, nil
}
func (o *Ordoor) loadGameDriver(main *ui.Driver) (*ui.Driver, error) {
loadGame, err := o.buildDriver("loadgame")
if err != nil {
return nil, err
}
try(loadGame.OnClick("3.3", func() { o.driver = main }), &err) // Cancel button
if err != nil {
return nil, err
}
return loadGame, nil
}
// Options needs to know how to go back to main
func (o *Ordoor) optionsDriver(main *ui.Driver) (*ui.Driver, error) {
options, err := o.buildDriver("options")
@@ -82,6 +140,52 @@ func (o *Ordoor) optionsDriver(main *ui.Driver) (*ui.Driver, error) {
return options, err
}
// "Level of play menu when starting a new campaign
func (o *Ordoor) levelPlyDriver(newGame *ui.Driver) (*ui.Driver, error) {
levelPly, err := o.buildDriver("levelply")
if err != nil {
return nil, err
}
try(levelPly.OnClick("2.5", func() { o.driver = newGame }), &err) // Back button
if err != nil {
return nil, err
}
return levelPly, nil
}
func (o *Ordoor) singlesDriver(newGame *ui.Driver) (*ui.Driver, error) {
singles, err := o.buildDriver("singles")
if err != nil {
return nil, err
}
try(singles.OnClick("4.11", func() { o.driver = newGame }), &err) // Back button
if err != nil {
return nil, err
}
return singles, nil
}
func (o *Ordoor) randomMapDriver(newGame *ui.Driver) (*ui.Driver, error) {
randomMap, err := o.buildDriver("randommap")
if err != nil {
return nil, err
}
try(randomMap.OnClick("2.19", func() { o.driver = newGame }), &err) // Back button
if err != nil {
return nil, err
}
return randomMap, nil
}
func (o *Ordoor) keyboardDriver(options *ui.Driver) (*ui.Driver, error) {
kbd, err := o.buildDriver("keyboard")
if err != nil {