Henry Triff / Mbed 2 deprecated ELEC2645_Project_el18ht

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers Menu.h Source File

Menu.h

00001 #ifndef MENU_H
00002 #define MENU_H
00003 
00004 #include "mbed.h"
00005 #include "Gamepad.h"
00006 #include "N5110.h"
00007 #include "Graphics.h"
00008 #include "Mechanics.h"
00009 #include "Ghost.h"
00010 #include "Menu.h"
00011 #include "LEDs.h"
00012 #include <string>
00013 
00014 #ifndef STRUCTS
00015 #define STRUCTS
00016 
00017 //STRUCTS
00018 struct Point_2D {
00019     float x;
00020     float y;
00021 };
00022 struct Line_2D {
00023     Point_2D from;
00024     Point_2D to;
00025 };
00026 
00027 struct Square_2D {
00028     Point_2D TL;
00029     Point_2D BR;
00030 };
00031 struct Triangle_2D {
00032     Point_2D TL;
00033     Point_2D BR;
00034     int Type;
00035 };
00036 
00037 struct Sprite_2D {
00038     float x;
00039     float y;
00040     int type;
00041 };
00042 
00043 struct Map_Data {
00044     int number_of_track_lines;
00045     int number_of_dotted_lines;
00046     int number_of_sprites;
00047     int number_of_walls;
00048     int number_of_off_track_squares;
00049     int number_of_off_track_triangles;
00050     int number_of_out_of_bounds_squares;
00051     int number_of_out_of_bounds_triangles;
00052     int number_of_gates;
00053     int number_of_boost_plates;
00054 };
00055 
00056 struct Time {
00057     int mins;
00058     int secs;
00059     int milis;
00060 };
00061 
00062 struct Gyro_Data {
00063     float ax;
00064     float ay;
00065     float az;
00066     float mx;
00067     float my;
00068     float mz;
00069 };
00070 
00071 #endif
00072 
00073 #ifndef ENUMS
00074 #define ENUMS
00075 enum track {Small, Medium, Large}; //Track Names
00076 enum cars {Basic, Offroad, Drifter, Sportscar, Racecar, Stupid}; //Car Names (Stupid is now the alien space ship)
00077 enum sprites {Flag, Helicopter, People_Standing_1, People_Standing_2, People_Cheering};
00078 #endif
00079 
00080 static int Setup_Ghost = 0;
00081 static int Setup_Map = Small;
00082 static int Setup_Laps = 3;
00083 static int Setup_Car = Basic;
00084 static bool Settings_LEDs = true;
00085 static bool Settings_Gyro = false;
00086 
00087 enum Setup_States {
00088     GO_Main,
00089     Mode,
00090     Map,
00091     Laps,
00092     Car,
00093     Ghost_Warning,
00094     GO_Race,
00095 };
00096 
00097 struct Menu_Setup {
00098     int next_state[4];
00099 };
00100 
00101 /** Menu Class
00102 * @brief Creates all game graphics.
00103 * @author Henry W Triff
00104 * @date Mar, 2020
00105 */
00106 
00107 class Menu
00108 {
00109 public:
00110     
00111     /** Constructor */
00112     Menu();
00113     
00114     /** Destructor */
00115     ~Menu();
00116     
00117     /** Runs the main menu screen and the settings, credits and instructions menus. It also passes off to the game setup
00118     * @param LCD This is the N5110 class object (object)
00119     * @param Device This is the Gamepad class object (object)
00120     * @return True if the SD card needs to be formatted (bool)
00121     */
00122     bool Main_Menu(N5110 &LCD, Gamepad &Device);
00123     
00124     /** Runs the finite state machine for the game setup
00125     * @param LCD This is the N5110 class object (object)
00126     * @param Device This is the Gamepad class object (object)
00127     * @return True if the game should be started and false if returning to the main menu is required (bool)
00128     */
00129     bool Game_Setup(N5110 &LCD, Gamepad &Device);
00130     
00131     /** Returns the decided game mode
00132     * @return The selected game mode (int)
00133     */
00134     int Get_Mode();
00135     
00136     /** Returns the decided game map
00137     * @return The selected game map (int)
00138     */
00139     int Get_Map();
00140     
00141     /** Returns the number of laps decided
00142     * @return The selected number of laps (int)
00143     */
00144     int Get_Laps();
00145     
00146     /** Returns the decided car
00147     * @return The selected car (int)
00148     */
00149     int Get_Car();
00150     
00151     /** Returns the LED setting
00152     * @return The selected LED setting (bool)
00153     */
00154     bool Get_Setting_LED();
00155     
00156     /** Returns the gyro control setting
00157     * @return The selected gyro control setting (bool)
00158     */
00159     bool Get_Setting_Gyro();
00160     
00161 private:
00162     void Credits_Menu(N5110 &LCD, Gamepad &Device);
00163     bool Settings_Menu(N5110 &LCD, Gamepad &Device);
00164     bool Format_SD(N5110 &LCD, Gamepad &Device);
00165     void Instructions_Menu(N5110 &LCD, Gamepad &Device);
00166     int Setup_State_Mode(N5110 &LCD, Gamepad &Device);
00167     int Setup_State_Map(N5110 &LCD, Gamepad &Device);
00168     int Setup_State_Laps(N5110 &LCD, Gamepad &Device);
00169     int Setup_State_Car(N5110 &LCD, Gamepad &Device);
00170     int Setup_State_Ghost_Warning(N5110 &LCD, Gamepad &Device);  
00171 };
00172 
00173 #endif