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.
Graphics/Graphics.cpp@7:2ce6e90f6d47, 2020-02-22 (annotated)
- 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?
| User | Revision | Line number | New 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 |