Henry Triff / Mbed 2 deprecated ELEC2645_Project_el18ht

Dependencies:   mbed

Committer:
HenryWTriff
Date:
Wed Mar 25 15:36:01 2020 +0000
Revision:
10:29126a41b1da
Parent:
7:2ce6e90f6d47
Child:
11:7b12992156de
Better ghost mode using SD card

Who changed what in which revision?

UserRevisionLine numberNew contents of line
HenryWTriff 2:d08b6a1eaf2b 1 #ifndef GRAPHICS_H
HenryWTriff 2:d08b6a1eaf2b 2 #define GRAPHICS_H
HenryWTriff 2:d08b6a1eaf2b 3
HenryWTriff 2:d08b6a1eaf2b 4 #include "mbed.h"
HenryWTriff 2:d08b6a1eaf2b 5 #include "Gamepad.h"
HenryWTriff 2:d08b6a1eaf2b 6 #include "N5110.h"
HenryWTriff 6:5f76dd718dc3 7 #include "FXOS8700CQ.h"
HenryWTriff 2:d08b6a1eaf2b 8 #include "Graphics.h"
HenryWTriff 5:2d9f3c36bcb9 9 #include "Mechanics.h"
HenryWTriff 6:5f76dd718dc3 10 #include "Menu.h"
HenryWTriff 6:5f76dd718dc3 11 #include "LEDs.h"
HenryWTriff 6:5f76dd718dc3 12 #include "Ghost.h"
HenryWTriff 6:5f76dd718dc3 13 #include <string>
HenryWTriff 3:ceed6d026b8b 14
HenryWTriff 3:ceed6d026b8b 15 #ifndef STRUCTS
HenryWTriff 3:ceed6d026b8b 16 #define STRUCTS
HenryWTriff 2:d08b6a1eaf2b 17
HenryWTriff 2:d08b6a1eaf2b 18 //STRUCTS
HenryWTriff 2:d08b6a1eaf2b 19 struct Point_2D {
HenryWTriff 2:d08b6a1eaf2b 20 float x;
HenryWTriff 2:d08b6a1eaf2b 21 float y;
HenryWTriff 2:d08b6a1eaf2b 22 };
HenryWTriff 2:d08b6a1eaf2b 23 struct Line_2D {
HenryWTriff 2:d08b6a1eaf2b 24 Point_2D from;
HenryWTriff 2:d08b6a1eaf2b 25 Point_2D to;
HenryWTriff 2:d08b6a1eaf2b 26 };
HenryWTriff 2:d08b6a1eaf2b 27
HenryWTriff 5:2d9f3c36bcb9 28 struct Square_2D {
HenryWTriff 5:2d9f3c36bcb9 29 Point_2D TL;
HenryWTriff 5:2d9f3c36bcb9 30 Point_2D BR;
HenryWTriff 5:2d9f3c36bcb9 31 };
HenryWTriff 5:2d9f3c36bcb9 32 struct Triangle_2D {
HenryWTriff 5:2d9f3c36bcb9 33 Point_2D TL;
HenryWTriff 5:2d9f3c36bcb9 34 Point_2D BR;
HenryWTriff 5:2d9f3c36bcb9 35 int Type;
HenryWTriff 5:2d9f3c36bcb9 36 };
HenryWTriff 5:2d9f3c36bcb9 37
HenryWTriff 3:ceed6d026b8b 38 struct Map_Data {
HenryWTriff 3:ceed6d026b8b 39 int number_of_track_lines;
HenryWTriff 3:ceed6d026b8b 40 int number_of_dotted_lines;
HenryWTriff 3:ceed6d026b8b 41 int number_of_flags;
HenryWTriff 5:2d9f3c36bcb9 42 int number_of_walls;
HenryWTriff 5:2d9f3c36bcb9 43 int number_of_off_track_squares;
HenryWTriff 5:2d9f3c36bcb9 44 int number_of_off_track_triangles;
HenryWTriff 5:2d9f3c36bcb9 45 int number_of_out_of_bounds_squares;
HenryWTriff 5:2d9f3c36bcb9 46 int number_of_out_of_bounds_triangles;
HenryWTriff 5:2d9f3c36bcb9 47 int number_of_gates;
HenryWTriff 6:5f76dd718dc3 48 int number_of_boost_plates;
HenryWTriff 6:5f76dd718dc3 49 };
HenryWTriff 6:5f76dd718dc3 50
HenryWTriff 6:5f76dd718dc3 51 struct Time {
HenryWTriff 6:5f76dd718dc3 52 int mins;
HenryWTriff 6:5f76dd718dc3 53 int secs;
HenryWTriff 6:5f76dd718dc3 54 int milis;
HenryWTriff 6:5f76dd718dc3 55 };
HenryWTriff 6:5f76dd718dc3 56
HenryWTriff 6:5f76dd718dc3 57 struct Gyro_Data {
HenryWTriff 6:5f76dd718dc3 58 float ax;
HenryWTriff 6:5f76dd718dc3 59 float ay;
HenryWTriff 6:5f76dd718dc3 60 float az;
HenryWTriff 6:5f76dd718dc3 61 float mx;
HenryWTriff 6:5f76dd718dc3 62 float my;
HenryWTriff 6:5f76dd718dc3 63 float mz;
HenryWTriff 3:ceed6d026b8b 64 };
HenryWTriff 3:ceed6d026b8b 65
HenryWTriff 7:2ce6e90f6d47 66 struct Menu_Data {
HenryWTriff 7:2ce6e90f6d47 67 int Menu_return;
HenryWTriff 7:2ce6e90f6d47 68 bool Back;
HenryWTriff 7:2ce6e90f6d47 69 };
HenryWTriff 7:2ce6e90f6d47 70
HenryWTriff 3:ceed6d026b8b 71 #endif
HenryWTriff 3:ceed6d026b8b 72
HenryWTriff 2:d08b6a1eaf2b 73 class Graphics
HenryWTriff 2:d08b6a1eaf2b 74 {
HenryWTriff 5:2d9f3c36bcb9 75 public:
HenryWTriff 2:d08b6a1eaf2b 76 //SCREEN SETTINGS
HenryWTriff 2:d08b6a1eaf2b 77 void Change_Contrast(N5110 &LCD, Gamepad &Device);
HenryWTriff 2:d08b6a1eaf2b 78 //GRAPHICS
HenryWTriff 5:2d9f3c36bcb9 79 void Draw_Map(
HenryWTriff 5:2d9f3c36bcb9 80 Point_2D translation,
HenryWTriff 6:5f76dd718dc3 81 int angle,
HenryWTriff 6:5f76dd718dc3 82 float squish,
HenryWTriff 5:2d9f3c36bcb9 83 Line_2D *Track_Lines,
HenryWTriff 5:2d9f3c36bcb9 84 Line_2D *Track_Dotted_Lines,
HenryWTriff 5:2d9f3c36bcb9 85 Line_2D *Track_Walls,
HenryWTriff 5:2d9f3c36bcb9 86 Point_2D *Track_Flags,
HenryWTriff 6:5f76dd718dc3 87 Triangle_2D *Track_Boost_Plates,
HenryWTriff 5:2d9f3c36bcb9 88 Map_Data map_info,
HenryWTriff 7:2ce6e90f6d47 89 int car_type,
HenryWTriff 6:5f76dd718dc3 90 Point_2D ghost_position,
HenryWTriff 5:2d9f3c36bcb9 91 N5110 &LCD
HenryWTriff 5:2d9f3c36bcb9 92 );
HenryWTriff 5:2d9f3c36bcb9 93 void Draw_Laps(int laps, N5110 &LCD);
HenryWTriff 6:5f76dd718dc3 94 void Draw_Time(bool finished, Time time, N5110 &LCD);
HenryWTriff 6:5f76dd718dc3 95 void Start_Sequence(int state, N5110 &LCD);
HenryWTriff 6:5f76dd718dc3 96 void Finish(N5110 &LCD);
HenryWTriff 10:29126a41b1da 97 void Draw_Logo(N5110 &LCD);
HenryWTriff 10:29126a41b1da 98
HenryWTriff 5:2d9f3c36bcb9 99
HenryWTriff 5:2d9f3c36bcb9 100 private:
HenryWTriff 2:d08b6a1eaf2b 101 //TRANSFORM
HenryWTriff 2:d08b6a1eaf2b 102 Point_2D Rotate_Point(Point_2D point, float angle);
HenryWTriff 2:d08b6a1eaf2b 103 Point_2D Translate_Point(Point_2D point, int translate_x, int translate_y);
HenryWTriff 2:d08b6a1eaf2b 104 Point_2D Squish_Point(Point_2D point, float squish);
HenryWTriff 2:d08b6a1eaf2b 105 //MATH
HenryWTriff 2:d08b6a1eaf2b 106 int Round(float number);
HenryWTriff 2:d08b6a1eaf2b 107 float Gradient(Point_2D from, Point_2D to);
HenryWTriff 2:d08b6a1eaf2b 108 bool Gradient_Check_Infinate(Point_2D from, Point_2D to);
HenryWTriff 2:d08b6a1eaf2b 109 //DRAW
HenryWTriff 2:d08b6a1eaf2b 110 void Graphics_Draw_Line(Point_2D from, Point_2D to, bool solid, N5110 &LCD);
HenryWTriff 5:2d9f3c36bcb9 111 void Graphics_Draw_Wall(Point_2D from, Point_2D to, int height, N5110 &LCD);
HenryWTriff 6:5f76dd718dc3 112 void Graphics_Draw_Boost_Plate(Triangle_2D boost_plate, Point_2D translation, int angle, float squish, N5110 &LCD);
HenryWTriff 10:29126a41b1da 113 void Graphics_Draw_Sprite(Point_2D point, int x_size, int y_size, int *sprite, N5110 &LCD);
HenryWTriff 2:d08b6a1eaf2b 114 };
HenryWTriff 2:d08b6a1eaf2b 115
HenryWTriff 2:d08b6a1eaf2b 116 #endif