James Cummins / Mbed 2 deprecated el17jnc

Dependencies:   mbed

Committer:
JamesCummins
Date:
Mon May 06 00:05:52 2019 +0000
Revision:
36:9f7463a65fe0
Parent:
29:42651f87522b
Child:
38:a85bc227b907
Finished, except for sounds. Doxygen still to do

Who changed what in which revision?

UserRevisionLine numberNew 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 29:42651f87522b 13 PauseOption Pause::pause_menu(Gamepad &gamepad, N5110 &lcd, int fps){
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 29:42651f87522b 22 return choice;
JamesCummins 29:42651f87522b 23 }
JamesCummins 29:42651f87522b 24
JamesCummins 29:42651f87522b 25
JamesCummins 29:42651f87522b 26
JamesCummins 29:42651f87522b 27 int Pause::brickbreaker_action(PauseOption choice, Gamepad &gamepad, N5110 &lcd, int frame, int fps){
JamesCummins 20:4a39a1a2be51 28 int jump_to_frame = frame;
JamesCummins 20:4a39a1a2be51 29 if(choice == RESUME){ jump_to_frame = frame; } //Just keep code iterating
JamesCummins 20:4a39a1a2be51 30 if(choice == RESTART){ jump_to_frame = 0; } //return to frame 1 if restarted
JamesCummins 29:42651f87522b 31 if(choice == QUIT){ jump_to_frame = 45*fps; } //jump to final frame
JamesCummins 29:42651f87522b 32 if(choice == HELP){ brickbreaker_help(gamepad, lcd); }
JamesCummins 29:42651f87522b 33 return jump_to_frame; //display relevant help screen
JamesCummins 20:4a39a1a2be51 34 }
JamesCummins 20:4a39a1a2be51 35
JamesCummins 29:42651f87522b 36
JamesCummins 20:4a39a1a2be51 37 void Pause::display_pause_options(N5110 &lcd){
JamesCummins 20:4a39a1a2be51 38 lcd.printString("GAME PAUSED:", 6, 0);
JamesCummins 20:4a39a1a2be51 39 lcd.printString("Resume", 24, 1);
JamesCummins 20:4a39a1a2be51 40 lcd.printString("Restart", 21, 2);
JamesCummins 20:4a39a1a2be51 41 lcd.printString("Quit", 30, 3);
JamesCummins 20:4a39a1a2be51 42 lcd.printString("Help", 30, 4);
JamesCummins 20:4a39a1a2be51 43 lcd.printString("(Select = A)", 6, 5);
JamesCummins 20:4a39a1a2be51 44 }
JamesCummins 20:4a39a1a2be51 45
JamesCummins 20:4a39a1a2be51 46 PauseOption Pause::pause_selection(Gamepad &gamepad, N5110 &lcd){
JamesCummins 20:4a39a1a2be51 47 PauseSelection fsm[4] = {
JamesCummins 20:4a39a1a2be51 48 {1,{HELP,RESTART,RESUME}},
JamesCummins 20:4a39a1a2be51 49 {2,{RESUME,QUIT,RESTART}},
JamesCummins 20:4a39a1a2be51 50 {3,{RESTART,HELP,QUIT}},
JamesCummins 20:4a39a1a2be51 51 {4,{QUIT,RESUME,HELP}}
JamesCummins 20:4a39a1a2be51 52 };
JamesCummins 20:4a39a1a2be51 53 if(gamepad.get_direction() == N){ _next_state = 0;}
JamesCummins 20:4a39a1a2be51 54 else if(gamepad.get_direction() == S){ _next_state = 1;}
JamesCummins 20:4a39a1a2be51 55 else{ _next_state = 2;}
JamesCummins 20:4a39a1a2be51 56 _state = fsm[_state].next_state[_next_state];
JamesCummins 20:4a39a1a2be51 57 lcd.printString(">", 6, fsm[_state].output);
JamesCummins 20:4a39a1a2be51 58 lcd.printString("<", 72, fsm[_state].output);
JamesCummins 20:4a39a1a2be51 59 return _state;
JamesCummins 20:4a39a1a2be51 60 }
JamesCummins 20:4a39a1a2be51 61
JamesCummins 29:42651f87522b 62 void Pause::classic_help(Gamepad &gamepad, N5110 &lcd){
JamesCummins 29:42651f87522b 63 while(!(gamepad.check_event(gamepad.A_PRESSED))){
JamesCummins 29:42651f87522b 64 lcd.clear();
JamesCummins 29:42651f87522b 65 lcd.printString("Help", 30, 0);
JamesCummins 29:42651f87522b 66 lcd.printString("Don't leave", 0, 1);
JamesCummins 29:42651f87522b 67 lcd.printString("the path! Tilt", 0, 2);
JamesCummins 29:42651f87522b 68 lcd.printString("pad to roll", 0, 3);
JamesCummins 29:42651f87522b 69 lcd.printString("the ball", 0, 4);
JamesCummins 36:9f7463a65fe0 70 lcd.printString("(Press A)", 0, 5);
JamesCummins 29:42651f87522b 71 lcd.refresh();
JamesCummins 29:42651f87522b 72 wait(0.5);
JamesCummins 29:42651f87522b 73 }
JamesCummins 29:42651f87522b 74 }
JamesCummins 29:42651f87522b 75
JamesCummins 20:4a39a1a2be51 76 void Pause::brickbreaker_help(Gamepad &gamepad, N5110 &lcd){
JamesCummins 20:4a39a1a2be51 77 while(!(gamepad.check_event(gamepad.A_PRESSED))){
JamesCummins 20:4a39a1a2be51 78 lcd.clear();
JamesCummins 20:4a39a1a2be51 79 lcd.printString("Help", 30, 0);
JamesCummins 20:4a39a1a2be51 80 lcd.printString("Tilt gamepad", 0, 1);
JamesCummins 20:4a39a1a2be51 81 lcd.printString("to move ball", 0, 2);
JamesCummins 20:4a39a1a2be51 82 lcd.printString("Game length=", 0, 3);
JamesCummins 20:4a39a1a2be51 83 lcd.printString("45 secs", 0, 4);
JamesCummins 36:9f7463a65fe0 84 lcd.printString("(Press A)", 0, 5);
JamesCummins 20:4a39a1a2be51 85 lcd.refresh();
JamesCummins 20:4a39a1a2be51 86 wait(0.5);
JamesCummins 20:4a39a1a2be51 87 }
JamesCummins 20:4a39a1a2be51 88 }