From 4eb4b6e69f7d816088c3d4fa884003e514745e5c Mon Sep 17 00:00:00 2001 From: Nick Thomas Date: Wed, 25 Mar 2020 00:48:09 +0000 Subject: [PATCH] More menu navigation --- internal/ordoor/interfaces.go | 108 +++++++++++++++++++++++++++++++++- 1 file changed, 106 insertions(+), 2 deletions(-) diff --git a/internal/ordoor/interfaces.go b/internal/ordoor/interfaces.go index e4bec2d..6b93fcd 100644 --- a/internal/ordoor/interfaces.go +++ b/internal/ordoor/interfaces.go @@ -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 {