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
State.h@10:f2488a0ecab7, 2015-05-08 (annotated)
- Committer:
- Siriagus
- Date:
- Fri May 08 14:39:36 2015 +0000
- Revision:
- 10:f2488a0ecab7
- Parent:
- 8:9ac6a428fa26
- Child:
- 12:8178fad5e660
Encapsluated PinDetect buttons in InputManager (made private)
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Siriagus | 1:0cfe2255092a | 1 | #ifndef STATE_H |
Siriagus | 1:0cfe2255092a | 2 | #define STATE_H |
Siriagus | 1:0cfe2255092a | 3 | |
Siriagus | 4:d6661b976359 | 4 | #include "N5110.h" |
Siriagus | 4:d6661b976359 | 5 | #include "PinDetect.h" |
Siriagus | 4:d6661b976359 | 6 | #include "InputManager.h" |
Siriagus | 4:d6661b976359 | 7 | |
Siriagus | 10:f2488a0ecab7 | 8 | /** @file State.h |
Siriagus | 10:f2488a0ecab7 | 9 | * @author Andreas Garmannslund |
Siriagus | 10:f2488a0ecab7 | 10 | * @date April 2015 |
Siriagus | 10:f2488a0ecab7 | 11 | */ |
Siriagus | 10:f2488a0ecab7 | 12 | |
Siriagus | 4:d6661b976359 | 13 | class StateManager; |
Siriagus | 4:d6661b976359 | 14 | |
Siriagus | 10:f2488a0ecab7 | 15 | /// States used in the finite state machine. |
Siriagus | 8:9ac6a428fa26 | 16 | enum MainState {MAIN_MENU, GAME, SUBMIT_HIGHSCORE, GAME_OVER, NO_STATE, TITLE_SCREEN}; |
Siriagus | 4:d6661b976359 | 17 | |
Siriagus | 10:f2488a0ecab7 | 18 | /// Abstract class for states in the program's main finite state machine. All state implementations is derived from this abstract class. |
Siriagus | 1:0cfe2255092a | 19 | class State |
Siriagus | 5:100d960fc6d5 | 20 | { |
Siriagus | 1:0cfe2255092a | 21 | public: |
Siriagus | 10:f2488a0ecab7 | 22 | |
Siriagus | 10:f2488a0ecab7 | 23 | /* Creates a new state object. Should be called from child's constructor. |
Siriagus | 10:f2488a0ecab7 | 24 | * @param fsm Pointer to finished state machine. |
Siriagus | 10:f2488a0ecab7 | 25 | * @param lcd Pointer to the N5110 lcd object. |
Siriagus | 10:f2488a0ecab7 | 26 | * @param input Pointer to the InputManager object, used for controlling user input. |
Siriagus | 10:f2488a0ecab7 | 27 | */ |
Siriagus | 4:d6661b976359 | 28 | State(StateManager* fsm, N5110 *lcd, InputManager* input) |
Siriagus | 7:678873947b29 | 29 | :lcd(lcd), input(input), fsm(fsm){} |
Siriagus | 4:d6661b976359 | 30 | |
Siriagus | 10:f2488a0ecab7 | 31 | /// Handle user input and update logic. |
Siriagus | 7:678873947b29 | 32 | virtual void update(float dt) = 0; |
Siriagus | 10:f2488a0ecab7 | 33 | |
Siriagus | 10:f2488a0ecab7 | 34 | /// Draw to screen. |
Siriagus | 4:d6661b976359 | 35 | virtual void render() = 0; |
Siriagus | 4:d6661b976359 | 36 | |
Siriagus | 7:678873947b29 | 37 | protected: |
Siriagus | 10:f2488a0ecab7 | 38 | /* Requests the finite state machine to switch to a new state when possible. |
Siriagus | 10:f2488a0ecab7 | 39 | * @param newState The state the fsm should switch to. |
Siriagus | 10:f2488a0ecab7 | 40 | **/ |
Siriagus | 7:678873947b29 | 41 | void requestStateChange(MainState newState); |
Siriagus | 10:f2488a0ecab7 | 42 | |
Siriagus | 10:f2488a0ecab7 | 43 | /** Draws an image to the lcd |
Siriagus | 10:f2488a0ecab7 | 44 | * @param img Array with the same size as the display, where 1 is opaque, 0 is blank. |
Siriagus | 10:f2488a0ecab7 | 45 | */ |
Siriagus | 8:9ac6a428fa26 | 46 | void drawImage(const int img[BANKS][WIDTH]); // Draws an image from array |
Siriagus | 4:d6661b976359 | 47 | |
Siriagus | 4:d6661b976359 | 48 | protected: |
Siriagus | 4:d6661b976359 | 49 | N5110 *lcd; |
Siriagus | 4:d6661b976359 | 50 | InputManager *input; |
Siriagus | 4:d6661b976359 | 51 | |
Siriagus | 4:d6661b976359 | 52 | private: |
Siriagus | 4:d6661b976359 | 53 | StateManager *fsm; |
Siriagus | 4:d6661b976359 | 54 | |
Siriagus | 1:0cfe2255092a | 55 | }; |
Siriagus | 1:0cfe2255092a | 56 | |
Siriagus | 1:0cfe2255092a | 57 | #endif |