Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed N5110 ShiftReg PinDetect
MainMenu.h@19:89c3eeb3761b, 2021-03-25 (annotated)
- Committer:
- hugohu
- Date:
- Thu Mar 25 03:43:10 2021 +0000
- Revision:
- 19:89c3eeb3761b
- Parent:
- 18:709ea375b0df
A more complex game in developing.
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| Siriagus | 5:100d960fc6d5 | 1 | #ifndef MAIN_MENU_H |
| Siriagus | 5:100d960fc6d5 | 2 | #define MAIN_MENU_H |
| Siriagus | 5:100d960fc6d5 | 3 | |
| Siriagus | 12:8178fad5e660 | 4 | /** @file MainMenu.h |
| Siriagus | 12:8178fad5e660 | 5 | * @author Andreas Garmannslund |
| Siriagus | 12:8178fad5e660 | 6 | * @date April 2015 |
| Siriagus | 12:8178fad5e660 | 7 | */ |
| Siriagus | 12:8178fad5e660 | 8 | |
| Siriagus | 5:100d960fc6d5 | 9 | #include "State.h" |
| Siriagus | 17:d6a3b29cab31 | 10 | #include "Global.h" |
| Siriagus | 17:d6a3b29cab31 | 11 | #include <string> |
| Siriagus | 17:d6a3b29cab31 | 12 | #include <sstream> |
| Siriagus | 5:100d960fc6d5 | 13 | |
| Siriagus | 10:f2488a0ecab7 | 14 | /// State: Main Menu |
| Siriagus | 5:100d960fc6d5 | 15 | class MainMenu : public State |
| Siriagus | 5:100d960fc6d5 | 16 | { |
| Siriagus | 5:100d960fc6d5 | 17 | public: |
| Siriagus | 10:f2488a0ecab7 | 18 | /// Creates a new MainMenu object |
| hugohu | 19:89c3eeb3761b | 19 | MainMenu(StateManager* fsm, N5110 *lcd, InputManager* input, Sound *sound, ShiftReg *shiftreg) |
| hugohu | 19:89c3eeb3761b | 20 | : State(fsm, lcd, input, sound, shiftreg) {init();} |
| Siriagus | 5:100d960fc6d5 | 21 | |
| Siriagus | 18:709ea375b0df | 22 | /// Update logic |
| Siriagus | 18:709ea375b0df | 23 | virtual void update(float dt); |
| Siriagus | 18:709ea375b0df | 24 | |
| Siriagus | 18:709ea375b0df | 25 | /// Draw MainMenu to screen |
| Siriagus | 18:709ea375b0df | 26 | virtual void render(); |
| Siriagus | 5:100d960fc6d5 | 27 | |
| Siriagus | 5:100d960fc6d5 | 28 | private: |
| Siriagus | 5:100d960fc6d5 | 29 | void init(); |
| Siriagus | 18:709ea375b0df | 30 | static void btnAPress(); // Interrupt callback function when button A is pressed |
| Siriagus | 18:709ea375b0df | 31 | static void btnBPress(); // Interrupt callback function when button B is pressed |
| Siriagus | 18:709ea375b0df | 32 | static void btnCPress(); // Interrupt callback function when button C is pressed |
| hugohu | 19:89c3eeb3761b | 33 | static void btnDPress(); // Interrupt callback function when button D is pressed |
| Siriagus | 6:edb48de563a9 | 34 | |
| Siriagus | 6:edb48de563a9 | 35 | // Variables |
| Siriagus | 6:edb48de563a9 | 36 | private: |
| Siriagus | 10:f2488a0ecab7 | 37 | /// States for the main menu's internal finite state machine |
| Siriagus | 10:f2488a0ecab7 | 38 | enum MenuState {SELECT_PLAY, SELECT_HIGHSCORES, SELECT_CONTROLS, LOAD_GAME, HIGHSCORES, CONTROLS}; |
| Siriagus | 18:709ea375b0df | 39 | |
| Siriagus | 18:709ea375b0df | 40 | /// Current state of the internal finite state machine |
| Siriagus | 18:709ea375b0df | 41 | static int currentState; |
| Siriagus | 10:f2488a0ecab7 | 42 | |
| Siriagus | 10:f2488a0ecab7 | 43 | /** Transition table for internal fsm |
| Siriagus | 10:f2488a0ecab7 | 44 | * Each row corresponds to a state |
| Siriagus | 10:f2488a0ecab7 | 45 | * Each column corresponds to the button pressed |
| Siriagus | 10:f2488a0ecab7 | 46 | */ |
| Siriagus | 10:f2488a0ecab7 | 47 | static const int MENU_FSM[6][3]; |
| Siriagus | 5:100d960fc6d5 | 48 | }; |
| Siriagus | 5:100d960fc6d5 | 49 | |
| Siriagus | 5:100d960fc6d5 | 50 | #endif |