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.
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