Ben Evans University Second Year Project. Game Called Defender.
Embed:
(wiki syntax)
Show/hide line numbers
Menu.cpp
00001 #include "Menu.h" 00002 00003 const char menu_part_names[4][12] = { 00004 {"Play"}, 00005 {"Settings"}, 00006 {"Saved Games"}, 00007 {"High Score"}, 00008 }; 00009 00010 // Defining scroll_order states for scroll_order FSM 00011 scroll_order menu_fsm[4] = { 00012 {high_score, play, settings}, 00013 {play, settings, saved_games}, 00014 {settings, saved_games, high_score}, 00015 {saved_games, high_score, play}, 00016 }; 00017 00018 Menu::Menu() { 00019 00020 } 00021 00022 Menu::~Menu() { 00023 00024 } 00025 00026 void Menu::init() { 00027 current_menu_part_ = main_menu; 00028 displayed_menu_part_ = play; 00029 // Attach ticker to ISR 00030 ticker_title.attach(callback(this, &Menu::title_screen_isr), 0.9 ); 00031 title_screen_flag_ = true; 00032 } 00033 00034 void Menu::title_screen_isr() { 00035 // Set ISR flag 00036 title_screen_flag_ = !title_screen_flag_; 00037 } 00038 00039 void Menu::draw_part(N5110 &lcd) { 00040 // Prints the menu part that should be displayed in the centre 00041 if (displayed_menu_part_ == play) { 00042 lcd.printString(menu_part_names[displayed_menu_part_],30 ,4); 00043 }else if (displayed_menu_part_ == settings) { 00044 lcd.printString(menu_part_names[displayed_menu_part_],18 ,4); 00045 }else if (displayed_menu_part_ == saved_games) { 00046 lcd.printString(menu_part_names[displayed_menu_part_],9 ,4); 00047 } 00048 else if (displayed_menu_part_ == high_score) { 00049 lcd.printString(menu_part_names[displayed_menu_part_],12 ,4); 00050 } 00051 00052 lcd.drawSprite(39, 26, 3, 5, (int *)arrow_up); 00053 lcd.drawSprite(39, 42, 3, 5, (int *)arrow_down); 00054 00055 // Flashes title screen 00056 if (title_screen_flag_) { 00057 title_screen(lcd); 00058 }else{ 00059 lcd.printString("DEFENDER",18,1); 00060 } 00061 00062 #ifdef MENU_DEBUG 00063 printf("displayed_menu_part_ = %d\n",displayed_menu_part_); 00064 printf("current_menu_part_ = %d\n", current_menu_part_); 00065 #endif 00066 } 00067 00068 void Menu::menu_scroll(Direction d_) { 00069 // printf("displayed_menu_part_ %d\n",displayed_menu_part_); 00070 // printf("d = %d\n",d_); 00071 00072 // Changes displayed menu part depending on joystick input 00073 if (d_ == N || d_ == NE || d_ == NW ) { 00074 displayed_menu_part_ = menu_fsm[displayed_menu_part_].part_next; 00075 } else if (d_ == S || d_ == SW || d_ == SE) { 00076 displayed_menu_part_ = menu_fsm[displayed_menu_part_].part_previous; 00077 } 00078 wait(0.15); 00079 } 00080 00081 void Menu::select_part(bool pressed) { 00082 if (pressed) { 00083 current_menu_part_ = displayed_menu_part_; 00084 wait(0.3); 00085 } else { 00086 current_menu_part_ = main_menu; 00087 } 00088 } 00089 00090 MenuParts Menu::get_current_menu_part() { 00091 return current_menu_part_; 00092 } 00093 00094 void Menu::title_screen(N5110 &lcd) { 00095 lcd.drawSprite(5, 8, 10, 8, (int *)title_screen_d); //D 00096 lcd.drawSprite(15, 8, 10, 7, (int *)title_screen_e); // E 00097 lcd.drawSprite(24, 8, 10, 7, (int *)title_screen_f); // F 00098 lcd.drawSprite(33, 8, 10, 7, (int *)title_screen_e); // E 00099 lcd.drawSprite(42, 8, 10, 7, (int *)title_screen_n); // N 00100 lcd.drawSprite(51, 8, 10, 8, (int *)title_screen_d); // D 00101 lcd.drawSprite(61, 8, 10, 7, (int *)title_screen_e); // E 00102 lcd.drawSprite(70, 8, 10, 8, (int *)title_screen_r); // R 00103 } 00104
Generated on Fri Aug 5 2022 06:55:07 by
1.7.2