Henry Triff / Mbed 2 deprecated ELEC2645_Project_el18ht

Dependencies:   mbed

Committer:
HenryWTriff
Date:
Fri May 22 16:27:56 2020 +0000
Revision:
26:f1d3b7e31091
Parent:
25:31761087a83f
Added Spectators and helicopters to the maps!

Who changed what in which revision?

UserRevisionLine numberNew contents of line
HenryWTriff 25:31761087a83f 1 //#define DEBUG_GHOST_READ
HenryWTriff 25:31761087a83f 2 //#define DEBUG_GHOST_WRITE
HenryWTriff 25:31761087a83f 3
HenryWTriff 6:5f76dd718dc3 4 #ifndef GHOST_H
HenryWTriff 6:5f76dd718dc3 5 #define GHOST_H
HenryWTriff 6:5f76dd718dc3 6
HenryWTriff 6:5f76dd718dc3 7 #include "mbed.h"
HenryWTriff 6:5f76dd718dc3 8 #include "Gamepad.h"
HenryWTriff 6:5f76dd718dc3 9 #include "N5110.h"
HenryWTriff 6:5f76dd718dc3 10 #include "FXOS8700CQ.h"
HenryWTriff 10:29126a41b1da 11 #include "SDFileSystem.h"
HenryWTriff 6:5f76dd718dc3 12 #include "Graphics.h"
HenryWTriff 6:5f76dd718dc3 13 #include "Mechanics.h"
HenryWTriff 6:5f76dd718dc3 14 #include "Menu.h"
HenryWTriff 6:5f76dd718dc3 15 #include "LEDs.h"
HenryWTriff 6:5f76dd718dc3 16 #include "Ghost.h"
HenryWTriff 6:5f76dd718dc3 17 #include <string>
HenryWTriff 6:5f76dd718dc3 18
HenryWTriff 6:5f76dd718dc3 19 #ifndef STRUCTS
HenryWTriff 6:5f76dd718dc3 20 #define STRUCTS
HenryWTriff 6:5f76dd718dc3 21
HenryWTriff 6:5f76dd718dc3 22 //STRUCTS
HenryWTriff 6:5f76dd718dc3 23 struct Point_2D {
HenryWTriff 6:5f76dd718dc3 24 float x;
HenryWTriff 6:5f76dd718dc3 25 float y;
HenryWTriff 6:5f76dd718dc3 26 };
HenryWTriff 6:5f76dd718dc3 27 struct Line_2D {
HenryWTriff 6:5f76dd718dc3 28 Point_2D from;
HenryWTriff 6:5f76dd718dc3 29 Point_2D to;
HenryWTriff 6:5f76dd718dc3 30 };
HenryWTriff 6:5f76dd718dc3 31
HenryWTriff 6:5f76dd718dc3 32 struct Square_2D {
HenryWTriff 6:5f76dd718dc3 33 Point_2D TL;
HenryWTriff 6:5f76dd718dc3 34 Point_2D BR;
HenryWTriff 6:5f76dd718dc3 35 };
HenryWTriff 6:5f76dd718dc3 36 struct Triangle_2D {
HenryWTriff 6:5f76dd718dc3 37 Point_2D TL;
HenryWTriff 6:5f76dd718dc3 38 Point_2D BR;
HenryWTriff 6:5f76dd718dc3 39 int Type;
HenryWTriff 6:5f76dd718dc3 40 };
HenryWTriff 6:5f76dd718dc3 41
HenryWTriff 26:f1d3b7e31091 42 struct Sprite_2D {
HenryWTriff 26:f1d3b7e31091 43 float x;
HenryWTriff 26:f1d3b7e31091 44 float y;
HenryWTriff 26:f1d3b7e31091 45 int type;
HenryWTriff 26:f1d3b7e31091 46 };
HenryWTriff 26:f1d3b7e31091 47
HenryWTriff 6:5f76dd718dc3 48 struct Map_Data {
HenryWTriff 6:5f76dd718dc3 49 int number_of_track_lines;
HenryWTriff 6:5f76dd718dc3 50 int number_of_dotted_lines;
HenryWTriff 26:f1d3b7e31091 51 int number_of_sprites;
HenryWTriff 6:5f76dd718dc3 52 int number_of_walls;
HenryWTriff 6:5f76dd718dc3 53 int number_of_off_track_squares;
HenryWTriff 6:5f76dd718dc3 54 int number_of_off_track_triangles;
HenryWTriff 6:5f76dd718dc3 55 int number_of_out_of_bounds_squares;
HenryWTriff 6:5f76dd718dc3 56 int number_of_out_of_bounds_triangles;
HenryWTriff 6:5f76dd718dc3 57 int number_of_gates;
HenryWTriff 6:5f76dd718dc3 58 int number_of_boost_plates;
HenryWTriff 6:5f76dd718dc3 59 };
HenryWTriff 6:5f76dd718dc3 60
HenryWTriff 6:5f76dd718dc3 61 struct Time {
HenryWTriff 6:5f76dd718dc3 62 int mins;
HenryWTriff 6:5f76dd718dc3 63 int secs;
HenryWTriff 6:5f76dd718dc3 64 int milis;
HenryWTriff 6:5f76dd718dc3 65 };
HenryWTriff 6:5f76dd718dc3 66
HenryWTriff 6:5f76dd718dc3 67 struct Gyro_Data {
HenryWTriff 6:5f76dd718dc3 68 float ax;
HenryWTriff 6:5f76dd718dc3 69 float ay;
HenryWTriff 6:5f76dd718dc3 70 float az;
HenryWTriff 6:5f76dd718dc3 71 float mx;
HenryWTriff 6:5f76dd718dc3 72 float my;
HenryWTriff 6:5f76dd718dc3 73 float mz;
HenryWTriff 6:5f76dd718dc3 74 };
HenryWTriff 6:5f76dd718dc3 75
HenryWTriff 6:5f76dd718dc3 76 #endif
HenryWTriff 6:5f76dd718dc3 77
HenryWTriff 6:5f76dd718dc3 78 static Point_2D Ghost_Data[6000];
HenryWTriff 6:5f76dd718dc3 79 static int Ghost_Held_Data_Time = 0;
HenryWTriff 6:5f76dd718dc3 80 static Point_2D Ghost_Held_Data[6000];
HenryWTriff 6:5f76dd718dc3 81
HenryWTriff 10:29126a41b1da 82 #ifndef ENUMS
HenryWTriff 10:29126a41b1da 83 #define ENUMS
HenryWTriff 26:f1d3b7e31091 84 enum track {Small, Medium, Large}; //Track Names
HenryWTriff 26:f1d3b7e31091 85 enum cars {Basic, Offroad, Drifter, Sportscar, Racecar, Stupid}; //Car Names (Stupid is now the alien space ship)
HenryWTriff 26:f1d3b7e31091 86 enum sprites {Flag, Helicopter, People_Standing_1, People_Standing_2, People_Cheering};
HenryWTriff 10:29126a41b1da 87 #endif
HenryWTriff 10:29126a41b1da 88
HenryWTriff 22:9065c457a45d 89 /** Ghost Class
HenryWTriff 22:9065c457a45d 90 * @brief Records the current position of the player so that it can be played back later during ghost mode.
HenryWTriff 22:9065c457a45d 91 * @brief The best race (so far) is copied to the SD card when the race is over.
HenryWTriff 22:9065c457a45d 92 * @brief Before each race, the previos best ghost data is read from the SD card to internal memory to allow the game to run faster.
HenryWTriff 22:9065c457a45d 93 * @author Henry W Triff
HenryWTriff 22:9065c457a45d 94 * @date Mar, 2020
HenryWTriff 22:9065c457a45d 95 */
HenryWTriff 22:9065c457a45d 96
HenryWTriff 6:5f76dd718dc3 97 class Ghost
HenryWTriff 6:5f76dd718dc3 98 {
HenryWTriff 6:5f76dd718dc3 99 public:
HenryWTriff 6:5f76dd718dc3 100
HenryWTriff 16:17f91f51358f 101 /** Constructor */
HenryWTriff 16:17f91f51358f 102 Ghost();
HenryWTriff 16:17f91f51358f 103
HenryWTriff 16:17f91f51358f 104 /** Destructor */
HenryWTriff 16:17f91f51358f 105 ~Ghost();
HenryWTriff 16:17f91f51358f 106
HenryWTriff 16:17f91f51358f 107 /** Formats the SD card with the correct text files and fills them with temporary data.
HenryWTriff 16:17f91f51358f 108 * @param SD The object for the SDFileSystem class (object).
HenryWTriff 16:17f91f51358f 109 */
HenryWTriff 25:31761087a83f 110 void SD_init(SDFileSystem &SD, N5110 &LCD);
HenryWTriff 16:17f91f51358f 111
HenryWTriff 16:17f91f51358f 112 /** Copies the ghost data int the txt file associated with the track-car combination to RAM
HenryWTriff 16:17f91f51358f 113 * @param track The user selected track (int)
HenryWTriff 16:17f91f51358f 114 * @param car The user selected car (int)
HenryWTriff 16:17f91f51358f 115 * @param SD The object for the SDFileSystem class (object)
HenryWTriff 16:17f91f51358f 116 */
HenryWTriff 10:29126a41b1da 117 void SD_Read(int track, int car, SDFileSystem &SD);
HenryWTriff 10:29126a41b1da 118
HenryWTriff 16:17f91f51358f 119 /** Adds the current position of the car to a Ghost_Data array
HenryWTriff 16:17f91f51358f 120 * @param position The current coordinate position of the players car (Point_2D)
HenryWTriff 16:17f91f51358f 121 * @param race_time The current number of frames elapsed during race
HenryWTriff 16:17f91f51358f 122 */
HenryWTriff 16:17f91f51358f 123 void Record(Point_2D position, int race_time);
HenryWTriff 16:17f91f51358f 124
HenryWTriff 16:17f91f51358f 125 /** If the race that was just run was faster than previos races, this copies the data in the Ghost_Data array to the SD card
HenryWTriff 16:17f91f51358f 126 * @param race_time The number of frames elapsed during race
HenryWTriff 16:17f91f51358f 127 * @param track The user selected track (int)
HenryWTriff 16:17f91f51358f 128 * @param car The user selected car (int)
HenryWTriff 16:17f91f51358f 129 * @param SD The object for the SDFileSystem class (object)
HenryWTriff 16:17f91f51358f 130 */
HenryWTriff 16:17f91f51358f 131 void Copy(int race_time, int track, int car, SDFileSystem &SD);
HenryWTriff 16:17f91f51358f 132
HenryWTriff 16:17f91f51358f 133 /** Returns the position of the ghost for a given race_time
HenryWTriff 16:17f91f51358f 134 * @param ghost_available Is the game in ghost mode (bool)
HenryWTriff 16:17f91f51358f 135 * @param race_time The current number of frames elapsed during race (int)
HenryWTriff 16:17f91f51358f 136 * @return Current position of the ghost
HenryWTriff 16:17f91f51358f 137 */
HenryWTriff 16:17f91f51358f 138 Point_2D Play(bool ghost_available, int race_time);
HenryWTriff 16:17f91f51358f 139
HenryWTriff 16:17f91f51358f 140 private:
HenryWTriff 16:17f91f51358f 141
HenryWTriff 16:17f91f51358f 142 void SD_Write(int track, int car, int race_time, SDFileSystem &SD);
HenryWTriff 10:29126a41b1da 143 void SD_Write_Data(string name, int race_time, SDFileSystem &SD);
HenryWTriff 10:29126a41b1da 144 void SD_Write_Time(int track, int car, int race_time, SDFileSystem &SD);
HenryWTriff 10:29126a41b1da 145 void SD_Read_Data(string name, int race_time, SDFileSystem &SD);
HenryWTriff 10:29126a41b1da 146 void SD_Read_Time(int track, int car, SDFileSystem &SD);
HenryWTriff 10:29126a41b1da 147 int SD_Get_Time(int track, int car, SDFileSystem &SD);
HenryWTriff 6:5f76dd718dc3 148
HenryWTriff 6:5f76dd718dc3 149 };
HenryWTriff 6:5f76dd718dc3 150
HenryWTriff 6:5f76dd718dc3 151 #endif