AirsoftTimer software based on mbed
Dependencies: mbed TextLCD keypad
Diff: games/GameSelector.cpp
- Revision:
- 10:afc22465169e
- Child:
- 17:19dbb1dbb640
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/games/GameSelector.cpp Sun Dec 14 11:50:19 2014 +0000 @@ -0,0 +1,79 @@ +#include "GameSelector.h" + +GameSelector::GameSelector(Board* board){ + this->board = board; + titles[0] = "Hold it"; + titles[1] = "Capture the bomb"; + titles[2] = "Hurry up"; + titles[3] = "Search & destroy"; + titles[4] = "Simple timer"; + titles[5] = "DummyGame 6"; + titles[6] = "DummyGame 7"; + total_selections = 7; + current_selection = 0; + start_position = 0; +} + +void GameSelector::run(){ + print_list(); + //demo + wait(0.5); + while(true){ + for(int i = 0; i < 10; i++){ + go_down(); + wait(0.5); + } + for(int i = 0; i < 10; i++){ + go_up(); + wait(0.5); + } + + } // wait until selection is done +} + +void GameSelector::print_list(){ + board->lcd->cls(); + for(int i = 0; i < 4; i++){ + board->lcd->locate(2,i); + board->lcd->printf(titles[i+start_position]); + } + print_selection_arrow(); + print_up_down_arrows(); +} + +void GameSelector::print_up_down_arrows(){ + if(start_position != 0){ + board->lcd->locate(19,0); + board->lcd->putc('\x02'); + } + if(start_position < total_selections - 4){ + board->lcd->locate(19,3); + board->lcd->putc('\x03'); + } +} + +void GameSelector::print_selection_arrow(){ + int line = current_selection - start_position; + board->lcd->locate(0,line); + board->lcd->putc('\x00'); +} + +void GameSelector::go_down(){ + if(current_selection < (total_selections - 1)){ + current_selection++; + } + if(current_selection - start_position >= 4){ + start_position = current_selection - 3; + } + print_list(); +} + +void GameSelector::go_up(){ + if(current_selection > 0){ + current_selection--; + } + if(current_selection - start_position < 0){ + start_position = current_selection; + } + print_list(); +}