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.
Pause/Pause.cpp@22:4e305ff8a050, 2019-04-18 (annotated)
- Committer:
- JamesCummins
- Date:
- Thu Apr 18 11:50:53 2019 +0000
- Revision:
- 22:4e305ff8a050
- Parent:
- 21:9d1447765ee1
- Child:
- 29:42651f87522b
Options Menu appears to be working. Change Brightness working (other than that it skips 0.7???) Need to complete adjust ball speed and high scores list. (Still need to save to SD card somehow)
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
JamesCummins | 20:4a39a1a2be51 | 1 | #include "Pause.h" |
JamesCummins | 20:4a39a1a2be51 | 2 | |
JamesCummins | 22:4e305ff8a050 | 3 | Pause::Pause(){ |
JamesCummins | 22:4e305ff8a050 | 4 | } |
JamesCummins | 22:4e305ff8a050 | 5 | |
JamesCummins | 22:4e305ff8a050 | 6 | Pause::~Pause(){ |
JamesCummins | 22:4e305ff8a050 | 7 | } |
JamesCummins | 22:4e305ff8a050 | 8 | |
JamesCummins | 20:4a39a1a2be51 | 9 | void Pause::init(){ |
JamesCummins | 20:4a39a1a2be51 | 10 | _state = RESUME; |
JamesCummins | 20:4a39a1a2be51 | 11 | } |
JamesCummins | 20:4a39a1a2be51 | 12 | |
JamesCummins | 21:9d1447765ee1 | 13 | int Pause::pause_menu(Gamepad &gamepad, N5110 &lcd, int fps, int frame, Mode mode){ |
JamesCummins | 20:4a39a1a2be51 | 14 | PauseOption choice = RESUME; |
JamesCummins | 20:4a39a1a2be51 | 15 | while(!(gamepad.check_event(gamepad.A_PRESSED))){ |
JamesCummins | 20:4a39a1a2be51 | 16 | lcd.clear(); |
JamesCummins | 20:4a39a1a2be51 | 17 | display_pause_options(lcd); |
JamesCummins | 20:4a39a1a2be51 | 18 | choice = pause_selection(gamepad, lcd); |
JamesCummins | 20:4a39a1a2be51 | 19 | lcd.refresh(); |
JamesCummins | 20:4a39a1a2be51 | 20 | wait(0.2); |
JamesCummins | 20:4a39a1a2be51 | 21 | } |
JamesCummins | 20:4a39a1a2be51 | 22 | int jump_to_frame = frame; |
JamesCummins | 20:4a39a1a2be51 | 23 | if(choice == RESUME){ jump_to_frame = frame; } //Just keep code iterating |
JamesCummins | 20:4a39a1a2be51 | 24 | if(choice == RESTART){ jump_to_frame = 0; } //return to frame 1 if restarted |
JamesCummins | 20:4a39a1a2be51 | 25 | if(choice == QUIT){ jump_to_frame = 45*fps; } //jump to final frame |
JamesCummins | 21:9d1447765ee1 | 26 | if(choice == HELP){ //display relevant help screen |
JamesCummins | 21:9d1447765ee1 | 27 | if(mode == CLASSIC_MODE){ classic_help(gamepad, lcd); } |
JamesCummins | 21:9d1447765ee1 | 28 | if(mode == BRICKBREAKER_MODE){ brickbreaker_help(gamepad, lcd); } |
JamesCummins | 21:9d1447765ee1 | 29 | } |
JamesCummins | 20:4a39a1a2be51 | 30 | return jump_to_frame; |
JamesCummins | 20:4a39a1a2be51 | 31 | } |
JamesCummins | 20:4a39a1a2be51 | 32 | |
JamesCummins | 20:4a39a1a2be51 | 33 | void Pause::display_pause_options(N5110 &lcd){ |
JamesCummins | 20:4a39a1a2be51 | 34 | lcd.printString("GAME PAUSED:", 6, 0); |
JamesCummins | 20:4a39a1a2be51 | 35 | lcd.printString("Resume", 24, 1); |
JamesCummins | 20:4a39a1a2be51 | 36 | lcd.printString("Restart", 21, 2); |
JamesCummins | 20:4a39a1a2be51 | 37 | lcd.printString("Quit", 30, 3); |
JamesCummins | 20:4a39a1a2be51 | 38 | lcd.printString("Help", 30, 4); |
JamesCummins | 20:4a39a1a2be51 | 39 | lcd.printString("(Select = A)", 6, 5); |
JamesCummins | 20:4a39a1a2be51 | 40 | } |
JamesCummins | 20:4a39a1a2be51 | 41 | |
JamesCummins | 20:4a39a1a2be51 | 42 | PauseOption Pause::pause_selection(Gamepad &gamepad, N5110 &lcd){ |
JamesCummins | 20:4a39a1a2be51 | 43 | PauseSelection fsm[4] = { |
JamesCummins | 20:4a39a1a2be51 | 44 | {1,{HELP,RESTART,RESUME}}, |
JamesCummins | 20:4a39a1a2be51 | 45 | {2,{RESUME,QUIT,RESTART}}, |
JamesCummins | 20:4a39a1a2be51 | 46 | {3,{RESTART,HELP,QUIT}}, |
JamesCummins | 20:4a39a1a2be51 | 47 | {4,{QUIT,RESUME,HELP}} |
JamesCummins | 20:4a39a1a2be51 | 48 | }; |
JamesCummins | 20:4a39a1a2be51 | 49 | if(gamepad.get_direction() == N){ _next_state = 0;} |
JamesCummins | 20:4a39a1a2be51 | 50 | else if(gamepad.get_direction() == S){ _next_state = 1;} |
JamesCummins | 20:4a39a1a2be51 | 51 | else{ _next_state = 2;} |
JamesCummins | 20:4a39a1a2be51 | 52 | _state = fsm[_state].next_state[_next_state]; |
JamesCummins | 20:4a39a1a2be51 | 53 | lcd.printString(">", 6, fsm[_state].output); |
JamesCummins | 20:4a39a1a2be51 | 54 | lcd.printString("<", 72, fsm[_state].output); |
JamesCummins | 20:4a39a1a2be51 | 55 | return _state; |
JamesCummins | 20:4a39a1a2be51 | 56 | } |
JamesCummins | 20:4a39a1a2be51 | 57 | |
JamesCummins | 20:4a39a1a2be51 | 58 | void Pause::brickbreaker_help(Gamepad &gamepad, N5110 &lcd){ |
JamesCummins | 20:4a39a1a2be51 | 59 | while(!(gamepad.check_event(gamepad.A_PRESSED))){ |
JamesCummins | 20:4a39a1a2be51 | 60 | lcd.clear(); |
JamesCummins | 20:4a39a1a2be51 | 61 | lcd.printString("Help", 30, 0); |
JamesCummins | 20:4a39a1a2be51 | 62 | lcd.printString("Tilt gamepad", 0, 1); |
JamesCummins | 20:4a39a1a2be51 | 63 | lcd.printString("to move ball", 0, 2); |
JamesCummins | 20:4a39a1a2be51 | 64 | lcd.printString("Game length=", 0, 3); |
JamesCummins | 20:4a39a1a2be51 | 65 | lcd.printString("45 secs", 0, 4); |
JamesCummins | 20:4a39a1a2be51 | 66 | lcd.printString("A = go back", 0, 5); |
JamesCummins | 20:4a39a1a2be51 | 67 | lcd.refresh(); |
JamesCummins | 20:4a39a1a2be51 | 68 | wait(0.5); |
JamesCummins | 20:4a39a1a2be51 | 69 | } |
JamesCummins | 20:4a39a1a2be51 | 70 | } |
JamesCummins | 20:4a39a1a2be51 | 71 | |
JamesCummins | 20:4a39a1a2be51 | 72 | void Pause::classic_help(Gamepad &gamepad, N5110 &lcd){ |
JamesCummins | 20:4a39a1a2be51 | 73 | while(!(gamepad.check_event(gamepad.A_PRESSED))){ |
JamesCummins | 20:4a39a1a2be51 | 74 | lcd.clear(); |
JamesCummins | 20:4a39a1a2be51 | 75 | lcd.printString("Help", 30, 0); |
JamesCummins | 20:4a39a1a2be51 | 76 | lcd.printString("Don't leave", 0, 1); |
JamesCummins | 20:4a39a1a2be51 | 77 | lcd.printString("the path! Tilt", 0, 2); |
JamesCummins | 20:4a39a1a2be51 | 78 | lcd.printString("pad to roll", 0, 3); |
JamesCummins | 20:4a39a1a2be51 | 79 | lcd.printString("the ball", 0, 4); |
JamesCummins | 20:4a39a1a2be51 | 80 | lcd.printString("A = go back", 0, 5); |
JamesCummins | 20:4a39a1a2be51 | 81 | lcd.refresh(); |
JamesCummins | 20:4a39a1a2be51 | 82 | wait(0.5); |
JamesCummins | 20:4a39a1a2be51 | 83 | } |
JamesCummins | 20:4a39a1a2be51 | 84 | } |