Henry Triff / Mbed 2 deprecated ELEC2645_Project_el18ht

Dependencies:   mbed

Committer:
HenryWTriff
Date:
Sat Feb 22 23:13:25 2020 +0000
Revision:
7:2ce6e90f6d47
Parent:
6:5f76dd718dc3
Child:
9:7b1093d3f03a
Menus Added (inc. Settings),  Different classes of cars

Who changed what in which revision?

UserRevisionLine numberNew contents of line
HenryWTriff 2:d08b6a1eaf2b 1 #include "Graphics.h"
HenryWTriff 2:d08b6a1eaf2b 2
HenryWTriff 3:ceed6d026b8b 3 //***********
HenryWTriff 3:ceed6d026b8b 4 // Sprites
HenryWTriff 3:ceed6d026b8b 5 //***********
HenryWTriff 3:ceed6d026b8b 6
HenryWTriff 3:ceed6d026b8b 7 int flag[8][8] = {
HenryWTriff 3:ceed6d026b8b 8 {4,1,1,1,1,1,1,1},
HenryWTriff 3:ceed6d026b8b 9 {4,1,1,0,1,0,1,1},
HenryWTriff 3:ceed6d026b8b 10 {4,1,0,1,0,1,1,1},
HenryWTriff 3:ceed6d026b8b 11 {4,1,1,0,1,0,1,1},
HenryWTriff 3:ceed6d026b8b 12 {4,1,1,1,1,1,1,1},
HenryWTriff 3:ceed6d026b8b 13 {4,4,4,4,4,4,1,1},
HenryWTriff 3:ceed6d026b8b 14 {4,4,4,4,4,4,1,1},
HenryWTriff 3:ceed6d026b8b 15 {4,4,4,4,4,4,1,1},
HenryWTriff 4:9f41fc1c2ad1 16 };
HenryWTriff 3:ceed6d026b8b 17
HenryWTriff 7:2ce6e90f6d47 18 //CARS
HenryWTriff 7:2ce6e90f6d47 19
HenryWTriff 7:2ce6e90f6d47 20 int basic_car[8][8] = {
HenryWTriff 7:2ce6e90f6d47 21 {4,4,4,4,4,4,4,4},
HenryWTriff 7:2ce6e90f6d47 22 {4,4,4,4,4,4,4,4},
HenryWTriff 7:2ce6e90f6d47 23 {4,4,1,1,1,1,4,4},
HenryWTriff 7:2ce6e90f6d47 24 {4,1,0,0,0,0,1,4},
HenryWTriff 7:2ce6e90f6d47 25 {4,1,0,0,0,0,1,4},
HenryWTriff 7:2ce6e90f6d47 26 {1,0,0,0,0,0,0,1},
HenryWTriff 7:2ce6e90f6d47 27 {1,1,1,1,1,1,1,1},
HenryWTriff 7:2ce6e90f6d47 28 {1,1,4,4,4,4,1,1},
HenryWTriff 7:2ce6e90f6d47 29
HenryWTriff 7:2ce6e90f6d47 30 };
HenryWTriff 7:2ce6e90f6d47 31
HenryWTriff 7:2ce6e90f6d47 32 int offroad_car[8][8] = {
HenryWTriff 7:2ce6e90f6d47 33 {4,4,4,4,4,4,4,4},
HenryWTriff 7:2ce6e90f6d47 34 {4,1,1,1,1,1,1,4},
HenryWTriff 7:2ce6e90f6d47 35 {4,1,0,1,1,0,1,4},
HenryWTriff 7:2ce6e90f6d47 36 {4,1,1,0,0,1,1,4},
HenryWTriff 7:2ce6e90f6d47 37 {4,1,1,0,0,1,1,4},
HenryWTriff 7:2ce6e90f6d47 38 {1,1,0,1,1,0,1,1},
HenryWTriff 7:2ce6e90f6d47 39 {1,1,1,1,1,1,1,1},
HenryWTriff 7:2ce6e90f6d47 40 {1,1,4,4,4,4,1,1}
HenryWTriff 7:2ce6e90f6d47 41 };
HenryWTriff 7:2ce6e90f6d47 42
HenryWTriff 7:2ce6e90f6d47 43 int drifter_car[8][8] = {
HenryWTriff 7:2ce6e90f6d47 44 {4,4,4,4,4,4,4,4},
HenryWTriff 7:2ce6e90f6d47 45 {1,1,4,4,4,4,1,1},
HenryWTriff 7:2ce6e90f6d47 46 {4,4,1,1,1,1,4,4},
HenryWTriff 7:2ce6e90f6d47 47 {4,1,0,0,0,0,1,4},
HenryWTriff 7:2ce6e90f6d47 48 {4,1,0,0,0,0,1,4},
HenryWTriff 7:2ce6e90f6d47 49 {1,4,1,1,1,1,4,1},
HenryWTriff 7:2ce6e90f6d47 50 {1,1,1,1,1,1,1,1},
HenryWTriff 7:2ce6e90f6d47 51 {1,4,4,4,4,4,4,1},
HenryWTriff 7:2ce6e90f6d47 52
HenryWTriff 7:2ce6e90f6d47 53 };
HenryWTriff 7:2ce6e90f6d47 54
HenryWTriff 7:2ce6e90f6d47 55 int sports_car[8][8] = {
HenryWTriff 7:2ce6e90f6d47 56 {4,4,4,4,4,4,4,4},
HenryWTriff 7:2ce6e90f6d47 57 {4,4,4,4,4,4,4,4},
HenryWTriff 7:2ce6e90f6d47 58 {4,4,4,4,4,4,4,4},
HenryWTriff 7:2ce6e90f6d47 59 {1,1,4,4,4,4,1,1},
HenryWTriff 7:2ce6e90f6d47 60 {4,4,1,1,1,1,4,4},
HenryWTriff 7:2ce6e90f6d47 61 {4,1,0,0,0,0,1,4},
HenryWTriff 7:2ce6e90f6d47 62 {1,1,1,1,1,1,1,1},
HenryWTriff 7:2ce6e90f6d47 63 {1,1,4,4,4,4,1,1},
HenryWTriff 7:2ce6e90f6d47 64
HenryWTriff 7:2ce6e90f6d47 65 };
HenryWTriff 7:2ce6e90f6d47 66
HenryWTriff 7:2ce6e90f6d47 67 int race_car[8][8] = {
HenryWTriff 4:9f41fc1c2ad1 68 {4,4,4,4,4,4,4,4},
HenryWTriff 4:9f41fc1c2ad1 69 {4,4,4,4,4,4,4,4},
HenryWTriff 4:9f41fc1c2ad1 70 {4,1,1,1,1,1,1,4},
HenryWTriff 4:9f41fc1c2ad1 71 {4,4,4,1,1,4,4,4},
HenryWTriff 4:9f41fc1c2ad1 72 {4,4,4,1,1,4,4,4},
HenryWTriff 4:9f41fc1c2ad1 73 {1,4,1,1,1,1,4,1},
HenryWTriff 4:9f41fc1c2ad1 74 {1,1,1,0,0,1,1,1},
HenryWTriff 4:9f41fc1c2ad1 75 {1,4,1,1,1,1,4,1},
HenryWTriff 4:9f41fc1c2ad1 76 };
HenryWTriff 3:ceed6d026b8b 77
HenryWTriff 7:2ce6e90f6d47 78 int stupid_car[8][8] = {
HenryWTriff 7:2ce6e90f6d47 79 {4,4,4,4,4,4,4,4},
HenryWTriff 7:2ce6e90f6d47 80 {4,4,4,1,1,4,4,4},
HenryWTriff 7:2ce6e90f6d47 81 {4,4,1,0,0,1,4,4},
HenryWTriff 7:2ce6e90f6d47 82 {4,1,1,0,0,1,1,4},
HenryWTriff 7:2ce6e90f6d47 83 {1,0,1,1,1,1,0,1},
HenryWTriff 7:2ce6e90f6d47 84 {1,0,0,0,0,0,0,1},
HenryWTriff 7:2ce6e90f6d47 85 {4,1,1,1,1,1,1,4},
HenryWTriff 7:2ce6e90f6d47 86 {4,4,4,4,4,4,4,4}
HenryWTriff 7:2ce6e90f6d47 87 };
HenryWTriff 7:2ce6e90f6d47 88
HenryWTriff 6:5f76dd718dc3 89 int ghost[8][8] = {
HenryWTriff 6:5f76dd718dc3 90 {0,0,4,4,4,4,0,0},
HenryWTriff 6:5f76dd718dc3 91 {0,1,0,4,4,0,1,0},
HenryWTriff 6:5f76dd718dc3 92 {4,0,1,0,0,1,0,4},
HenryWTriff 6:5f76dd718dc3 93 {4,4,0,1,1,0,4,4},
HenryWTriff 6:5f76dd718dc3 94 {4,4,0,1,1,0,4,4},
HenryWTriff 6:5f76dd718dc3 95 {4,0,1,0,0,1,0,4},
HenryWTriff 6:5f76dd718dc3 96 {0,1,0,4,4,0,1,0},
HenryWTriff 6:5f76dd718dc3 97 {0,0,4,4,4,4,0,0},
HenryWTriff 6:5f76dd718dc3 98 };
HenryWTriff 6:5f76dd718dc3 99
HenryWTriff 6:5f76dd718dc3 100 int count_down_3[17][17] = {
HenryWTriff 6:5f76dd718dc3 101 {4,4,4,4,0,0,0,0,0,0,0,4,4,4,4,4,4},
HenryWTriff 6:5f76dd718dc3 102 {4,4,4,0,1,1,1,1,1,1,1,0,4,4,4,4,4},
HenryWTriff 6:5f76dd718dc3 103 {4,4,0,1,1,1,1,1,1,1,1,1,0,4,4,4,4},
HenryWTriff 6:5f76dd718dc3 104 {4,0,1,1,1,1,1,1,1,1,1,1,1,0,4,4,4},
HenryWTriff 6:5f76dd718dc3 105 {4,0,1,1,1,1,0,0,0,0,1,1,1,1,0,4,4},
HenryWTriff 6:5f76dd718dc3 106 {4,0,1,1,1,0,4,4,4,4,0,1,1,1,0,4,4},
HenryWTriff 6:5f76dd718dc3 107 {4,0,1,1,1,0,4,4,0,0,1,1,1,1,0,4,4},
HenryWTriff 6:5f76dd718dc3 108 {4,4,0,0,0,4,4,0,1,1,1,1,1,0,4,4,4},
HenryWTriff 6:5f76dd718dc3 109 {4,4,4,4,4,4,4,0,1,1,1,1,0,4,4,4,4},
HenryWTriff 6:5f76dd718dc3 110 {4,4,0,0,0,4,4,0,1,1,1,1,1,0,4,4,4},
HenryWTriff 6:5f76dd718dc3 111 {4,0,1,1,1,0,4,4,0,0,1,1,1,1,0,4,4},
HenryWTriff 6:5f76dd718dc3 112 {4,0,1,1,1,0,4,4,4,4,0,1,1,1,0,4,4},
HenryWTriff 6:5f76dd718dc3 113 {4,0,1,1,1,1,0,0,0,0,1,1,1,1,0,4,4},
HenryWTriff 6:5f76dd718dc3 114 {4,4,0,1,1,1,1,1,1,1,1,1,1,0,4,4,4},
HenryWTriff 6:5f76dd718dc3 115 {4,4,4,0,1,1,1,1,1,1,1,1,0,4,4,4,4},
HenryWTriff 6:5f76dd718dc3 116 {4,4,4,4,0,1,1,1,1,1,1,0,4,4,4,4,4},
HenryWTriff 6:5f76dd718dc3 117 {4,4,4,4,4,0,0,0,0,0,0,4,4,4,4,4,4}
HenryWTriff 6:5f76dd718dc3 118 };
HenryWTriff 6:5f76dd718dc3 119
HenryWTriff 6:5f76dd718dc3 120 int count_down_2[17][17] = {
HenryWTriff 6:5f76dd718dc3 121 {4,4,4,4,4,0,0,0,0,0,0,4,4,4,4,4,4},
HenryWTriff 6:5f76dd718dc3 122 {4,4,4,4,0,1,1,1,1,1,1,0,4,4,4,4,4},
HenryWTriff 6:5f76dd718dc3 123 {4,4,4,0,1,1,1,1,1,1,1,1,0,4,4,4,4},
HenryWTriff 6:5f76dd718dc3 124 {4,4,0,1,1,1,1,1,1,1,1,1,1,0,4,4,4},
HenryWTriff 6:5f76dd718dc3 125 {4,0,1,1,1,1,0,0,0,0,1,1,1,1,0,4,4},
HenryWTriff 6:5f76dd718dc3 126 {4,0,1,1,1,0,4,4,4,0,1,1,1,1,0,4,4},
HenryWTriff 6:5f76dd718dc3 127 {4,0,1,1,1,0,4,4,0,1,1,1,1,1,0,4,4},
HenryWTriff 6:5f76dd718dc3 128 {4,4,0,0,0,4,4,0,1,1,1,1,1,0,4,4,4},
HenryWTriff 6:5f76dd718dc3 129 {4,4,4,4,4,4,0,1,1,1,1,1,0,4,4,4,4},
HenryWTriff 6:5f76dd718dc3 130 {4,4,4,4,4,0,1,1,1,1,1,0,4,4,4,4,4},
HenryWTriff 6:5f76dd718dc3 131 {4,4,4,4,0,1,1,1,1,1,0,4,4,4,4,4,4},
HenryWTriff 6:5f76dd718dc3 132 {4,4,4,0,1,1,1,1,1,0,4,4,4,4,4,4,4},
HenryWTriff 6:5f76dd718dc3 133 {4,4,0,1,1,1,1,1,0,0,0,0,0,0,4,4,4},
HenryWTriff 6:5f76dd718dc3 134 {4,0,1,1,1,1,1,1,1,1,1,1,1,1,0,4,4},
HenryWTriff 6:5f76dd718dc3 135 {4,0,1,1,1,1,1,1,1,1,1,1,1,1,0,4,4},
HenryWTriff 6:5f76dd718dc3 136 {4,0,1,1,1,1,1,1,1,1,1,1,1,1,0,4,4},
HenryWTriff 6:5f76dd718dc3 137 {4,4,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4}
HenryWTriff 6:5f76dd718dc3 138 };
HenryWTriff 6:5f76dd718dc3 139
HenryWTriff 6:5f76dd718dc3 140 int count_down_1[17][17] = {
HenryWTriff 6:5f76dd718dc3 141 {4,4,4,4,4,4,4,0,0,0,4,4,4,4,4,4,4},
HenryWTriff 6:5f76dd718dc3 142 {4,4,4,4,4,4,0,1,1,1,0,4,4,4,4,4,4},
HenryWTriff 6:5f76dd718dc3 143 {4,4,4,4,4,0,1,1,1,1,0,4,4,4,4,4,4},
HenryWTriff 6:5f76dd718dc3 144 {4,4,4,4,0,1,1,1,1,1,0,4,4,4,4,4,4},
HenryWTriff 6:5f76dd718dc3 145 {4,4,4,0,1,1,1,1,1,1,0,4,4,4,4,4,4},
HenryWTriff 6:5f76dd718dc3 146 {4,4,4,0,1,1,1,1,1,1,0,4,4,4,4,4,4},
HenryWTriff 6:5f76dd718dc3 147 {4,4,4,0,1,1,1,1,1,1,0,4,4,4,4,4,4},
HenryWTriff 6:5f76dd718dc3 148 {4,4,4,4,0,0,0,1,1,1,0,4,4,4,4,4,4},
HenryWTriff 6:5f76dd718dc3 149 {4,4,4,4,4,4,0,1,1,1,0,4,4,4,4,4,4},
HenryWTriff 6:5f76dd718dc3 150 {4,4,4,4,4,4,0,1,1,1,0,4,4,4,4,4,4},
HenryWTriff 6:5f76dd718dc3 151 {4,4,4,4,4,4,0,1,1,1,0,4,4,4,4,4,4},
HenryWTriff 6:5f76dd718dc3 152 {4,4,4,4,4,4,0,1,1,1,0,4,4,4,4,4,4},
HenryWTriff 6:5f76dd718dc3 153 {4,4,4,4,0,0,1,1,1,1,1,0,0,4,4,4,4},
HenryWTriff 6:5f76dd718dc3 154 {4,4,4,0,1,1,1,1,1,1,1,1,1,0,4,4,4},
HenryWTriff 6:5f76dd718dc3 155 {4,4,4,0,1,1,1,1,1,1,1,1,1,0,4,4,4},
HenryWTriff 6:5f76dd718dc3 156 {4,4,4,0,1,1,1,1,1,1,1,1,1,0,4,4,4},
HenryWTriff 6:5f76dd718dc3 157 {4,4,4,4,0,0,0,0,0,0,0,0,0,4,4,4,4}
HenryWTriff 6:5f76dd718dc3 158 };
HenryWTriff 6:5f76dd718dc3 159
HenryWTriff 6:5f76dd718dc3 160 int count_down_0[18][18] = {
HenryWTriff 6:5f76dd718dc3 161 {4,4,4,0,0,0,0,4,4,4,4,4,4,4,4,4,4,4},
HenryWTriff 6:5f76dd718dc3 162 {4,4,0,1,1,1,1,0,4,4,4,4,4,4,4,4,4,4},
HenryWTriff 6:5f76dd718dc3 163 {4,0,1,1,1,1,1,0,4,4,4,4,4,4,4,4,4,4},
HenryWTriff 6:5f76dd718dc3 164 {0,1,1,1,0,0,0,4,4,4,4,4,4,4,4,4,4,4},
HenryWTriff 6:5f76dd718dc3 165 {0,1,1,0,0,0,0,0,0,0,4,4,4,4,4,4,4,4},
HenryWTriff 6:5f76dd718dc3 166 {0,1,1,0,0,1,1,1,1,0,4,4,4,4,4,4,4,4},
HenryWTriff 6:5f76dd718dc3 167 {0,1,1,0,0,1,1,1,1,0,4,0,0,0,0,4,4,4},
HenryWTriff 6:5f76dd718dc3 168 {0,1,1,0,0,0,0,1,1,0,0,1,1,1,1,0,4,4},
HenryWTriff 6:5f76dd718dc3 169 {0,1,1,1,0,0,1,1,1,0,1,1,1,1,1,1,0,4},
HenryWTriff 6:5f76dd718dc3 170 {4,0,1,1,1,1,1,1,0,1,1,1,0,0,1,1,1,0},
HenryWTriff 6:5f76dd718dc3 171 {4,4,0,1,1,1,1,0,0,1,1,0,0,0,0,1,1,0},
HenryWTriff 6:5f76dd718dc3 172 {4,4,4,0,0,0,0,4,0,1,1,0,0,0,0,1,1,0},
HenryWTriff 6:5f76dd718dc3 173 {4,4,4,4,4,4,4,4,0,1,1,0,0,0,0,1,1,0},
HenryWTriff 6:5f76dd718dc3 174 {4,4,4,4,4,4,4,4,0,1,1,0,0,0,0,1,1,0},
HenryWTriff 6:5f76dd718dc3 175 {4,4,4,4,4,4,4,4,0,1,1,1,0,0,1,1,1,0},
HenryWTriff 6:5f76dd718dc3 176 {4,4,4,4,4,4,4,4,4,0,1,1,1,1,1,1,0,4},
HenryWTriff 6:5f76dd718dc3 177 {4,4,4,4,4,4,4,4,4,4,0,1,1,1,1,0,4,4},
HenryWTriff 6:5f76dd718dc3 178 {4,4,4,4,4,4,4,4,4,4,4,0,0,0,0,4,4,4},
HenryWTriff 6:5f76dd718dc3 179 };
HenryWTriff 6:5f76dd718dc3 180
HenryWTriff 6:5f76dd718dc3 181 int cup[16][16] = {
HenryWTriff 6:5f76dd718dc3 182 {4,4,4,4,4,0,0,0,0,0,0,4,4,4,4,4},
HenryWTriff 6:5f76dd718dc3 183 {4,0,0,0,0,1,1,1,1,1,1,0,0,0,0,4},
HenryWTriff 6:5f76dd718dc3 184 {0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0},
HenryWTriff 6:5f76dd718dc3 185 {0,1,0,0,0,1,1,0,1,1,1,0,0,0,1,0},
HenryWTriff 6:5f76dd718dc3 186 {0,1,0,0,0,1,1,0,0,1,1,0,0,0,1,0},
HenryWTriff 6:5f76dd718dc3 187 {4,0,1,0,0,1,1,0,0,1,1,0,0,1,0,4},
HenryWTriff 6:5f76dd718dc3 188 {4,0,1,0,0,1,1,0,0,1,1,0,0,1,0,4},
HenryWTriff 6:5f76dd718dc3 189 {4,4,0,1,0,1,1,0,0,1,1,0,1,0,4,4},
HenryWTriff 6:5f76dd718dc3 190 {4,4,0,1,0,1,1,1,0,1,1,0,1,0,4,4},
HenryWTriff 6:5f76dd718dc3 191 {4,4,4,0,1,1,1,1,1,1,1,1,0,4,4,4},
HenryWTriff 6:5f76dd718dc3 192 {4,4,4,4,0,0,1,1,1,1,0,0,4,4,4,4},
HenryWTriff 6:5f76dd718dc3 193 {4,4,4,4,4,4,0,1,1,0,4,4,4,4,4,4},
HenryWTriff 6:5f76dd718dc3 194 {4,4,4,4,4,4,0,1,1,0,4,4,4,4,4,4},
HenryWTriff 6:5f76dd718dc3 195 {4,4,4,4,4,0,1,1,1,1,0,4,4,4,4,4},
HenryWTriff 6:5f76dd718dc3 196 {4,4,4,4,0,1,1,1,1,1,1,0,4,4,4,4},
HenryWTriff 6:5f76dd718dc3 197 {4,4,4,4,4,0,0,0,0,0,0,4,4,4,4,4},
HenryWTriff 6:5f76dd718dc3 198 };
HenryWTriff 6:5f76dd718dc3 199
HenryWTriff 2:d08b6a1eaf2b 200 //**************************
HenryWTriff 2:d08b6a1eaf2b 201 // MAIN GRAPHICS FUNCTION
HenryWTriff 2:d08b6a1eaf2b 202 //**************************
HenryWTriff 2:d08b6a1eaf2b 203
HenryWTriff 7:2ce6e90f6d47 204 void Graphics::Draw_Map(Point_2D translation, int angle, float squish, Line_2D *Track_Lines, Line_2D *Track_Dotted_Lines, Line_2D *Track_Walls, Point_2D *Track_Flags, Triangle_2D *Track_Boost_Plates, Map_Data map_info, int car_type, Point_2D ghost_position, N5110 &LCD)
HenryWTriff 2:d08b6a1eaf2b 205 {
HenryWTriff 7:2ce6e90f6d47 206 enum cars {Basic, Offroad, Drifter, Sportscar, Racecar, Stupid};
HenryWTriff 3:ceed6d026b8b 207 Line_2D Track_Lines_Transformed[map_info.number_of_track_lines];
HenryWTriff 3:ceed6d026b8b 208 Line_2D Track_Dotted_Lines_Transformed[map_info.number_of_dotted_lines];
HenryWTriff 3:ceed6d026b8b 209 Point_2D Transformed_Flags[map_info.number_of_flags];
HenryWTriff 5:2d9f3c36bcb9 210 Line_2D Transformed_Walls[map_info.number_of_walls];
HenryWTriff 6:5f76dd718dc3 211 Point_2D Transformed_Ghost;
HenryWTriff 3:ceed6d026b8b 212
HenryWTriff 3:ceed6d026b8b 213 for(int i = 0; i < map_info.number_of_track_lines; i++) {
HenryWTriff 2:d08b6a1eaf2b 214 Track_Lines_Transformed[i] = Track_Lines[i];
HenryWTriff 2:d08b6a1eaf2b 215 //Translation
HenryWTriff 2:d08b6a1eaf2b 216 Track_Lines_Transformed[i].from = Translate_Point(Track_Lines_Transformed[i].from, Round(translation.x), Round(translation.y));
HenryWTriff 2:d08b6a1eaf2b 217 Track_Lines_Transformed[i].to = Translate_Point(Track_Lines_Transformed[i].to, Round(translation.x), Round(translation.y));
HenryWTriff 2:d08b6a1eaf2b 218 //Rotation
HenryWTriff 2:d08b6a1eaf2b 219 Track_Lines_Transformed[i].from = Rotate_Point(Track_Lines_Transformed[i].from, angle);
HenryWTriff 2:d08b6a1eaf2b 220 Track_Lines_Transformed[i].to = Rotate_Point(Track_Lines_Transformed[i].to, angle);
HenryWTriff 2:d08b6a1eaf2b 221 //Squish
HenryWTriff 2:d08b6a1eaf2b 222 Track_Lines_Transformed[i].from = Squish_Point(Track_Lines_Transformed[i].from, squish);
HenryWTriff 2:d08b6a1eaf2b 223 Track_Lines_Transformed[i].to = Squish_Point(Track_Lines_Transformed[i].to, squish);
HenryWTriff 2:d08b6a1eaf2b 224 }
HenryWTriff 2:d08b6a1eaf2b 225
HenryWTriff 3:ceed6d026b8b 226 for(int i = 0; i < map_info.number_of_dotted_lines; i++) {
HenryWTriff 3:ceed6d026b8b 227 Track_Dotted_Lines_Transformed[i] = Track_Dotted_Lines[i];
HenryWTriff 3:ceed6d026b8b 228 //Translation
HenryWTriff 3:ceed6d026b8b 229 Track_Dotted_Lines_Transformed[i].from = Translate_Point(Track_Dotted_Lines_Transformed[i].from, Round(translation.x), Round(translation.y));
HenryWTriff 3:ceed6d026b8b 230 Track_Dotted_Lines_Transformed[i].to = Translate_Point(Track_Dotted_Lines_Transformed[i].to, Round(translation.x), Round(translation.y));
HenryWTriff 3:ceed6d026b8b 231 //Rotation
HenryWTriff 3:ceed6d026b8b 232 Track_Dotted_Lines_Transformed[i].from = Rotate_Point(Track_Dotted_Lines_Transformed[i].from, angle);
HenryWTriff 3:ceed6d026b8b 233 Track_Dotted_Lines_Transformed[i].to = Rotate_Point(Track_Dotted_Lines_Transformed[i].to, angle);
HenryWTriff 3:ceed6d026b8b 234 //Squish
HenryWTriff 3:ceed6d026b8b 235 Track_Dotted_Lines_Transformed[i].from = Squish_Point(Track_Dotted_Lines_Transformed[i].from, squish);
HenryWTriff 3:ceed6d026b8b 236 Track_Dotted_Lines_Transformed[i].to = Squish_Point(Track_Dotted_Lines_Transformed[i].to, squish);
HenryWTriff 3:ceed6d026b8b 237 }
HenryWTriff 3:ceed6d026b8b 238
HenryWTriff 3:ceed6d026b8b 239 for(int i = 0; i < map_info.number_of_flags; i++) {
HenryWTriff 3:ceed6d026b8b 240 Transformed_Flags[i] = Track_Flags[i];
HenryWTriff 3:ceed6d026b8b 241 //Translation
HenryWTriff 3:ceed6d026b8b 242 Transformed_Flags[i] = Translate_Point(Transformed_Flags[i], Round(translation.x), Round(translation.y));
HenryWTriff 3:ceed6d026b8b 243 //Rotation
HenryWTriff 3:ceed6d026b8b 244 Transformed_Flags[i] = Rotate_Point(Transformed_Flags[i], angle);
HenryWTriff 3:ceed6d026b8b 245 //Squish
HenryWTriff 3:ceed6d026b8b 246 Transformed_Flags[i] = Squish_Point(Transformed_Flags[i], squish);
HenryWTriff 3:ceed6d026b8b 247 }
HenryWTriff 3:ceed6d026b8b 248
HenryWTriff 5:2d9f3c36bcb9 249 for(int i = 0; i < map_info.number_of_walls; i++) {
HenryWTriff 5:2d9f3c36bcb9 250 Transformed_Walls[i] = Track_Walls[i];
HenryWTriff 5:2d9f3c36bcb9 251 //Translation
HenryWTriff 5:2d9f3c36bcb9 252 Transformed_Walls[i].from = Translate_Point(Transformed_Walls[i].from, Round(translation.x), Round(translation.y));
HenryWTriff 5:2d9f3c36bcb9 253 Transformed_Walls[i].to = Translate_Point(Transformed_Walls[i].to, Round(translation.x), Round(translation.y));
HenryWTriff 5:2d9f3c36bcb9 254 //Rotation
HenryWTriff 5:2d9f3c36bcb9 255 Transformed_Walls[i].from = Rotate_Point(Transformed_Walls[i].from, angle);
HenryWTriff 5:2d9f3c36bcb9 256 Transformed_Walls[i].to = Rotate_Point(Transformed_Walls[i].to, angle);
HenryWTriff 5:2d9f3c36bcb9 257 //Squish
HenryWTriff 5:2d9f3c36bcb9 258 Transformed_Walls[i].from = Squish_Point(Transformed_Walls[i].from, squish);
HenryWTriff 5:2d9f3c36bcb9 259 Transformed_Walls[i].to = Squish_Point(Transformed_Walls[i].to, squish);
HenryWTriff 5:2d9f3c36bcb9 260 }
HenryWTriff 5:2d9f3c36bcb9 261
HenryWTriff 6:5f76dd718dc3 262 Transformed_Ghost = ghost_position;
HenryWTriff 6:5f76dd718dc3 263 //Translation
HenryWTriff 6:5f76dd718dc3 264 Transformed_Ghost = Translate_Point(Transformed_Ghost, Round(translation.x), Round(translation.y));
HenryWTriff 6:5f76dd718dc3 265 //Rotation
HenryWTriff 6:5f76dd718dc3 266 Transformed_Ghost = Rotate_Point(Transformed_Ghost, angle);
HenryWTriff 6:5f76dd718dc3 267 //Squish
HenryWTriff 6:5f76dd718dc3 268 Transformed_Ghost = Squish_Point(Transformed_Ghost, squish);
HenryWTriff 6:5f76dd718dc3 269
HenryWTriff 3:ceed6d026b8b 270 for(int i = 0; i < map_info.number_of_track_lines; i++) {
HenryWTriff 2:d08b6a1eaf2b 271 Graphics_Draw_Line(Track_Lines_Transformed[i].from, Track_Lines_Transformed[i].to, true, LCD);
HenryWTriff 2:d08b6a1eaf2b 272 }
HenryWTriff 3:ceed6d026b8b 273
HenryWTriff 3:ceed6d026b8b 274 for(int i = 0; i < map_info.number_of_dotted_lines; i++) {
HenryWTriff 3:ceed6d026b8b 275 Graphics_Draw_Line(Track_Dotted_Lines_Transformed[i].from, Track_Dotted_Lines_Transformed[i].to,false, LCD);
HenryWTriff 3:ceed6d026b8b 276 }
HenryWTriff 3:ceed6d026b8b 277
HenryWTriff 6:5f76dd718dc3 278 for(int i = 0; i < map_info.number_of_boost_plates; i++) {
HenryWTriff 6:5f76dd718dc3 279 Graphics_Draw_Boost_Plate(Track_Boost_Plates[i], translation, angle, squish, LCD);
HenryWTriff 6:5f76dd718dc3 280 }
HenryWTriff 6:5f76dd718dc3 281
HenryWTriff 3:ceed6d026b8b 282 for(int i = 0; i < map_info.number_of_flags; i++) {
HenryWTriff 3:ceed6d026b8b 283 Graphics_Draw_Sprite(Transformed_Flags[i], 8, 8, (int *)flag, LCD);
HenryWTriff 3:ceed6d026b8b 284 }
HenryWTriff 5:2d9f3c36bcb9 285
HenryWTriff 6:5f76dd718dc3 286 Graphics_Draw_Sprite(Transformed_Ghost, 8, 8, (int *)ghost, LCD);
HenryWTriff 6:5f76dd718dc3 287
HenryWTriff 5:2d9f3c36bcb9 288 for(int i = 0; i < map_info.number_of_walls; i++) {
HenryWTriff 5:2d9f3c36bcb9 289 Graphics_Draw_Wall(Transformed_Walls[i].from, Transformed_Walls[i].to,4, LCD);
HenryWTriff 5:2d9f3c36bcb9 290 }
HenryWTriff 5:2d9f3c36bcb9 291
HenryWTriff 4:9f41fc1c2ad1 292 Point_2D car_position = {4,0};
HenryWTriff 7:2ce6e90f6d47 293
HenryWTriff 7:2ce6e90f6d47 294 if(car_type == Stupid) {
HenryWTriff 7:2ce6e90f6d47 295 Graphics_Draw_Sprite(car_position,8,8,(int *)stupid_car, LCD);
HenryWTriff 7:2ce6e90f6d47 296 } else if(car_type == Racecar) {
HenryWTriff 7:2ce6e90f6d47 297 Graphics_Draw_Sprite(car_position,8,8,(int *)race_car, LCD);
HenryWTriff 7:2ce6e90f6d47 298 } else if(car_type == Sportscar) {
HenryWTriff 7:2ce6e90f6d47 299 Graphics_Draw_Sprite(car_position,8,8,(int *)sports_car, LCD);
HenryWTriff 7:2ce6e90f6d47 300 } else if(car_type == Drifter) {
HenryWTriff 7:2ce6e90f6d47 301 Graphics_Draw_Sprite(car_position,8,8,(int *)drifter_car, LCD);
HenryWTriff 7:2ce6e90f6d47 302 } else if(car_type == Offroad) {
HenryWTriff 7:2ce6e90f6d47 303 Graphics_Draw_Sprite(car_position,8,8,(int *)offroad_car, LCD);
HenryWTriff 7:2ce6e90f6d47 304 } else {
HenryWTriff 7:2ce6e90f6d47 305 Graphics_Draw_Sprite(car_position,8,8,(int *)basic_car, LCD);
HenryWTriff 7:2ce6e90f6d47 306 }
HenryWTriff 2:d08b6a1eaf2b 307 }
HenryWTriff 2:d08b6a1eaf2b 308
HenryWTriff 2:d08b6a1eaf2b 309 //*******************
HenryWTriff 2:d08b6a1eaf2b 310 // SCREEN SETTINGS
HenryWTriff 2:d08b6a1eaf2b 311 //*******************
HenryWTriff 2:d08b6a1eaf2b 312
HenryWTriff 2:d08b6a1eaf2b 313 void Graphics::Change_Contrast(N5110 &LCD, Gamepad &Device)
HenryWTriff 2:d08b6a1eaf2b 314 {
HenryWTriff 2:d08b6a1eaf2b 315 LCD.setContrast((0.35 + 0.2 * Device.read_pot1()));
HenryWTriff 2:d08b6a1eaf2b 316 }
HenryWTriff 2:d08b6a1eaf2b 317
HenryWTriff 6:5f76dd718dc3 318 //****************
HenryWTriff 6:5f76dd718dc3 319 // START SCREEN
HenryWTriff 6:5f76dd718dc3 320 //****************
HenryWTriff 6:5f76dd718dc3 321
HenryWTriff 6:5f76dd718dc3 322 void Graphics::Start_Sequence(int state, N5110 &LCD)
HenryWTriff 6:5f76dd718dc3 323 {
HenryWTriff 6:5f76dd718dc3 324 Point_2D count_down_position = {8,8};
HenryWTriff 6:5f76dd718dc3 325 if(state == 3) {
HenryWTriff 6:5f76dd718dc3 326 Graphics_Draw_Sprite(count_down_position, 17, 17, (int *) count_down_3, LCD);
HenryWTriff 6:5f76dd718dc3 327 } else if(state == 2) {
HenryWTriff 6:5f76dd718dc3 328 Graphics_Draw_Sprite(count_down_position, 17, 17, (int *) count_down_2, LCD);
HenryWTriff 6:5f76dd718dc3 329 } else if(state == 1) {
HenryWTriff 6:5f76dd718dc3 330 Graphics_Draw_Sprite(count_down_position, 17, 17, (int *) count_down_1, LCD);
HenryWTriff 6:5f76dd718dc3 331 } else if(state == 0) {
HenryWTriff 6:5f76dd718dc3 332 Graphics_Draw_Sprite(count_down_position, 18, 18, (int *) count_down_0, LCD);
HenryWTriff 6:5f76dd718dc3 333 }
HenryWTriff 6:5f76dd718dc3 334
HenryWTriff 6:5f76dd718dc3 335 }
HenryWTriff 6:5f76dd718dc3 336
HenryWTriff 6:5f76dd718dc3 337 void Graphics::Finish(N5110 &LCD)
HenryWTriff 6:5f76dd718dc3 338 {
HenryWTriff 6:5f76dd718dc3 339 Point_2D finish_position = {8,8};
HenryWTriff 6:5f76dd718dc3 340 Graphics_Draw_Sprite(finish_position, 16, 16, (int *) cup, LCD);
HenryWTriff 6:5f76dd718dc3 341 }
HenryWTriff 6:5f76dd718dc3 342
HenryWTriff 5:2d9f3c36bcb9 343 //********************
HenryWTriff 5:2d9f3c36bcb9 344 // DRAW LAP COUNTER
HenryWTriff 5:2d9f3c36bcb9 345 //********************
HenryWTriff 5:2d9f3c36bcb9 346
HenryWTriff 5:2d9f3c36bcb9 347 void Graphics::Draw_Laps(int laps, N5110 &LCD)
HenryWTriff 5:2d9f3c36bcb9 348 {
HenryWTriff 5:2d9f3c36bcb9 349 if(laps == 1) {
HenryWTriff 5:2d9f3c36bcb9 350 LCD.printString("1",0,5);
HenryWTriff 5:2d9f3c36bcb9 351 } else if (laps == 2) {
HenryWTriff 5:2d9f3c36bcb9 352 LCD.printString("2",0,5);
HenryWTriff 5:2d9f3c36bcb9 353 } else if (laps == 3) {
HenryWTriff 5:2d9f3c36bcb9 354 LCD.printString("3",0,5);
HenryWTriff 5:2d9f3c36bcb9 355 } else if (laps == 4) {
HenryWTriff 5:2d9f3c36bcb9 356 LCD.printString("4",0,5);
HenryWTriff 5:2d9f3c36bcb9 357 } else if (laps == 5) {
HenryWTriff 5:2d9f3c36bcb9 358 LCD.printString("5",0,5);
HenryWTriff 5:2d9f3c36bcb9 359 }
HenryWTriff 5:2d9f3c36bcb9 360 }
HenryWTriff 2:d08b6a1eaf2b 361
HenryWTriff 6:5f76dd718dc3 362 void Graphics::Draw_Time(bool finished, Time time, N5110 &LCD)
HenryWTriff 6:5f76dd718dc3 363 {
HenryWTriff 6:5f76dd718dc3 364 if(finished == false) {
HenryWTriff 6:5f76dd718dc3 365 char min[1];
HenryWTriff 6:5f76dd718dc3 366 sprintf(min, "%i", time.mins);
HenryWTriff 6:5f76dd718dc3 367 LCD.printString(min,47,5);
HenryWTriff 6:5f76dd718dc3 368
HenryWTriff 6:5f76dd718dc3 369 LCD.printString(":",52,5);
HenryWTriff 6:5f76dd718dc3 370
HenryWTriff 6:5f76dd718dc3 371 if(time.secs < 10) {
HenryWTriff 6:5f76dd718dc3 372 LCD.printString("0",57,5);
HenryWTriff 6:5f76dd718dc3 373 char sec[1];
HenryWTriff 6:5f76dd718dc3 374 sprintf(sec, "%i", time.secs);
HenryWTriff 6:5f76dd718dc3 375 LCD.printString(sec,63,5);
HenryWTriff 6:5f76dd718dc3 376 } else {
HenryWTriff 6:5f76dd718dc3 377 char sec[2];
HenryWTriff 6:5f76dd718dc3 378 sprintf(sec, "%i", time.secs);
HenryWTriff 6:5f76dd718dc3 379 LCD.printString(sec,57,5);
HenryWTriff 6:5f76dd718dc3 380 }
HenryWTriff 6:5f76dd718dc3 381
HenryWTriff 6:5f76dd718dc3 382 LCD.printString(".",68,5);
HenryWTriff 6:5f76dd718dc3 383
HenryWTriff 6:5f76dd718dc3 384 char mili[2];
HenryWTriff 6:5f76dd718dc3 385 sprintf(mili, "%i", time.milis);
HenryWTriff 6:5f76dd718dc3 386 LCD.printString(mili,73,5);
HenryWTriff 6:5f76dd718dc3 387 } else {
HenryWTriff 6:5f76dd718dc3 388 char min[1];
HenryWTriff 6:5f76dd718dc3 389 sprintf(min, "%i", time.mins);
HenryWTriff 6:5f76dd718dc3 390 LCD.printString(min,23,0);
HenryWTriff 6:5f76dd718dc3 391
HenryWTriff 6:5f76dd718dc3 392 LCD.printString(":",28,0);
HenryWTriff 6:5f76dd718dc3 393
HenryWTriff 6:5f76dd718dc3 394 if(time.secs < 10) {
HenryWTriff 6:5f76dd718dc3 395 LCD.printString("0",33,0);
HenryWTriff 6:5f76dd718dc3 396 char sec[1];
HenryWTriff 6:5f76dd718dc3 397 sprintf(sec, "%i", time.secs);
HenryWTriff 6:5f76dd718dc3 398 LCD.printString(sec,39,0);
HenryWTriff 6:5f76dd718dc3 399 } else {
HenryWTriff 6:5f76dd718dc3 400 char sec[2];
HenryWTriff 6:5f76dd718dc3 401 sprintf(sec, "%i", time.secs);
HenryWTriff 6:5f76dd718dc3 402 LCD.printString(sec,33,0);
HenryWTriff 6:5f76dd718dc3 403 }
HenryWTriff 6:5f76dd718dc3 404
HenryWTriff 6:5f76dd718dc3 405 LCD.printString(".",44,0);
HenryWTriff 6:5f76dd718dc3 406
HenryWTriff 6:5f76dd718dc3 407 char mili[2];
HenryWTriff 6:5f76dd718dc3 408 sprintf(mili, "%i", time.milis);
HenryWTriff 6:5f76dd718dc3 409 LCD.printString(mili,49,0);
HenryWTriff 6:5f76dd718dc3 410 }
HenryWTriff 6:5f76dd718dc3 411 }
HenryWTriff 6:5f76dd718dc3 412
HenryWTriff 2:d08b6a1eaf2b 413 //**************
HenryWTriff 2:d08b6a1eaf2b 414 // TRANSFORM
HenryWTriff 2:d08b6a1eaf2b 415 //**************
HenryWTriff 2:d08b6a1eaf2b 416
HenryWTriff 2:d08b6a1eaf2b 417 //ROTATE
HenryWTriff 2:d08b6a1eaf2b 418 Point_2D Graphics::Rotate_Point(Point_2D point, float angle)
HenryWTriff 2:d08b6a1eaf2b 419 {
HenryWTriff 2:d08b6a1eaf2b 420 angle = (angle * PI)/180;
HenryWTriff 2:d08b6a1eaf2b 421 float x_rotated = point.x * cos(angle) - point.y * sin(angle);
HenryWTriff 2:d08b6a1eaf2b 422 float y_rotated = point.y * cos(angle) + point.x * sin(angle);
HenryWTriff 2:d08b6a1eaf2b 423 return {x_rotated, y_rotated};
HenryWTriff 2:d08b6a1eaf2b 424 }
HenryWTriff 2:d08b6a1eaf2b 425 //TRANSLATE
HenryWTriff 2:d08b6a1eaf2b 426 Point_2D Graphics::Translate_Point(Point_2D point, int translate_x, int translate_y)
HenryWTriff 2:d08b6a1eaf2b 427 {
HenryWTriff 2:d08b6a1eaf2b 428 float x_translated = point.x - translate_x;
HenryWTriff 2:d08b6a1eaf2b 429 float y_translated = point.y - translate_y;
HenryWTriff 2:d08b6a1eaf2b 430 return {x_translated, y_translated};
HenryWTriff 2:d08b6a1eaf2b 431 }
HenryWTriff 2:d08b6a1eaf2b 432 //SQUISH
HenryWTriff 2:d08b6a1eaf2b 433 Point_2D Graphics::Squish_Point(Point_2D point, float squish)
HenryWTriff 2:d08b6a1eaf2b 434 {
HenryWTriff 2:d08b6a1eaf2b 435 float x_squish = point.x;
HenryWTriff 2:d08b6a1eaf2b 436 float y_squish = point.y * squish;
HenryWTriff 2:d08b6a1eaf2b 437 return {x_squish, y_squish};
HenryWTriff 2:d08b6a1eaf2b 438 }
HenryWTriff 2:d08b6a1eaf2b 439
HenryWTriff 2:d08b6a1eaf2b 440 //********
HenryWTriff 2:d08b6a1eaf2b 441 // MATH
HenryWTriff 2:d08b6a1eaf2b 442 //********
HenryWTriff 2:d08b6a1eaf2b 443
HenryWTriff 2:d08b6a1eaf2b 444 int Graphics::Round(float number)
HenryWTriff 2:d08b6a1eaf2b 445 {
HenryWTriff 2:d08b6a1eaf2b 446 int number_int = (number * 10);
HenryWTriff 2:d08b6a1eaf2b 447 int remainder = number_int % 10;
HenryWTriff 2:d08b6a1eaf2b 448 if(remainder < 5) {
HenryWTriff 2:d08b6a1eaf2b 449 return ((number_int - remainder) / 10);
HenryWTriff 2:d08b6a1eaf2b 450 } else {
HenryWTriff 2:d08b6a1eaf2b 451 return ((number_int + (10 - remainder)) / 10);
HenryWTriff 2:d08b6a1eaf2b 452 }
HenryWTriff 2:d08b6a1eaf2b 453 }
HenryWTriff 2:d08b6a1eaf2b 454
HenryWTriff 2:d08b6a1eaf2b 455 float Graphics::Gradient(Point_2D from, Point_2D to)
HenryWTriff 2:d08b6a1eaf2b 456 {
HenryWTriff 2:d08b6a1eaf2b 457 float change_in_y = to.y - from.y;
HenryWTriff 2:d08b6a1eaf2b 458 float change_in_x = to.x - from.x;
HenryWTriff 2:d08b6a1eaf2b 459 float gradient = change_in_y / change_in_x;
HenryWTriff 2:d08b6a1eaf2b 460 if(gradient < 0.001 && gradient > -0.001) {
HenryWTriff 2:d08b6a1eaf2b 461 return 0;
HenryWTriff 2:d08b6a1eaf2b 462 } else {
HenryWTriff 2:d08b6a1eaf2b 463 return gradient;
HenryWTriff 2:d08b6a1eaf2b 464 }
HenryWTriff 2:d08b6a1eaf2b 465 }
HenryWTriff 2:d08b6a1eaf2b 466
HenryWTriff 2:d08b6a1eaf2b 467 bool Graphics::Gradient_Check_Infinate(Point_2D from, Point_2D to)
HenryWTriff 2:d08b6a1eaf2b 468 {
HenryWTriff 2:d08b6a1eaf2b 469 float change_in_x = to.x - from.x;
HenryWTriff 2:d08b6a1eaf2b 470 if(change_in_x < 0.001 && change_in_x > -0.001) {
HenryWTriff 2:d08b6a1eaf2b 471 return true;
HenryWTriff 2:d08b6a1eaf2b 472 } else {
HenryWTriff 2:d08b6a1eaf2b 473 return false;
HenryWTriff 2:d08b6a1eaf2b 474 }
HenryWTriff 2:d08b6a1eaf2b 475 }
HenryWTriff 2:d08b6a1eaf2b 476
HenryWTriff 3:ceed6d026b8b 477 //*************
HenryWTriff 3:ceed6d026b8b 478 // DRAW LINE
HenryWTriff 3:ceed6d026b8b 479 //*************
HenryWTriff 2:d08b6a1eaf2b 480
HenryWTriff 2:d08b6a1eaf2b 481 void Graphics::Graphics_Draw_Line(Point_2D from, Point_2D to, bool solid, N5110 &LCD) //Draw a line between two points on only the portion of the screen
HenryWTriff 2:d08b6a1eaf2b 482 {
HenryWTriff 2:d08b6a1eaf2b 483
HenryWTriff 2:d08b6a1eaf2b 484 if( Gradient_Check_Infinate(from, to) == false ) { //Checking to see if the line is vertical
HenryWTriff 2:d08b6a1eaf2b 485 Point_2D plot_x_from = {0,0};
HenryWTriff 2:d08b6a1eaf2b 486 Point_2D plot_x_to = {0,0};
HenryWTriff 2:d08b6a1eaf2b 487 Point_2D plot_y_from = {0,0};
HenryWTriff 2:d08b6a1eaf2b 488 Point_2D plot_y_to = {0,0};
HenryWTriff 2:d08b6a1eaf2b 489
HenryWTriff 2:d08b6a1eaf2b 490 float gradient = Gradient(from, to); // Calculating the gradient
HenryWTriff 2:d08b6a1eaf2b 491 float y_intercept = (from.y - gradient * from.x); // Calulating the y intercept y - mx = c
HenryWTriff 2:d08b6a1eaf2b 492 float x_intercept = (from.x - from.y / gradient); // Calculating the x intercept x - y/m = d
HenryWTriff 2:d08b6a1eaf2b 493
HenryWTriff 2:d08b6a1eaf2b 494 if(gradient <= 1 && gradient >= -1) {
HenryWTriff 2:d08b6a1eaf2b 495 //Reordering from and to so that the for loops below can use ++
HenryWTriff 2:d08b6a1eaf2b 496 if(to.x < from.x) {
HenryWTriff 2:d08b6a1eaf2b 497 plot_x_from = to;
HenryWTriff 2:d08b6a1eaf2b 498 plot_x_to = from;
HenryWTriff 2:d08b6a1eaf2b 499 } else {
HenryWTriff 2:d08b6a1eaf2b 500 plot_x_from = from;
HenryWTriff 2:d08b6a1eaf2b 501 plot_x_to = to;
HenryWTriff 2:d08b6a1eaf2b 502 }
HenryWTriff 2:d08b6a1eaf2b 503 if(solid == true) {
HenryWTriff 2:d08b6a1eaf2b 504 for(int x = Round(plot_x_from.x); x <= Round(plot_x_to.x); x++) { //Iterating through the x points
HenryWTriff 2:d08b6a1eaf2b 505 int y = -(Round((gradient * x) + y_intercept)); //Calculating the value of y for each x point
HenryWTriff 2:d08b6a1eaf2b 506 Point_2D plot_x = {x+42, y+36}; //Assigning them to a Plot_2D variable and transforming so the centre of the screen is 0,0
HenryWTriff 2:d08b6a1eaf2b 507 if(plot_x.x <= 84 && plot_x.x >= 0 && plot_x.y <=48 && plot_x.y >= 0) {
HenryWTriff 2:d08b6a1eaf2b 508 LCD.setPixel(plot_x.x, plot_x.y, true); //Plotting the points
HenryWTriff 2:d08b6a1eaf2b 509 }
HenryWTriff 2:d08b6a1eaf2b 510 }
HenryWTriff 2:d08b6a1eaf2b 511 } else {
HenryWTriff 2:d08b6a1eaf2b 512 for(int x = Round(plot_x_from.x); x <= Round(plot_x_to.x); x+=2) { //Iterating through the x points
HenryWTriff 2:d08b6a1eaf2b 513 int y = -(Round((gradient * x) + y_intercept)); //Calculating the value of y for each x point
HenryWTriff 2:d08b6a1eaf2b 514 Point_2D plot_x = {x+42, y+36}; //Assigning them to a Plot_2D variable and transforming so the centre of the screen is 0,0
HenryWTriff 2:d08b6a1eaf2b 515 if(plot_x.x <= 84 && plot_x.x >= 0 && plot_x.y <=48 && plot_x.y >= 0) {
HenryWTriff 2:d08b6a1eaf2b 516 LCD.setPixel(plot_x.x, plot_x.y, true); //Plotting the points
HenryWTriff 2:d08b6a1eaf2b 517 }
HenryWTriff 2:d08b6a1eaf2b 518 }
HenryWTriff 2:d08b6a1eaf2b 519 }
HenryWTriff 2:d08b6a1eaf2b 520 } else {
HenryWTriff 2:d08b6a1eaf2b 521 if(to.y < from.y) {
HenryWTriff 2:d08b6a1eaf2b 522 plot_y_from = to;
HenryWTriff 2:d08b6a1eaf2b 523 plot_y_to = from;
HenryWTriff 2:d08b6a1eaf2b 524 } else {
HenryWTriff 2:d08b6a1eaf2b 525 plot_y_from = from;
HenryWTriff 2:d08b6a1eaf2b 526 plot_y_to = to;
HenryWTriff 2:d08b6a1eaf2b 527 }
HenryWTriff 2:d08b6a1eaf2b 528 if(solid == true) {
HenryWTriff 2:d08b6a1eaf2b 529 for(int y = Round(plot_y_from.y); y <= Round(plot_y_to.y); y++) { //Iterating through the Y points
HenryWTriff 2:d08b6a1eaf2b 530 int x = Round((y / gradient) + x_intercept); //Calculating the value of x for every y point
HenryWTriff 2:d08b6a1eaf2b 531 Point_2D plot_y = {x+42, (-y)+36}; //Assigning them to a Plot_2D variable and transforming so the centre of the screen is 0,0
HenryWTriff 2:d08b6a1eaf2b 532 if(plot_y.x <= 84 && plot_y.x >= 0 && plot_y.y <=48 && plot_y.y >= 0) {
HenryWTriff 2:d08b6a1eaf2b 533 LCD.setPixel(plot_y.x, plot_y.y, true); //Plotting the points
HenryWTriff 2:d08b6a1eaf2b 534 }
HenryWTriff 2:d08b6a1eaf2b 535 }
HenryWTriff 2:d08b6a1eaf2b 536 } else {
HenryWTriff 2:d08b6a1eaf2b 537 for(int y = Round(plot_y_from.y); y <= Round(plot_y_to.y); y+=2) { //Iterating through the Y points
HenryWTriff 2:d08b6a1eaf2b 538 int x = Round((y / gradient) + x_intercept); //Calculating the value of x for every y point
HenryWTriff 2:d08b6a1eaf2b 539 Point_2D plot_y = {x+42, (-y)+36}; //Assigning them to a Plot_2D variable and transforming so the centre of the screen is 0,0
HenryWTriff 2:d08b6a1eaf2b 540 if(plot_y.x <= 84 && plot_y.x >= 0 && plot_y.y <=48 && plot_y.y >= 0) {
HenryWTriff 2:d08b6a1eaf2b 541 LCD.setPixel(plot_y.x, plot_y.y, true); //Plotting the points
HenryWTriff 2:d08b6a1eaf2b 542 }
HenryWTriff 2:d08b6a1eaf2b 543 }
HenryWTriff 2:d08b6a1eaf2b 544 }
HenryWTriff 2:d08b6a1eaf2b 545 }
HenryWTriff 2:d08b6a1eaf2b 546
HenryWTriff 2:d08b6a1eaf2b 547 } else {
HenryWTriff 2:d08b6a1eaf2b 548 Point_2D plot_y_from = {0,0};
HenryWTriff 2:d08b6a1eaf2b 549 Point_2D plot_y_to = {0,0};
HenryWTriff 2:d08b6a1eaf2b 550 //Reordering from and to so that the for loops below can use ++
HenryWTriff 2:d08b6a1eaf2b 551 if(to.y < from.y) {
HenryWTriff 2:d08b6a1eaf2b 552 plot_y_from = to;
HenryWTriff 2:d08b6a1eaf2b 553 plot_y_to = from;
HenryWTriff 2:d08b6a1eaf2b 554 } else {
HenryWTriff 2:d08b6a1eaf2b 555 plot_y_from = from;
HenryWTriff 2:d08b6a1eaf2b 556 plot_y_to = to;
HenryWTriff 2:d08b6a1eaf2b 557 }
HenryWTriff 2:d08b6a1eaf2b 558 float x_intercept = from.x; //Calculating the x_intercept
HenryWTriff 2:d08b6a1eaf2b 559 if(solid == true) {
HenryWTriff 2:d08b6a1eaf2b 560 for(int y = plot_y_from.y; y <= plot_y_to.y; y++) {
HenryWTriff 2:d08b6a1eaf2b 561 Point_2D plot_y = {x_intercept+42, (-y)+36}; //Assigning them to a Plot_2D variable and transforming so the centre of the screen is 0,0
HenryWTriff 2:d08b6a1eaf2b 562 LCD.setPixel(plot_y.x, plot_y.y, true); //Plotting the points
HenryWTriff 2:d08b6a1eaf2b 563 }
HenryWTriff 2:d08b6a1eaf2b 564 } else {
HenryWTriff 2:d08b6a1eaf2b 565 for(int y = plot_y_from.y; y <= plot_y_to.y; y+=2) {
HenryWTriff 2:d08b6a1eaf2b 566 Point_2D plot_y = {x_intercept+42, (-y)+36}; //Assigning them to a Plot_2D variable and transforming so the centre of the screen is 0,0
HenryWTriff 2:d08b6a1eaf2b 567 LCD.setPixel(plot_y.x, plot_y.y, true); //Plotting the points
HenryWTriff 2:d08b6a1eaf2b 568 }
HenryWTriff 2:d08b6a1eaf2b 569 }
HenryWTriff 2:d08b6a1eaf2b 570 }
HenryWTriff 3:ceed6d026b8b 571 }
HenryWTriff 3:ceed6d026b8b 572
HenryWTriff 3:ceed6d026b8b 573 //***************
HenryWTriff 3:ceed6d026b8b 574 // DRAW SPRITE
HenryWTriff 3:ceed6d026b8b 575 //***************
HenryWTriff 3:ceed6d026b8b 576
HenryWTriff 3:ceed6d026b8b 577 void Graphics::Graphics_Draw_Sprite(Point_2D point, int x_size, int y_size, int *sprite, N5110 &LCD)
HenryWTriff 3:ceed6d026b8b 578 {
HenryWTriff 3:ceed6d026b8b 579 Point_2D zeroed_point = {Round(point.x) + 42 - x_size, Round(-point.y) + 36 - y_size};
HenryWTriff 3:ceed6d026b8b 580 if(zeroed_point.x <= 84 && zeroed_point.x >= 0 && zeroed_point.y <= 48 && zeroed_point.y >= 0) {
HenryWTriff 3:ceed6d026b8b 581 for(int y = 0; y < y_size; y++) {
HenryWTriff 3:ceed6d026b8b 582 for(int x = 0; x < x_size; x++) {
HenryWTriff 3:ceed6d026b8b 583 if(*((sprite + y*y_size)+x) == 1) {
HenryWTriff 3:ceed6d026b8b 584 LCD.setPixel((zeroed_point.x + x), (zeroed_point.y + y), true);
HenryWTriff 3:ceed6d026b8b 585 } else if(*((sprite + y*y_size)+x) == 0) {
HenryWTriff 3:ceed6d026b8b 586 LCD.setPixel((zeroed_point.x + x), (zeroed_point.y + y), false);
HenryWTriff 3:ceed6d026b8b 587 }
HenryWTriff 3:ceed6d026b8b 588 }
HenryWTriff 3:ceed6d026b8b 589 }
HenryWTriff 3:ceed6d026b8b 590 }
HenryWTriff 5:2d9f3c36bcb9 591 }
HenryWTriff 5:2d9f3c36bcb9 592
HenryWTriff 5:2d9f3c36bcb9 593 //***************
HenryWTriff 5:2d9f3c36bcb9 594 // DRAW WALL
HenryWTriff 5:2d9f3c36bcb9 595 //***************
HenryWTriff 5:2d9f3c36bcb9 596
HenryWTriff 5:2d9f3c36bcb9 597 void Graphics::Graphics_Draw_Wall(Point_2D from, Point_2D to, int height, N5110 &LCD) //Draw a line between two points on only the portion of the screen
HenryWTriff 5:2d9f3c36bcb9 598 {
HenryWTriff 5:2d9f3c36bcb9 599 if(Gradient_Check_Infinate(from, to) == 0) { //Checking to see if the line is vertical
HenryWTriff 5:2d9f3c36bcb9 600 Point_2D plot_x_from = {0,0};
HenryWTriff 5:2d9f3c36bcb9 601 Point_2D plot_x_to = {0,0};
HenryWTriff 5:2d9f3c36bcb9 602 Point_2D plot_y_from = {0,0};
HenryWTriff 5:2d9f3c36bcb9 603 Point_2D plot_y_to = {0,0};
HenryWTriff 5:2d9f3c36bcb9 604
HenryWTriff 5:2d9f3c36bcb9 605 float gradient = Gradient(from, to); // Calculating the gradient
HenryWTriff 5:2d9f3c36bcb9 606 float y_intercept = (from.y - gradient * from.x); // Calulating the y intercept y - mx = c
HenryWTriff 5:2d9f3c36bcb9 607 float x_intercept = (from.x - from.y / gradient); // Calculating the x intercept x - y/m = d
HenryWTriff 5:2d9f3c36bcb9 608
HenryWTriff 5:2d9f3c36bcb9 609 if(gradient <= 1 && gradient >= -1) {
HenryWTriff 5:2d9f3c36bcb9 610 //Reordering from and to so that the for loops below can use ++
HenryWTriff 5:2d9f3c36bcb9 611 if(to.x < from.x) {
HenryWTriff 5:2d9f3c36bcb9 612 plot_x_from = to;
HenryWTriff 5:2d9f3c36bcb9 613 plot_x_to = from;
HenryWTriff 5:2d9f3c36bcb9 614 } else {
HenryWTriff 5:2d9f3c36bcb9 615 plot_x_from = from;
HenryWTriff 5:2d9f3c36bcb9 616 plot_x_to = to;
HenryWTriff 5:2d9f3c36bcb9 617 }
HenryWTriff 5:2d9f3c36bcb9 618 for(int x = Round(plot_x_from.x); x <= Round(plot_x_to.x); x++) { //Iterating through the x points
HenryWTriff 5:2d9f3c36bcb9 619 int y = -(Round((gradient * x) + y_intercept)); //Calculating the value of y for each x point
HenryWTriff 5:2d9f3c36bcb9 620 Point_2D plot_x = {x+42, y+36}; //Assigning them to a Plot_2D variable and transforming so the centre of the screen is 0,0
HenryWTriff 5:2d9f3c36bcb9 621 if(plot_x.x <= 84 && plot_x.x >= 0 && plot_x.y <=48 && plot_x.y >= 0) {
HenryWTriff 5:2d9f3c36bcb9 622 for(int y_add = 0; y_add < height; y_add++) {
HenryWTriff 5:2d9f3c36bcb9 623 LCD.setPixel(plot_x.x, plot_x.y - y_add, true);
HenryWTriff 5:2d9f3c36bcb9 624 }
HenryWTriff 5:2d9f3c36bcb9 625 }
HenryWTriff 5:2d9f3c36bcb9 626 }
HenryWTriff 5:2d9f3c36bcb9 627 } else {
HenryWTriff 5:2d9f3c36bcb9 628 if(to.y < from.y) {
HenryWTriff 5:2d9f3c36bcb9 629 plot_y_from = to;
HenryWTriff 5:2d9f3c36bcb9 630 plot_y_to = from;
HenryWTriff 5:2d9f3c36bcb9 631 } else {
HenryWTriff 5:2d9f3c36bcb9 632 plot_y_from = from;
HenryWTriff 5:2d9f3c36bcb9 633 plot_y_to = to;
HenryWTriff 5:2d9f3c36bcb9 634 }
HenryWTriff 5:2d9f3c36bcb9 635 for(int y = Round(plot_y_from.y); y <= Round(plot_y_to.y); y++) { //Iterating through the Y points
HenryWTriff 5:2d9f3c36bcb9 636 int x = Round((y / gradient) + x_intercept); //Calculating the value of x for every y point
HenryWTriff 5:2d9f3c36bcb9 637 Point_2D plot_y = {x+42, (-y)+36}; //Assigning them to a Plot_2D variable and transforming so the centre of the screen is 0,0
HenryWTriff 5:2d9f3c36bcb9 638 if(plot_y.x <= 84 && plot_y.x >= 0 && plot_y.y <=48 && plot_y.y >= 0) {
HenryWTriff 5:2d9f3c36bcb9 639 for(int y_add = 0; y_add < height; y_add++) {
HenryWTriff 5:2d9f3c36bcb9 640 LCD.setPixel(plot_y.x, plot_y.y - y_add, true);
HenryWTriff 5:2d9f3c36bcb9 641 }
HenryWTriff 5:2d9f3c36bcb9 642 }
HenryWTriff 5:2d9f3c36bcb9 643 }
HenryWTriff 5:2d9f3c36bcb9 644 }
HenryWTriff 5:2d9f3c36bcb9 645
HenryWTriff 5:2d9f3c36bcb9 646 } else {
HenryWTriff 5:2d9f3c36bcb9 647 Point_2D plot_y_from = {0,0};
HenryWTriff 5:2d9f3c36bcb9 648 Point_2D plot_y_to = {0,0};
HenryWTriff 5:2d9f3c36bcb9 649 //Reordering from and to so that the for loops below can use ++
HenryWTriff 5:2d9f3c36bcb9 650 if(to.y < from.y) {
HenryWTriff 5:2d9f3c36bcb9 651 plot_y_from = to;
HenryWTriff 5:2d9f3c36bcb9 652 plot_y_to = from;
HenryWTriff 5:2d9f3c36bcb9 653 } else {
HenryWTriff 5:2d9f3c36bcb9 654 plot_y_from = from;
HenryWTriff 5:2d9f3c36bcb9 655 plot_y_to = to;
HenryWTriff 5:2d9f3c36bcb9 656 }
HenryWTriff 5:2d9f3c36bcb9 657 float x_intercept = from.x; //Calculating the x_intercept
HenryWTriff 5:2d9f3c36bcb9 658 for(int y = plot_y_from.y; y <= plot_y_to.y; y++) {
HenryWTriff 5:2d9f3c36bcb9 659 Point_2D plot_y = {x_intercept+42, (-y)+36}; //Assigning them to a Plot_2D variable and transforming so the centre of the screen is 0,0
HenryWTriff 5:2d9f3c36bcb9 660 for(int y_add = 0; y_add < height; y_add++) {
HenryWTriff 5:2d9f3c36bcb9 661 LCD.setPixel(plot_y.x, plot_y.y - y_add, true);
HenryWTriff 5:2d9f3c36bcb9 662 }
HenryWTriff 5:2d9f3c36bcb9 663 }
HenryWTriff 5:2d9f3c36bcb9 664
HenryWTriff 5:2d9f3c36bcb9 665 }
HenryWTriff 6:5f76dd718dc3 666 }
HenryWTriff 6:5f76dd718dc3 667
HenryWTriff 6:5f76dd718dc3 668 //********************
HenryWTriff 6:5f76dd718dc3 669 // DRAW BOOST PLATE
HenryWTriff 6:5f76dd718dc3 670 //********************
HenryWTriff 6:5f76dd718dc3 671
HenryWTriff 6:5f76dd718dc3 672 void Graphics::Graphics_Draw_Boost_Plate(Triangle_2D boost_plate, Point_2D translation, int angle, float squish, N5110 &LCD)
HenryWTriff 6:5f76dd718dc3 673 {
HenryWTriff 6:5f76dd718dc3 674 Point_2D boost_plate_TL = boost_plate.TL;
HenryWTriff 6:5f76dd718dc3 675 Point_2D boost_plate_TR = {boost_plate.BR.x, boost_plate.TL.y};
HenryWTriff 6:5f76dd718dc3 676 Point_2D boost_plate_BL = {boost_plate.TL.x, boost_plate.BR.y};
HenryWTriff 6:5f76dd718dc3 677 Point_2D boost_plate_BR = boost_plate.BR;
HenryWTriff 6:5f76dd718dc3 678 Point_2D boost_plate_mid;
HenryWTriff 6:5f76dd718dc3 679 if(boost_plate.Type == 1) {
HenryWTriff 6:5f76dd718dc3 680 boost_plate_mid.x = boost_plate_BR.x;
HenryWTriff 6:5f76dd718dc3 681 boost_plate_mid.y = (((boost_plate_TL.y - boost_plate_BR.y) / 2) + boost_plate_BR.y);
HenryWTriff 6:5f76dd718dc3 682 } else if(boost_plate.Type == 2) {
HenryWTriff 6:5f76dd718dc3 683 boost_plate_mid.x = (((boost_plate_BR.x - boost_plate_TL.x) / 2) + boost_plate_TL.x);
HenryWTriff 6:5f76dd718dc3 684 boost_plate_mid.y = boost_plate_BR.y;
HenryWTriff 6:5f76dd718dc3 685 } else if(boost_plate.Type == 3) {
HenryWTriff 6:5f76dd718dc3 686 boost_plate_mid.x = boost_plate_TL.x;
HenryWTriff 6:5f76dd718dc3 687 boost_plate_mid.y = (((boost_plate_TL.y - boost_plate_BR.y) / 2) + boost_plate_BR.y);
HenryWTriff 6:5f76dd718dc3 688 } else if(boost_plate.Type == 4) {
HenryWTriff 6:5f76dd718dc3 689 boost_plate_mid.x = (((boost_plate_BR.x - boost_plate_TL.x) / 2) + boost_plate_TL.x);
HenryWTriff 6:5f76dd718dc3 690 boost_plate_mid.y = boost_plate_TL.y;
HenryWTriff 6:5f76dd718dc3 691 }
HenryWTriff 6:5f76dd718dc3 692
HenryWTriff 6:5f76dd718dc3 693 //Translation
HenryWTriff 6:5f76dd718dc3 694 boost_plate_TL = Translate_Point(boost_plate_TL, Round(translation.x), Round(translation.y));
HenryWTriff 6:5f76dd718dc3 695 boost_plate_TR = Translate_Point(boost_plate_TR, Round(translation.x), Round(translation.y));
HenryWTriff 6:5f76dd718dc3 696 boost_plate_BL = Translate_Point(boost_plate_BL, Round(translation.x), Round(translation.y));
HenryWTriff 6:5f76dd718dc3 697 boost_plate_BR = Translate_Point(boost_plate_BR, Round(translation.x), Round(translation.y));
HenryWTriff 6:5f76dd718dc3 698 boost_plate_mid = Translate_Point(boost_plate_mid, Round(translation.x), Round(translation.y));
HenryWTriff 6:5f76dd718dc3 699
HenryWTriff 6:5f76dd718dc3 700 //Rotation
HenryWTriff 6:5f76dd718dc3 701 boost_plate_TL = Rotate_Point(boost_plate_TL, angle);
HenryWTriff 6:5f76dd718dc3 702 boost_plate_TR = Rotate_Point(boost_plate_TR, angle);
HenryWTriff 6:5f76dd718dc3 703 boost_plate_BL = Rotate_Point(boost_plate_BL, angle);
HenryWTriff 6:5f76dd718dc3 704 boost_plate_BR = Rotate_Point(boost_plate_BR, angle);
HenryWTriff 6:5f76dd718dc3 705 boost_plate_mid = Rotate_Point(boost_plate_mid, angle);
HenryWTriff 6:5f76dd718dc3 706
HenryWTriff 6:5f76dd718dc3 707 //Squish
HenryWTriff 6:5f76dd718dc3 708 boost_plate_TL = Squish_Point(boost_plate_TL, squish);
HenryWTriff 6:5f76dd718dc3 709 boost_plate_TR = Squish_Point(boost_plate_TR, squish);
HenryWTriff 6:5f76dd718dc3 710 boost_plate_BL = Squish_Point(boost_plate_BL, squish);
HenryWTriff 6:5f76dd718dc3 711 boost_plate_BR = Squish_Point(boost_plate_BR, squish);
HenryWTriff 6:5f76dd718dc3 712 boost_plate_mid = Squish_Point(boost_plate_mid, squish);
HenryWTriff 6:5f76dd718dc3 713
HenryWTriff 6:5f76dd718dc3 714 Graphics_Draw_Line(boost_plate_TL, boost_plate_TR, true, LCD);
HenryWTriff 6:5f76dd718dc3 715 Graphics_Draw_Line(boost_plate_TR, boost_plate_BR, true, LCD);
HenryWTriff 6:5f76dd718dc3 716 Graphics_Draw_Line(boost_plate_BR, boost_plate_BL, true, LCD);
HenryWTriff 6:5f76dd718dc3 717 Graphics_Draw_Line(boost_plate_BL, boost_plate_TL, true, LCD);
HenryWTriff 7:2ce6e90f6d47 718
HenryWTriff 6:5f76dd718dc3 719 if(boost_plate.Type == 1) {
HenryWTriff 6:5f76dd718dc3 720 Graphics_Draw_Line(boost_plate_TL, boost_plate_mid, true, LCD);
HenryWTriff 6:5f76dd718dc3 721 Graphics_Draw_Line(boost_plate_BL, boost_plate_mid, true, LCD);
HenryWTriff 6:5f76dd718dc3 722 } else if(boost_plate.Type == 2) {
HenryWTriff 6:5f76dd718dc3 723 Graphics_Draw_Line(boost_plate_TL, boost_plate_mid, true, LCD);
HenryWTriff 6:5f76dd718dc3 724 Graphics_Draw_Line(boost_plate_BL, boost_plate_mid, true, LCD);
HenryWTriff 6:5f76dd718dc3 725 } else if(boost_plate.Type == 3) {
HenryWTriff 6:5f76dd718dc3 726 Graphics_Draw_Line(boost_plate_TR, boost_plate_mid, true, LCD);
HenryWTriff 6:5f76dd718dc3 727 Graphics_Draw_Line(boost_plate_BR, boost_plate_mid, true, LCD);
HenryWTriff 6:5f76dd718dc3 728 } else if(boost_plate.Type == 4) {
HenryWTriff 6:5f76dd718dc3 729 Graphics_Draw_Line(boost_plate_TR, boost_plate_mid, true, LCD);
HenryWTriff 6:5f76dd718dc3 730 Graphics_Draw_Line(boost_plate_BR, boost_plate_mid, true, LCD);
HenryWTriff 6:5f76dd718dc3 731 }
HenryWTriff 6:5f76dd718dc3 732
HenryWTriff 6:5f76dd718dc3 733 }
HenryWTriff 6:5f76dd718dc3 734
HenryWTriff 6:5f76dd718dc3 735
HenryWTriff 6:5f76dd718dc3 736
HenryWTriff 6:5f76dd718dc3 737
HenryWTriff 6:5f76dd718dc3 738
HenryWTriff 6:5f76dd718dc3 739
HenryWTriff 6:5f76dd718dc3 740
HenryWTriff 6:5f76dd718dc3 741