Dependencies:   mbed

Committer:
HenryWTriff
Date:
Sat Mar 28 12:50:59 2020 +0000
Revision:
17:4c5f25d5c4d5
Parent:
10:29126a41b1da
Child:
18:5fcb0514fb70
;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
HenryWTriff 2:d08b6a1eaf2b 1 #include "Graphics.h"
HenryWTriff 2:d08b6a1eaf2b 2
HenryWTriff 17:4c5f25d5c4d5 3 Graphics::Graphics()
HenryWTriff 17:4c5f25d5c4d5 4 {
HenryWTriff 17:4c5f25d5c4d5 5 }
HenryWTriff 17:4c5f25d5c4d5 6
HenryWTriff 17:4c5f25d5c4d5 7 Graphics::~Graphics()
HenryWTriff 17:4c5f25d5c4d5 8 {
HenryWTriff 17:4c5f25d5c4d5 9 }
HenryWTriff 17:4c5f25d5c4d5 10
HenryWTriff 17:4c5f25d5c4d5 11
HenryWTriff 17:4c5f25d5c4d5 12
HenryWTriff 17:4c5f25d5c4d5 13
HenryWTriff 3:ceed6d026b8b 14 //***********
HenryWTriff 3:ceed6d026b8b 15 // Sprites
HenryWTriff 3:ceed6d026b8b 16 //***********
HenryWTriff 3:ceed6d026b8b 17
HenryWTriff 10:29126a41b1da 18 int logo[48][84] = {
HenryWTriff 10:29126a41b1da 19 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0},
HenryWTriff 10:29126a41b1da 20 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0},
HenryWTriff 10:29126a41b1da 21 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,0,0},
HenryWTriff 10:29126a41b1da 22 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,0,0},
HenryWTriff 10:29126a41b1da 23 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,0,0,1,1,1,1,1,0,0,0},
HenryWTriff 10:29126a41b1da 24 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,0,0},
HenryWTriff 10:29126a41b1da 25 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,1,1,0,0,1,1,0,0,0,0,0,0},
HenryWTriff 10:29126a41b1da 26 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,0,0,0,0,0,0},
HenryWTriff 10:29126a41b1da 27 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,0,0,0,1,1,1,1,0,0,1,1,0,0,0,0,0,0},
HenryWTriff 10:29126a41b1da 28 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,0,1,1,1,1,1,1,0,0,1,1,0,0,0,0,0,0},
HenryWTriff 10:29126a41b1da 29 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,1,1,1,0,0,1,1,0,0,0,0,0,0},
HenryWTriff 10:29126a41b1da 30 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,1,1,0,0,0,1,1,1,1,0,0,0,0,0,1,1,1,0,0,0,1,1,1,1,1,1,1,0,0,1,1,0,0,0,0,0,0},
HenryWTriff 10:29126a41b1da 31 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,1,0,0,1,1,0,0,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0},
HenryWTriff 10:29126a41b1da 32 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,1,1,1,1,1,0,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,0,1,1,1,1,0,0,1,1,0,0,0,1,1,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0},
HenryWTriff 10:29126a41b1da 33 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,0,1,1,1,1,0,0,0,0,0,0,0,1,1,0,0,0,1,1,1,1,0,0,1,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
HenryWTriff 10:29126a41b1da 34 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,1,1,1,0,0,0,1,1,0,1,1,1,1,1,0,0,0,0,0,1,1,1,0,0,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
HenryWTriff 10:29126a41b1da 35 {0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,0,0,1,1,0,0,0,1,1,0,0,0,1,1,1,1,0,0,1,0,0,0,1,1,0,0,0,0,0,0,1,1,1,1,1,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
HenryWTriff 10:29126a41b1da 36 {0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,0,0,1,1,0,0,1,1,0,0,0,1,1,1,1,1,0,0,1,1,0,0,0,1,1,0,0,0,1,1,1,1,1,1,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
HenryWTriff 10:29126a41b1da 37 {0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,0,0,1,1,1,1,0,0,0,0,0,1,1,0,0,0,0,0,1,1,1,1,0,0,1,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0},
HenryWTriff 10:29126a41b1da 38 {0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,1,1,0,1,1,1,1,1,0,0,0,0,0,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0},
HenryWTriff 10:29126a41b1da 39 {0,0,0,0,1,1,1,1,0,0,0,1,1,1,1,1,1,0,0,0,1,1,1,1,0,0,1,0,0,0,1,1,0,0,0,0,0,0,1,1,1,1,1,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,0,0},
HenryWTriff 10:29126a41b1da 40 {0,0,1,1,1,1,1,1,0,0,0,1,1,1,1,1,0,0,1,1,1,1,1,1,0,0,1,1,0,0,0,1,1,0,0,0,1,1,1,1,1,1,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,0,0},
HenryWTriff 10:29126a41b1da 41 {0,0,0,0,0,1,1,1,0,0,0,0,0,0,1,1,0,0,0,0,1,1,1,1,0,0,1,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,0,0,1,1,1,1,1,0,0,0},
HenryWTriff 10:29126a41b1da 42 {0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,1,1,0,0,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,0,0},
HenryWTriff 10:29126a41b1da 43 {0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,1,1,0,0,0,0,1,1,1,1,1,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,1,1,0,0,1,1,0,0,0,0,0,0},
HenryWTriff 10:29126a41b1da 44 {0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,1,1,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,0,0,0,0,0,0},
HenryWTriff 10:29126a41b1da 45 {0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,0,0,0,1,1,1,1,0,0,1,1,0,0,0,0,0,0},
HenryWTriff 10:29126a41b1da 46 {0,0,1,1,1,1,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,0,1,1,1,1,1,1,0,0,1,1,0,0,0,0,0,0},
HenryWTriff 10:29126a41b1da 47 {0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,1,1,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,1,1,1,0,0,1,1,0,0,0,0,0,0},
HenryWTriff 10:29126a41b1da 48 {0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,1,1,0,0,0,1,1,1,1,0,0,0,0,0,1,1,1,0,0,0,1,1,1,1,1,1,1,0,0,1,1,0,0,0,0,0,0},
HenryWTriff 10:29126a41b1da 49 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,0,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,1,0,0,1,1,0,0,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0},
HenryWTriff 10:29126a41b1da 50 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,1,1,1,1,1,0,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,0,1,1,1,1,0,0,1,1,0,0,0,1,1,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0},
HenryWTriff 10:29126a41b1da 51 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,0,1,1,1,1,0,0,0,0,0,0,0,1,1,0,0,0,1,1,1,1,0,0,1,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
HenryWTriff 10:29126a41b1da 52 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,1,1,1,0,0,0,1,1,0,1,1,1,1,1,0,0,0,0,0,1,1,1,0,0,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
HenryWTriff 10:29126a41b1da 53 {0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,0,0,1,1,0,0,0,1,1,0,0,0,1,1,1,1,0,0,1,1,0,0,1,1,0,0,0,0,0,0,1,1,1,1,1,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
HenryWTriff 10:29126a41b1da 54 {0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,0,0,1,1,0,0,1,1,0,0,1,1,1,1,1,1,0,0,1,1,0,0,0,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
HenryWTriff 10:29126a41b1da 55 {0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,0,1,1,1,1,1,0,0,0,0,0,1,1,0,0,0,0,0,1,1,1,1,0,0,1,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
HenryWTriff 10:29126a41b1da 56 {0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,1,1,0,0,1,1,1,1,0,0,0,0,0,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
HenryWTriff 10:29126a41b1da 57 {0,0,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,0,0,0,1,1,1,1,0,0,1,1,0,0,1,1,0,0,0,0,0,0,1,1,1,1,1,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
HenryWTriff 10:29126a41b1da 58 {0,0,0,0,1,1,1,1,0,0,1,1,1,1,1,1,0,0,1,1,1,1,1,1,0,0,1,1,0,0,0,1,1,0,0,0,1,1,1,1,1,1,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
HenryWTriff 10:29126a41b1da 59 {0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,1,1,1,1,0,0,1,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
HenryWTriff 10:29126a41b1da 60 {0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,1,1,0,0,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
HenryWTriff 10:29126a41b1da 61 {0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,1,1,0,0,0,0,1,1,1,1,1,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
HenryWTriff 10:29126a41b1da 62 {0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,1,1,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
HenryWTriff 10:29126a41b1da 63 {0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
HenryWTriff 10:29126a41b1da 64 {0,0,0,0,1,1,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
HenryWTriff 10:29126a41b1da 65 {0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
HenryWTriff 10:29126a41b1da 66 {0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
HenryWTriff 10:29126a41b1da 67 };
HenryWTriff 10:29126a41b1da 68
HenryWTriff 3:ceed6d026b8b 69 int flag[8][8] = {
HenryWTriff 3:ceed6d026b8b 70 {4,1,1,1,1,1,1,1},
HenryWTriff 3:ceed6d026b8b 71 {4,1,1,0,1,0,1,1},
HenryWTriff 3:ceed6d026b8b 72 {4,1,0,1,0,1,1,1},
HenryWTriff 3:ceed6d026b8b 73 {4,1,1,0,1,0,1,1},
HenryWTriff 3:ceed6d026b8b 74 {4,1,1,1,1,1,1,1},
HenryWTriff 3:ceed6d026b8b 75 {4,4,4,4,4,4,1,1},
HenryWTriff 3:ceed6d026b8b 76 {4,4,4,4,4,4,1,1},
HenryWTriff 3:ceed6d026b8b 77 {4,4,4,4,4,4,1,1},
HenryWTriff 4:9f41fc1c2ad1 78 };
HenryWTriff 3:ceed6d026b8b 79
HenryWTriff 7:2ce6e90f6d47 80 //CARS
HenryWTriff 7:2ce6e90f6d47 81
HenryWTriff 7:2ce6e90f6d47 82 int basic_car[8][8] = {
HenryWTriff 7:2ce6e90f6d47 83 {4,4,4,4,4,4,4,4},
HenryWTriff 7:2ce6e90f6d47 84 {4,4,4,4,4,4,4,4},
HenryWTriff 7:2ce6e90f6d47 85 {4,4,1,1,1,1,4,4},
HenryWTriff 7:2ce6e90f6d47 86 {4,1,0,0,0,0,1,4},
HenryWTriff 7:2ce6e90f6d47 87 {4,1,0,0,0,0,1,4},
HenryWTriff 7:2ce6e90f6d47 88 {1,0,0,0,0,0,0,1},
HenryWTriff 7:2ce6e90f6d47 89 {1,1,1,1,1,1,1,1},
HenryWTriff 7:2ce6e90f6d47 90 {1,1,4,4,4,4,1,1},
HenryWTriff 7:2ce6e90f6d47 91
HenryWTriff 7:2ce6e90f6d47 92 };
HenryWTriff 7:2ce6e90f6d47 93
HenryWTriff 7:2ce6e90f6d47 94 int offroad_car[8][8] = {
HenryWTriff 7:2ce6e90f6d47 95 {4,4,4,4,4,4,4,4},
HenryWTriff 7:2ce6e90f6d47 96 {4,1,1,1,1,1,1,4},
HenryWTriff 7:2ce6e90f6d47 97 {4,1,0,1,1,0,1,4},
HenryWTriff 7:2ce6e90f6d47 98 {4,1,1,0,0,1,1,4},
HenryWTriff 7:2ce6e90f6d47 99 {4,1,1,0,0,1,1,4},
HenryWTriff 7:2ce6e90f6d47 100 {1,1,0,1,1,0,1,1},
HenryWTriff 7:2ce6e90f6d47 101 {1,1,1,1,1,1,1,1},
HenryWTriff 7:2ce6e90f6d47 102 {1,1,4,4,4,4,1,1}
HenryWTriff 7:2ce6e90f6d47 103 };
HenryWTriff 7:2ce6e90f6d47 104
HenryWTriff 7:2ce6e90f6d47 105 int drifter_car[8][8] = {
HenryWTriff 7:2ce6e90f6d47 106 {4,4,4,4,4,4,4,4},
HenryWTriff 7:2ce6e90f6d47 107 {1,1,4,4,4,4,1,1},
HenryWTriff 7:2ce6e90f6d47 108 {4,4,1,1,1,1,4,4},
HenryWTriff 7:2ce6e90f6d47 109 {4,1,0,0,0,0,1,4},
HenryWTriff 7:2ce6e90f6d47 110 {4,1,0,0,0,0,1,4},
HenryWTriff 7:2ce6e90f6d47 111 {1,4,1,1,1,1,4,1},
HenryWTriff 7:2ce6e90f6d47 112 {1,1,1,1,1,1,1,1},
HenryWTriff 7:2ce6e90f6d47 113 {1,4,4,4,4,4,4,1},
HenryWTriff 7:2ce6e90f6d47 114
HenryWTriff 7:2ce6e90f6d47 115 };
HenryWTriff 7:2ce6e90f6d47 116
HenryWTriff 7:2ce6e90f6d47 117 int sports_car[8][8] = {
HenryWTriff 7:2ce6e90f6d47 118 {4,4,4,4,4,4,4,4},
HenryWTriff 7:2ce6e90f6d47 119 {4,4,4,4,4,4,4,4},
HenryWTriff 7:2ce6e90f6d47 120 {4,4,4,4,4,4,4,4},
HenryWTriff 7:2ce6e90f6d47 121 {1,1,4,4,4,4,1,1},
HenryWTriff 7:2ce6e90f6d47 122 {4,4,1,1,1,1,4,4},
HenryWTriff 7:2ce6e90f6d47 123 {4,1,0,0,0,0,1,4},
HenryWTriff 7:2ce6e90f6d47 124 {1,1,1,1,1,1,1,1},
HenryWTriff 7:2ce6e90f6d47 125 {1,1,4,4,4,4,1,1},
HenryWTriff 7:2ce6e90f6d47 126
HenryWTriff 7:2ce6e90f6d47 127 };
HenryWTriff 7:2ce6e90f6d47 128
HenryWTriff 7:2ce6e90f6d47 129 int race_car[8][8] = {
HenryWTriff 4:9f41fc1c2ad1 130 {4,4,4,4,4,4,4,4},
HenryWTriff 4:9f41fc1c2ad1 131 {4,4,4,4,4,4,4,4},
HenryWTriff 4:9f41fc1c2ad1 132 {4,1,1,1,1,1,1,4},
HenryWTriff 4:9f41fc1c2ad1 133 {4,4,4,1,1,4,4,4},
HenryWTriff 4:9f41fc1c2ad1 134 {4,4,4,1,1,4,4,4},
HenryWTriff 4:9f41fc1c2ad1 135 {1,4,1,1,1,1,4,1},
HenryWTriff 4:9f41fc1c2ad1 136 {1,1,1,0,0,1,1,1},
HenryWTriff 4:9f41fc1c2ad1 137 {1,4,1,1,1,1,4,1},
HenryWTriff 4:9f41fc1c2ad1 138 };
HenryWTriff 3:ceed6d026b8b 139
HenryWTriff 7:2ce6e90f6d47 140 int stupid_car[8][8] = {
HenryWTriff 7:2ce6e90f6d47 141 {4,4,4,4,4,4,4,4},
HenryWTriff 7:2ce6e90f6d47 142 {4,4,4,1,1,4,4,4},
HenryWTriff 7:2ce6e90f6d47 143 {4,4,1,0,0,1,4,4},
HenryWTriff 7:2ce6e90f6d47 144 {4,1,1,0,0,1,1,4},
HenryWTriff 7:2ce6e90f6d47 145 {1,0,1,1,1,1,0,1},
HenryWTriff 7:2ce6e90f6d47 146 {1,0,0,0,0,0,0,1},
HenryWTriff 7:2ce6e90f6d47 147 {4,1,1,1,1,1,1,4},
HenryWTriff 7:2ce6e90f6d47 148 {4,4,4,4,4,4,4,4}
HenryWTriff 7:2ce6e90f6d47 149 };
HenryWTriff 7:2ce6e90f6d47 150
HenryWTriff 6:5f76dd718dc3 151 int ghost[8][8] = {
HenryWTriff 6:5f76dd718dc3 152 {0,0,4,4,4,4,0,0},
HenryWTriff 6:5f76dd718dc3 153 {0,1,0,4,4,0,1,0},
HenryWTriff 6:5f76dd718dc3 154 {4,0,1,0,0,1,0,4},
HenryWTriff 6:5f76dd718dc3 155 {4,4,0,1,1,0,4,4},
HenryWTriff 6:5f76dd718dc3 156 {4,4,0,1,1,0,4,4},
HenryWTriff 6:5f76dd718dc3 157 {4,0,1,0,0,1,0,4},
HenryWTriff 6:5f76dd718dc3 158 {0,1,0,4,4,0,1,0},
HenryWTriff 6:5f76dd718dc3 159 {0,0,4,4,4,4,0,0},
HenryWTriff 6:5f76dd718dc3 160 };
HenryWTriff 6:5f76dd718dc3 161
HenryWTriff 6:5f76dd718dc3 162 int count_down_3[17][17] = {
HenryWTriff 6:5f76dd718dc3 163 {4,4,4,4,0,0,0,0,0,0,0,4,4,4,4,4,4},
HenryWTriff 6:5f76dd718dc3 164 {4,4,4,0,1,1,1,1,1,1,1,0,4,4,4,4,4},
HenryWTriff 6:5f76dd718dc3 165 {4,4,0,1,1,1,1,1,1,1,1,1,0,4,4,4,4},
HenryWTriff 6:5f76dd718dc3 166 {4,0,1,1,1,1,1,1,1,1,1,1,1,0,4,4,4},
HenryWTriff 6:5f76dd718dc3 167 {4,0,1,1,1,1,0,0,0,0,1,1,1,1,0,4,4},
HenryWTriff 6:5f76dd718dc3 168 {4,0,1,1,1,0,4,4,4,4,0,1,1,1,0,4,4},
HenryWTriff 6:5f76dd718dc3 169 {4,0,1,1,1,0,4,4,0,0,1,1,1,1,0,4,4},
HenryWTriff 6:5f76dd718dc3 170 {4,4,0,0,0,4,4,0,1,1,1,1,1,0,4,4,4},
HenryWTriff 6:5f76dd718dc3 171 {4,4,4,4,4,4,4,0,1,1,1,1,0,4,4,4,4},
HenryWTriff 6:5f76dd718dc3 172 {4,4,0,0,0,4,4,0,1,1,1,1,1,0,4,4,4},
HenryWTriff 6:5f76dd718dc3 173 {4,0,1,1,1,0,4,4,0,0,1,1,1,1,0,4,4},
HenryWTriff 6:5f76dd718dc3 174 {4,0,1,1,1,0,4,4,4,4,0,1,1,1,0,4,4},
HenryWTriff 6:5f76dd718dc3 175 {4,0,1,1,1,1,0,0,0,0,1,1,1,1,0,4,4},
HenryWTriff 6:5f76dd718dc3 176 {4,4,0,1,1,1,1,1,1,1,1,1,1,0,4,4,4},
HenryWTriff 6:5f76dd718dc3 177 {4,4,4,0,1,1,1,1,1,1,1,1,0,4,4,4,4},
HenryWTriff 6:5f76dd718dc3 178 {4,4,4,4,0,1,1,1,1,1,1,0,4,4,4,4,4},
HenryWTriff 6:5f76dd718dc3 179 {4,4,4,4,4,0,0,0,0,0,0,4,4,4,4,4,4}
HenryWTriff 6:5f76dd718dc3 180 };
HenryWTriff 6:5f76dd718dc3 181
HenryWTriff 6:5f76dd718dc3 182 int count_down_2[17][17] = {
HenryWTriff 6:5f76dd718dc3 183 {4,4,4,4,4,0,0,0,0,0,0,4,4,4,4,4,4},
HenryWTriff 6:5f76dd718dc3 184 {4,4,4,4,0,1,1,1,1,1,1,0,4,4,4,4,4},
HenryWTriff 6:5f76dd718dc3 185 {4,4,4,0,1,1,1,1,1,1,1,1,0,4,4,4,4},
HenryWTriff 6:5f76dd718dc3 186 {4,4,0,1,1,1,1,1,1,1,1,1,1,0,4,4,4},
HenryWTriff 6:5f76dd718dc3 187 {4,0,1,1,1,1,0,0,0,0,1,1,1,1,0,4,4},
HenryWTriff 6:5f76dd718dc3 188 {4,0,1,1,1,0,4,4,4,0,1,1,1,1,0,4,4},
HenryWTriff 6:5f76dd718dc3 189 {4,0,1,1,1,0,4,4,0,1,1,1,1,1,0,4,4},
HenryWTriff 6:5f76dd718dc3 190 {4,4,0,0,0,4,4,0,1,1,1,1,1,0,4,4,4},
HenryWTriff 6:5f76dd718dc3 191 {4,4,4,4,4,4,0,1,1,1,1,1,0,4,4,4,4},
HenryWTriff 6:5f76dd718dc3 192 {4,4,4,4,4,0,1,1,1,1,1,0,4,4,4,4,4},
HenryWTriff 6:5f76dd718dc3 193 {4,4,4,4,0,1,1,1,1,1,0,4,4,4,4,4,4},
HenryWTriff 6:5f76dd718dc3 194 {4,4,4,0,1,1,1,1,1,0,4,4,4,4,4,4,4},
HenryWTriff 6:5f76dd718dc3 195 {4,4,0,1,1,1,1,1,0,0,0,0,0,0,4,4,4},
HenryWTriff 6:5f76dd718dc3 196 {4,0,1,1,1,1,1,1,1,1,1,1,1,1,0,4,4},
HenryWTriff 6:5f76dd718dc3 197 {4,0,1,1,1,1,1,1,1,1,1,1,1,1,0,4,4},
HenryWTriff 6:5f76dd718dc3 198 {4,0,1,1,1,1,1,1,1,1,1,1,1,1,0,4,4},
HenryWTriff 6:5f76dd718dc3 199 {4,4,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4}
HenryWTriff 6:5f76dd718dc3 200 };
HenryWTriff 6:5f76dd718dc3 201
HenryWTriff 6:5f76dd718dc3 202 int count_down_1[17][17] = {
HenryWTriff 6:5f76dd718dc3 203 {4,4,4,4,4,4,4,0,0,0,4,4,4,4,4,4,4},
HenryWTriff 6:5f76dd718dc3 204 {4,4,4,4,4,4,0,1,1,1,0,4,4,4,4,4,4},
HenryWTriff 6:5f76dd718dc3 205 {4,4,4,4,4,0,1,1,1,1,0,4,4,4,4,4,4},
HenryWTriff 6:5f76dd718dc3 206 {4,4,4,4,0,1,1,1,1,1,0,4,4,4,4,4,4},
HenryWTriff 6:5f76dd718dc3 207 {4,4,4,0,1,1,1,1,1,1,0,4,4,4,4,4,4},
HenryWTriff 6:5f76dd718dc3 208 {4,4,4,0,1,1,1,1,1,1,0,4,4,4,4,4,4},
HenryWTriff 6:5f76dd718dc3 209 {4,4,4,0,1,1,1,1,1,1,0,4,4,4,4,4,4},
HenryWTriff 6:5f76dd718dc3 210 {4,4,4,4,0,0,0,1,1,1,0,4,4,4,4,4,4},
HenryWTriff 6:5f76dd718dc3 211 {4,4,4,4,4,4,0,1,1,1,0,4,4,4,4,4,4},
HenryWTriff 6:5f76dd718dc3 212 {4,4,4,4,4,4,0,1,1,1,0,4,4,4,4,4,4},
HenryWTriff 6:5f76dd718dc3 213 {4,4,4,4,4,4,0,1,1,1,0,4,4,4,4,4,4},
HenryWTriff 6:5f76dd718dc3 214 {4,4,4,4,4,4,0,1,1,1,0,4,4,4,4,4,4},
HenryWTriff 6:5f76dd718dc3 215 {4,4,4,4,0,0,1,1,1,1,1,0,0,4,4,4,4},
HenryWTriff 6:5f76dd718dc3 216 {4,4,4,0,1,1,1,1,1,1,1,1,1,0,4,4,4},
HenryWTriff 6:5f76dd718dc3 217 {4,4,4,0,1,1,1,1,1,1,1,1,1,0,4,4,4},
HenryWTriff 6:5f76dd718dc3 218 {4,4,4,0,1,1,1,1,1,1,1,1,1,0,4,4,4},
HenryWTriff 6:5f76dd718dc3 219 {4,4,4,4,0,0,0,0,0,0,0,0,0,4,4,4,4}
HenryWTriff 6:5f76dd718dc3 220 };
HenryWTriff 6:5f76dd718dc3 221
HenryWTriff 6:5f76dd718dc3 222 int count_down_0[18][18] = {
HenryWTriff 6:5f76dd718dc3 223 {4,4,4,0,0,0,0,4,4,4,4,4,4,4,4,4,4,4},
HenryWTriff 6:5f76dd718dc3 224 {4,4,0,1,1,1,1,0,4,4,4,4,4,4,4,4,4,4},
HenryWTriff 6:5f76dd718dc3 225 {4,0,1,1,1,1,1,0,4,4,4,4,4,4,4,4,4,4},
HenryWTriff 6:5f76dd718dc3 226 {0,1,1,1,0,0,0,4,4,4,4,4,4,4,4,4,4,4},
HenryWTriff 6:5f76dd718dc3 227 {0,1,1,0,0,0,0,0,0,0,4,4,4,4,4,4,4,4},
HenryWTriff 6:5f76dd718dc3 228 {0,1,1,0,0,1,1,1,1,0,4,4,4,4,4,4,4,4},
HenryWTriff 6:5f76dd718dc3 229 {0,1,1,0,0,1,1,1,1,0,4,0,0,0,0,4,4,4},
HenryWTriff 6:5f76dd718dc3 230 {0,1,1,0,0,0,0,1,1,0,0,1,1,1,1,0,4,4},
HenryWTriff 6:5f76dd718dc3 231 {0,1,1,1,0,0,1,1,1,0,1,1,1,1,1,1,0,4},
HenryWTriff 6:5f76dd718dc3 232 {4,0,1,1,1,1,1,1,0,1,1,1,0,0,1,1,1,0},
HenryWTriff 6:5f76dd718dc3 233 {4,4,0,1,1,1,1,0,0,1,1,0,0,0,0,1,1,0},
HenryWTriff 6:5f76dd718dc3 234 {4,4,4,0,0,0,0,4,0,1,1,0,0,0,0,1,1,0},
HenryWTriff 6:5f76dd718dc3 235 {4,4,4,4,4,4,4,4,0,1,1,0,0,0,0,1,1,0},
HenryWTriff 6:5f76dd718dc3 236 {4,4,4,4,4,4,4,4,0,1,1,0,0,0,0,1,1,0},
HenryWTriff 6:5f76dd718dc3 237 {4,4,4,4,4,4,4,4,0,1,1,1,0,0,1,1,1,0},
HenryWTriff 6:5f76dd718dc3 238 {4,4,4,4,4,4,4,4,4,0,1,1,1,1,1,1,0,4},
HenryWTriff 6:5f76dd718dc3 239 {4,4,4,4,4,4,4,4,4,4,0,1,1,1,1,0,4,4},
HenryWTriff 6:5f76dd718dc3 240 {4,4,4,4,4,4,4,4,4,4,4,0,0,0,0,4,4,4},
HenryWTriff 6:5f76dd718dc3 241 };
HenryWTriff 6:5f76dd718dc3 242
HenryWTriff 6:5f76dd718dc3 243 int cup[16][16] = {
HenryWTriff 6:5f76dd718dc3 244 {4,4,4,4,4,0,0,0,0,0,0,4,4,4,4,4},
HenryWTriff 6:5f76dd718dc3 245 {4,0,0,0,0,1,1,1,1,1,1,0,0,0,0,4},
HenryWTriff 6:5f76dd718dc3 246 {0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0},
HenryWTriff 6:5f76dd718dc3 247 {0,1,0,0,0,1,1,0,1,1,1,0,0,0,1,0},
HenryWTriff 6:5f76dd718dc3 248 {0,1,0,0,0,1,1,0,0,1,1,0,0,0,1,0},
HenryWTriff 6:5f76dd718dc3 249 {4,0,1,0,0,1,1,0,0,1,1,0,0,1,0,4},
HenryWTriff 6:5f76dd718dc3 250 {4,0,1,0,0,1,1,0,0,1,1,0,0,1,0,4},
HenryWTriff 6:5f76dd718dc3 251 {4,4,0,1,0,1,1,0,0,1,1,0,1,0,4,4},
HenryWTriff 6:5f76dd718dc3 252 {4,4,0,1,0,1,1,1,0,1,1,0,1,0,4,4},
HenryWTriff 6:5f76dd718dc3 253 {4,4,4,0,1,1,1,1,1,1,1,1,0,4,4,4},
HenryWTriff 6:5f76dd718dc3 254 {4,4,4,4,0,0,1,1,1,1,0,0,4,4,4,4},
HenryWTriff 6:5f76dd718dc3 255 {4,4,4,4,4,4,0,1,1,0,4,4,4,4,4,4},
HenryWTriff 6:5f76dd718dc3 256 {4,4,4,4,4,4,0,1,1,0,4,4,4,4,4,4},
HenryWTriff 6:5f76dd718dc3 257 {4,4,4,4,4,0,1,1,1,1,0,4,4,4,4,4},
HenryWTriff 6:5f76dd718dc3 258 {4,4,4,4,0,1,1,1,1,1,1,0,4,4,4,4},
HenryWTriff 6:5f76dd718dc3 259 {4,4,4,4,4,0,0,0,0,0,0,4,4,4,4,4},
HenryWTriff 6:5f76dd718dc3 260 };
HenryWTriff 6:5f76dd718dc3 261
HenryWTriff 2:d08b6a1eaf2b 262 //**************************
HenryWTriff 2:d08b6a1eaf2b 263 // MAIN GRAPHICS FUNCTION
HenryWTriff 2:d08b6a1eaf2b 264 //**************************
HenryWTriff 10:29126a41b1da 265 // This is the main function for the graphics. It is a LARGE function but it reduces the clutter in the main function.
HenryWTriff 10:29126a41b1da 266 // It is a LARGE function but it reduces the clutter in the main function.
HenryWTriff 10:29126a41b1da 267 // This is run once every frame
HenryWTriff 2:d08b6a1eaf2b 268
HenryWTriff 7:2ce6e90f6d47 269 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 270 {
HenryWTriff 10:29126a41b1da 271 //Variable declaration
HenryWTriff 7:2ce6e90f6d47 272 enum cars {Basic, Offroad, Drifter, Sportscar, Racecar, Stupid};
HenryWTriff 3:ceed6d026b8b 273 Line_2D Track_Lines_Transformed[map_info.number_of_track_lines];
HenryWTriff 3:ceed6d026b8b 274 Line_2D Track_Dotted_Lines_Transformed[map_info.number_of_dotted_lines];
HenryWTriff 3:ceed6d026b8b 275 Point_2D Transformed_Flags[map_info.number_of_flags];
HenryWTriff 5:2d9f3c36bcb9 276 Line_2D Transformed_Walls[map_info.number_of_walls];
HenryWTriff 6:5f76dd718dc3 277 Point_2D Transformed_Ghost;
HenryWTriff 17:4c5f25d5c4d5 278
HenryWTriff 10:29126a41b1da 279 //Transforms the points of the track lines
HenryWTriff 10:29126a41b1da 280 for(int i = 0; i < map_info.number_of_track_lines; i++) { //Iterates through the given track array
HenryWTriff 2:d08b6a1eaf2b 281 Track_Lines_Transformed[i] = Track_Lines[i];
HenryWTriff 2:d08b6a1eaf2b 282 //Translation
HenryWTriff 2:d08b6a1eaf2b 283 Track_Lines_Transformed[i].from = Translate_Point(Track_Lines_Transformed[i].from, Round(translation.x), Round(translation.y));
HenryWTriff 2:d08b6a1eaf2b 284 Track_Lines_Transformed[i].to = Translate_Point(Track_Lines_Transformed[i].to, Round(translation.x), Round(translation.y));
HenryWTriff 2:d08b6a1eaf2b 285 //Rotation
HenryWTriff 2:d08b6a1eaf2b 286 Track_Lines_Transformed[i].from = Rotate_Point(Track_Lines_Transformed[i].from, angle);
HenryWTriff 2:d08b6a1eaf2b 287 Track_Lines_Transformed[i].to = Rotate_Point(Track_Lines_Transformed[i].to, angle);
HenryWTriff 2:d08b6a1eaf2b 288 //Squish
HenryWTriff 2:d08b6a1eaf2b 289 Track_Lines_Transformed[i].from = Squish_Point(Track_Lines_Transformed[i].from, squish);
HenryWTriff 2:d08b6a1eaf2b 290 Track_Lines_Transformed[i].to = Squish_Point(Track_Lines_Transformed[i].to, squish);
HenryWTriff 2:d08b6a1eaf2b 291 }
HenryWTriff 17:4c5f25d5c4d5 292
HenryWTriff 10:29126a41b1da 293 //Transforms the points of the dotted lines on the track
HenryWTriff 10:29126a41b1da 294 for(int i = 0; i < map_info.number_of_dotted_lines; i++) { //Iterates through the given dotted lines array
HenryWTriff 3:ceed6d026b8b 295 Track_Dotted_Lines_Transformed[i] = Track_Dotted_Lines[i];
HenryWTriff 3:ceed6d026b8b 296 //Translation
HenryWTriff 3:ceed6d026b8b 297 Track_Dotted_Lines_Transformed[i].from = Translate_Point(Track_Dotted_Lines_Transformed[i].from, Round(translation.x), Round(translation.y));
HenryWTriff 3:ceed6d026b8b 298 Track_Dotted_Lines_Transformed[i].to = Translate_Point(Track_Dotted_Lines_Transformed[i].to, Round(translation.x), Round(translation.y));
HenryWTriff 3:ceed6d026b8b 299 //Rotation
HenryWTriff 3:ceed6d026b8b 300 Track_Dotted_Lines_Transformed[i].from = Rotate_Point(Track_Dotted_Lines_Transformed[i].from, angle);
HenryWTriff 3:ceed6d026b8b 301 Track_Dotted_Lines_Transformed[i].to = Rotate_Point(Track_Dotted_Lines_Transformed[i].to, angle);
HenryWTriff 3:ceed6d026b8b 302 //Squish
HenryWTriff 3:ceed6d026b8b 303 Track_Dotted_Lines_Transformed[i].from = Squish_Point(Track_Dotted_Lines_Transformed[i].from, squish);
HenryWTriff 3:ceed6d026b8b 304 Track_Dotted_Lines_Transformed[i].to = Squish_Point(Track_Dotted_Lines_Transformed[i].to, squish);
HenryWTriff 3:ceed6d026b8b 305 }
HenryWTriff 17:4c5f25d5c4d5 306
HenryWTriff 10:29126a41b1da 307 //Transforms the points of the start flags
HenryWTriff 10:29126a41b1da 308 for(int i = 0; i < map_info.number_of_flags; i++) { //Iterates through the given flags array
HenryWTriff 3:ceed6d026b8b 309 Transformed_Flags[i] = Track_Flags[i];
HenryWTriff 3:ceed6d026b8b 310 //Translation
HenryWTriff 3:ceed6d026b8b 311 Transformed_Flags[i] = Translate_Point(Transformed_Flags[i], Round(translation.x), Round(translation.y));
HenryWTriff 3:ceed6d026b8b 312 //Rotation
HenryWTriff 3:ceed6d026b8b 313 Transformed_Flags[i] = Rotate_Point(Transformed_Flags[i], angle);
HenryWTriff 3:ceed6d026b8b 314 //Squish
HenryWTriff 3:ceed6d026b8b 315 Transformed_Flags[i] = Squish_Point(Transformed_Flags[i], squish);
HenryWTriff 3:ceed6d026b8b 316 }
HenryWTriff 17:4c5f25d5c4d5 317
HenryWTriff 10:29126a41b1da 318 //Transforms the points of the walls
HenryWTriff 10:29126a41b1da 319 for(int i = 0; i < map_info.number_of_walls; i++) { //Iterates throught the given walls array
HenryWTriff 5:2d9f3c36bcb9 320 Transformed_Walls[i] = Track_Walls[i];
HenryWTriff 5:2d9f3c36bcb9 321 //Translation
HenryWTriff 5:2d9f3c36bcb9 322 Transformed_Walls[i].from = Translate_Point(Transformed_Walls[i].from, Round(translation.x), Round(translation.y));
HenryWTriff 5:2d9f3c36bcb9 323 Transformed_Walls[i].to = Translate_Point(Transformed_Walls[i].to, Round(translation.x), Round(translation.y));
HenryWTriff 5:2d9f3c36bcb9 324 //Rotation
HenryWTriff 5:2d9f3c36bcb9 325 Transformed_Walls[i].from = Rotate_Point(Transformed_Walls[i].from, angle);
HenryWTriff 5:2d9f3c36bcb9 326 Transformed_Walls[i].to = Rotate_Point(Transformed_Walls[i].to, angle);
HenryWTriff 5:2d9f3c36bcb9 327 //Squish
HenryWTriff 5:2d9f3c36bcb9 328 Transformed_Walls[i].from = Squish_Point(Transformed_Walls[i].from, squish);
HenryWTriff 5:2d9f3c36bcb9 329 Transformed_Walls[i].to = Squish_Point(Transformed_Walls[i].to, squish);
HenryWTriff 5:2d9f3c36bcb9 330 }
HenryWTriff 17:4c5f25d5c4d5 331
HenryWTriff 10:29126a41b1da 332 //Transforms the points of the ghost position
HenryWTriff 6:5f76dd718dc3 333 Transformed_Ghost = ghost_position;
HenryWTriff 6:5f76dd718dc3 334 //Translation
HenryWTriff 6:5f76dd718dc3 335 Transformed_Ghost = Translate_Point(Transformed_Ghost, Round(translation.x), Round(translation.y));
HenryWTriff 6:5f76dd718dc3 336 //Rotation
HenryWTriff 6:5f76dd718dc3 337 Transformed_Ghost = Rotate_Point(Transformed_Ghost, angle);
HenryWTriff 6:5f76dd718dc3 338 //Squish
HenryWTriff 6:5f76dd718dc3 339 Transformed_Ghost = Squish_Point(Transformed_Ghost, squish);
HenryWTriff 9:7b1093d3f03a 340 Transformed_Ghost.x = Transformed_Ghost.x + 4;
HenryWTriff 17:4c5f25d5c4d5 341
HenryWTriff 10:29126a41b1da 342 //Draws the track lines
HenryWTriff 10:29126a41b1da 343 for(int i = 0; i < map_info.number_of_track_lines; i++) { //Iterates through each line
HenryWTriff 2:d08b6a1eaf2b 344 Graphics_Draw_Line(Track_Lines_Transformed[i].from, Track_Lines_Transformed[i].to, true, LCD);
HenryWTriff 2:d08b6a1eaf2b 345 }
HenryWTriff 17:4c5f25d5c4d5 346
HenryWTriff 10:29126a41b1da 347 //Draws the dotted lines
HenryWTriff 10:29126a41b1da 348 for(int i = 0; i < map_info.number_of_dotted_lines; i++) { //Iterates through each line
HenryWTriff 3:ceed6d026b8b 349 Graphics_Draw_Line(Track_Dotted_Lines_Transformed[i].from, Track_Dotted_Lines_Transformed[i].to,false, LCD);
HenryWTriff 3:ceed6d026b8b 350 }
HenryWTriff 17:4c5f25d5c4d5 351
HenryWTriff 10:29126a41b1da 352 //Draws the boost plates
HenryWTriff 10:29126a41b1da 353 for(int i = 0; i < map_info.number_of_boost_plates; i++) { //Iterates through each plate
HenryWTriff 6:5f76dd718dc3 354 Graphics_Draw_Boost_Plate(Track_Boost_Plates[i], translation, angle, squish, LCD);
HenryWTriff 6:5f76dd718dc3 355 }
HenryWTriff 17:4c5f25d5c4d5 356
HenryWTriff 10:29126a41b1da 357 //Draws the flags
HenryWTriff 10:29126a41b1da 358 for(int i = 0; i < map_info.number_of_flags; i++) { //Iterates through each flag
HenryWTriff 3:ceed6d026b8b 359 Graphics_Draw_Sprite(Transformed_Flags[i], 8, 8, (int *)flag, LCD);
HenryWTriff 3:ceed6d026b8b 360 }
HenryWTriff 17:4c5f25d5c4d5 361
HenryWTriff 10:29126a41b1da 362 //Draws the ghost
HenryWTriff 17:4c5f25d5c4d5 363 Graphics_Draw_Sprite(Transformed_Ghost, 8, 8, (int *)ghost, LCD);
HenryWTriff 17:4c5f25d5c4d5 364
HenryWTriff 10:29126a41b1da 365 //Draws the walls
HenryWTriff 5:2d9f3c36bcb9 366 for(int i = 0; i < map_info.number_of_walls; i++) {
HenryWTriff 5:2d9f3c36bcb9 367 Graphics_Draw_Wall(Transformed_Walls[i].from, Transformed_Walls[i].to,4, LCD);
HenryWTriff 5:2d9f3c36bcb9 368 }
HenryWTriff 17:4c5f25d5c4d5 369
HenryWTriff 10:29126a41b1da 370 //Draws the players car
HenryWTriff 4:9f41fc1c2ad1 371 Point_2D car_position = {4,0};
HenryWTriff 7:2ce6e90f6d47 372 if(car_type == Stupid) {
HenryWTriff 7:2ce6e90f6d47 373 Graphics_Draw_Sprite(car_position,8,8,(int *)stupid_car, LCD);
HenryWTriff 7:2ce6e90f6d47 374 } else if(car_type == Racecar) {
HenryWTriff 7:2ce6e90f6d47 375 Graphics_Draw_Sprite(car_position,8,8,(int *)race_car, LCD);
HenryWTriff 7:2ce6e90f6d47 376 } else if(car_type == Sportscar) {
HenryWTriff 7:2ce6e90f6d47 377 Graphics_Draw_Sprite(car_position,8,8,(int *)sports_car, LCD);
HenryWTriff 7:2ce6e90f6d47 378 } else if(car_type == Drifter) {
HenryWTriff 7:2ce6e90f6d47 379 Graphics_Draw_Sprite(car_position,8,8,(int *)drifter_car, LCD);
HenryWTriff 7:2ce6e90f6d47 380 } else if(car_type == Offroad) {
HenryWTriff 7:2ce6e90f6d47 381 Graphics_Draw_Sprite(car_position,8,8,(int *)offroad_car, LCD);
HenryWTriff 7:2ce6e90f6d47 382 } else {
HenryWTriff 7:2ce6e90f6d47 383 Graphics_Draw_Sprite(car_position,8,8,(int *)basic_car, LCD);
HenryWTriff 7:2ce6e90f6d47 384 }
HenryWTriff 2:d08b6a1eaf2b 385 }
HenryWTriff 2:d08b6a1eaf2b 386
HenryWTriff 10:29126a41b1da 387 //**************
HenryWTriff 10:29126a41b1da 388 // START LOGO
HenryWTriff 10:29126a41b1da 389 //**************
HenryWTriff 10:29126a41b1da 390
HenryWTriff 10:29126a41b1da 391 void Graphics::Draw_Logo(N5110 &LCD) //Draw the game logo
HenryWTriff 10:29126a41b1da 392 {
HenryWTriff 10:29126a41b1da 393 LCD.clear();
HenryWTriff 10:29126a41b1da 394 LCD.drawSprite(0,0,48,84,(int *)logo);
HenryWTriff 10:29126a41b1da 395 LCD.refresh();
HenryWTriff 10:29126a41b1da 396 wait(1);
HenryWTriff 10:29126a41b1da 397 }
HenryWTriff 10:29126a41b1da 398
HenryWTriff 2:d08b6a1eaf2b 399 //*******************
HenryWTriff 2:d08b6a1eaf2b 400 // SCREEN SETTINGS
HenryWTriff 2:d08b6a1eaf2b 401 //*******************
HenryWTriff 2:d08b6a1eaf2b 402
HenryWTriff 10:29126a41b1da 403 void Graphics::Change_Contrast(N5110 &LCD, Gamepad &Device) //Sets the contrast with a greater level of precision
HenryWTriff 2:d08b6a1eaf2b 404 {
HenryWTriff 2:d08b6a1eaf2b 405 LCD.setContrast((0.35 + 0.2 * Device.read_pot1()));
HenryWTriff 2:d08b6a1eaf2b 406 }
HenryWTriff 2:d08b6a1eaf2b 407
HenryWTriff 6:5f76dd718dc3 408 //****************
HenryWTriff 6:5f76dd718dc3 409 // START SCREEN
HenryWTriff 6:5f76dd718dc3 410 //****************
HenryWTriff 6:5f76dd718dc3 411
HenryWTriff 10:29126a41b1da 412 void Graphics::Start_Sequence(int state, N5110 &LCD) //Display the countdown numbers before the race starts
HenryWTriff 6:5f76dd718dc3 413 {
HenryWTriff 6:5f76dd718dc3 414 Point_2D count_down_position = {8,8};
HenryWTriff 6:5f76dd718dc3 415 if(state == 3) {
HenryWTriff 6:5f76dd718dc3 416 Graphics_Draw_Sprite(count_down_position, 17, 17, (int *) count_down_3, LCD);
HenryWTriff 6:5f76dd718dc3 417 } else if(state == 2) {
HenryWTriff 6:5f76dd718dc3 418 Graphics_Draw_Sprite(count_down_position, 17, 17, (int *) count_down_2, LCD);
HenryWTriff 6:5f76dd718dc3 419 } else if(state == 1) {
HenryWTriff 6:5f76dd718dc3 420 Graphics_Draw_Sprite(count_down_position, 17, 17, (int *) count_down_1, LCD);
HenryWTriff 6:5f76dd718dc3 421 } else if(state == 0) {
HenryWTriff 6:5f76dd718dc3 422 Graphics_Draw_Sprite(count_down_position, 18, 18, (int *) count_down_0, LCD);
HenryWTriff 6:5f76dd718dc3 423 }
HenryWTriff 6:5f76dd718dc3 424
HenryWTriff 6:5f76dd718dc3 425 }
HenryWTriff 6:5f76dd718dc3 426
HenryWTriff 10:29126a41b1da 427 void Graphics::Finish(N5110 &LCD) //When the race is over draw the cup symbol
HenryWTriff 6:5f76dd718dc3 428 {
HenryWTriff 6:5f76dd718dc3 429 Point_2D finish_position = {8,8};
HenryWTriff 6:5f76dd718dc3 430 Graphics_Draw_Sprite(finish_position, 16, 16, (int *) cup, LCD);
HenryWTriff 6:5f76dd718dc3 431 }
HenryWTriff 6:5f76dd718dc3 432
HenryWTriff 5:2d9f3c36bcb9 433 //********************
HenryWTriff 5:2d9f3c36bcb9 434 // DRAW LAP COUNTER
HenryWTriff 5:2d9f3c36bcb9 435 //********************
HenryWTriff 5:2d9f3c36bcb9 436
HenryWTriff 10:29126a41b1da 437 void Graphics::Draw_Laps(int laps, N5110 &LCD) //Prints the lab counter in the bottom left corner
HenryWTriff 5:2d9f3c36bcb9 438 {
HenryWTriff 5:2d9f3c36bcb9 439 if(laps == 1) {
HenryWTriff 5:2d9f3c36bcb9 440 LCD.printString("1",0,5);
HenryWTriff 5:2d9f3c36bcb9 441 } else if (laps == 2) {
HenryWTriff 5:2d9f3c36bcb9 442 LCD.printString("2",0,5);
HenryWTriff 5:2d9f3c36bcb9 443 } else if (laps == 3) {
HenryWTriff 5:2d9f3c36bcb9 444 LCD.printString("3",0,5);
HenryWTriff 5:2d9f3c36bcb9 445 } else if (laps == 4) {
HenryWTriff 5:2d9f3c36bcb9 446 LCD.printString("4",0,5);
HenryWTriff 5:2d9f3c36bcb9 447 } else if (laps == 5) {
HenryWTriff 5:2d9f3c36bcb9 448 LCD.printString("5",0,5);
HenryWTriff 5:2d9f3c36bcb9 449 }
HenryWTriff 5:2d9f3c36bcb9 450 }
HenryWTriff 2:d08b6a1eaf2b 451
HenryWTriff 10:29126a41b1da 452 void Graphics::Draw_Time(bool finished, Time time, N5110 &LCD) //Displays the lap time
HenryWTriff 6:5f76dd718dc3 453 {
HenryWTriff 10:29126a41b1da 454 if(finished == false) { //If the race is over, Print the time in the middle of the screen
HenryWTriff 6:5f76dd718dc3 455 char min[1];
HenryWTriff 10:29126a41b1da 456 sprintf(min, "%i", time.mins); //Converts min integer to char
HenryWTriff 10:29126a41b1da 457 LCD.printString(min,47,5); //Prints the min char on the screen
HenryWTriff 6:5f76dd718dc3 458
HenryWTriff 6:5f76dd718dc3 459 LCD.printString(":",52,5);
HenryWTriff 6:5f76dd718dc3 460
HenryWTriff 10:29126a41b1da 461 if(time.secs < 10) { //If the number of seconds is less than 10
HenryWTriff 10:29126a41b1da 462 LCD.printString("0",57,5); //Draw a 0
HenryWTriff 6:5f76dd718dc3 463 char sec[1];
HenryWTriff 10:29126a41b1da 464 sprintf(sec, "%i", time.secs); //Converts sec integer to char
HenryWTriff 10:29126a41b1da 465 LCD.printString(sec,63,5); //Prints the sec char on the screen
HenryWTriff 6:5f76dd718dc3 466 } else {
HenryWTriff 6:5f76dd718dc3 467 char sec[2];
HenryWTriff 10:29126a41b1da 468 sprintf(sec, "%i", time.secs); //Converts sec integer to char
HenryWTriff 10:29126a41b1da 469 LCD.printString(sec,57,5); //Prints the sec char on the screen
HenryWTriff 6:5f76dd718dc3 470 }
HenryWTriff 6:5f76dd718dc3 471
HenryWTriff 6:5f76dd718dc3 472 LCD.printString(".",68,5);
HenryWTriff 6:5f76dd718dc3 473
HenryWTriff 6:5f76dd718dc3 474 char mili[2];
HenryWTriff 10:29126a41b1da 475 sprintf(mili, "%i", time.milis); //Convers mili integer to char
HenryWTriff 10:29126a41b1da 476 LCD.printString(mili,73,5); //Prints the mili char on the screen
HenryWTriff 10:29126a41b1da 477 } else { //If the race is still ongoing
HenryWTriff 6:5f76dd718dc3 478 char min[1];
HenryWTriff 10:29126a41b1da 479 sprintf(min, "%i", time.mins); //Convers min integer to char
HenryWTriff 10:29126a41b1da 480 LCD.printString(min,23,0); //Prints the min char on the screen
HenryWTriff 6:5f76dd718dc3 481
HenryWTriff 6:5f76dd718dc3 482 LCD.printString(":",28,0);
HenryWTriff 6:5f76dd718dc3 483
HenryWTriff 10:29126a41b1da 484 if(time.secs < 10) { //If the number of seconds is less than 10
HenryWTriff 10:29126a41b1da 485 LCD.printString("0",33,0); //Draw a 0
HenryWTriff 6:5f76dd718dc3 486 char sec[1];
HenryWTriff 10:29126a41b1da 487 sprintf(sec, "%i", time.secs); //Convers sec integer to char
HenryWTriff 10:29126a41b1da 488 LCD.printString(sec,39,0); //Prints the sec char on the screen
HenryWTriff 6:5f76dd718dc3 489 } else {
HenryWTriff 6:5f76dd718dc3 490 char sec[2];
HenryWTriff 10:29126a41b1da 491 sprintf(sec, "%i", time.secs); //Convers sec integer to char
HenryWTriff 10:29126a41b1da 492 LCD.printString(sec,33,0); //Prints the sec char on the screen
HenryWTriff 6:5f76dd718dc3 493 }
HenryWTriff 6:5f76dd718dc3 494
HenryWTriff 6:5f76dd718dc3 495 LCD.printString(".",44,0);
HenryWTriff 6:5f76dd718dc3 496
HenryWTriff 6:5f76dd718dc3 497 char mili[2];
HenryWTriff 10:29126a41b1da 498 sprintf(mili, "%i", time.milis); //Convers mili integer to char
HenryWTriff 10:29126a41b1da 499 LCD.printString(mili,49,0); //Prints the mili char on the screen
HenryWTriff 6:5f76dd718dc3 500 }
HenryWTriff 6:5f76dd718dc3 501 }
HenryWTriff 6:5f76dd718dc3 502
HenryWTriff 2:d08b6a1eaf2b 503 //**************
HenryWTriff 2:d08b6a1eaf2b 504 // TRANSFORM
HenryWTriff 2:d08b6a1eaf2b 505 //**************
HenryWTriff 2:d08b6a1eaf2b 506
HenryWTriff 2:d08b6a1eaf2b 507 //ROTATE
HenryWTriff 10:29126a41b1da 508 Point_2D Graphics::Rotate_Point(Point_2D point, float angle) //Rotates all points around the origin
HenryWTriff 2:d08b6a1eaf2b 509 {
HenryWTriff 10:29126a41b1da 510 angle = (angle * PI)/180; //The angle given in degrees is changed into radian form
HenryWTriff 10:29126a41b1da 511 float x_rotated = point.x * cos(angle) - point.y * sin(angle); //X-points are rotated about the origin
HenryWTriff 10:29126a41b1da 512 float y_rotated = point.y * cos(angle) + point.x * sin(angle); //Y-points are rotated about the origin
HenryWTriff 2:d08b6a1eaf2b 513 return {x_rotated, y_rotated};
HenryWTriff 2:d08b6a1eaf2b 514 }
HenryWTriff 2:d08b6a1eaf2b 515 //TRANSLATE
HenryWTriff 10:29126a41b1da 516 Point_2D Graphics::Translate_Point(Point_2D point, int translate_x, int translate_y) //Translates all point by a given translationg
HenryWTriff 2:d08b6a1eaf2b 517 {
HenryWTriff 10:29126a41b1da 518 float x_translated = point.x - translate_x; //Translates the x-points
HenryWTriff 10:29126a41b1da 519 float y_translated = point.y - translate_y; //Translates the y-points
HenryWTriff 2:d08b6a1eaf2b 520 return {x_translated, y_translated};
HenryWTriff 2:d08b6a1eaf2b 521 }
HenryWTriff 2:d08b6a1eaf2b 522 //SQUISH
HenryWTriff 10:29126a41b1da 523 //To get the 3D perspective, the y-coordinate is reduced by a factor
HenryWTriff 10:29126a41b1da 524 Point_2D Graphics::Squish_Point(Point_2D point, float squish) //Squishes all y-coordinates by a factor
HenryWTriff 2:d08b6a1eaf2b 525 {
HenryWTriff 10:29126a41b1da 526 float x_squish = point.x; //The x-coordinate remains the same
HenryWTriff 10:29126a41b1da 527 float y_squish = point.y * squish; //The y-coordinate is reduced
HenryWTriff 2:d08b6a1eaf2b 528 return {x_squish, y_squish};
HenryWTriff 2:d08b6a1eaf2b 529 }
HenryWTriff 2:d08b6a1eaf2b 530
HenryWTriff 2:d08b6a1eaf2b 531 //********
HenryWTriff 2:d08b6a1eaf2b 532 // MATH
HenryWTriff 2:d08b6a1eaf2b 533 //********
HenryWTriff 2:d08b6a1eaf2b 534
HenryWTriff 10:29126a41b1da 535 int Graphics::Round(float number) //Simple function that rounds floating point numbers
HenryWTriff 2:d08b6a1eaf2b 536 {
HenryWTriff 10:29126a41b1da 537 int number_int = (number * 10); //The number is multiplied by 10
HenryWTriff 10:29126a41b1da 538 int remainder = number_int % 10; //The remainder when dividing by 10 is calculated
HenryWTriff 10:29126a41b1da 539 if(remainder < 5) { //If the number is less than 5
HenryWTriff 10:29126a41b1da 540 return ((number_int - remainder) / 10); //Round down
HenryWTriff 2:d08b6a1eaf2b 541 } else {
HenryWTriff 10:29126a41b1da 542 return ((number_int + (10 - remainder)) / 10); //Round up
HenryWTriff 2:d08b6a1eaf2b 543 }
HenryWTriff 2:d08b6a1eaf2b 544 }
HenryWTriff 2:d08b6a1eaf2b 545
HenryWTriff 10:29126a41b1da 546 float Graphics::Gradient(Point_2D from, Point_2D to) //Calculates the gradient of the line between two points
HenryWTriff 2:d08b6a1eaf2b 547 {
HenryWTriff 10:29126a41b1da 548 float change_in_y = to.y - from.y; //Calculates the change in the y-values of the two points
HenryWTriff 10:29126a41b1da 549 float change_in_x = to.x - from.x; //Calculates the change in the x-values of the two points
HenryWTriff 10:29126a41b1da 550 float gradient = change_in_y / change_in_x; //Calculates the gradient by doing dy/dx
HenryWTriff 10:29126a41b1da 551 if(gradient < 0.001 && gradient > -0.001) { //If the gradient is aproximately 0
HenryWTriff 10:29126a41b1da 552 return 0; //Return zero
HenryWTriff 2:d08b6a1eaf2b 553 } else {
HenryWTriff 10:29126a41b1da 554 return gradient; //Else return the gradient
HenryWTriff 2:d08b6a1eaf2b 555 }
HenryWTriff 2:d08b6a1eaf2b 556 }
HenryWTriff 2:d08b6a1eaf2b 557
HenryWTriff 10:29126a41b1da 558 bool Graphics::Gradient_Check_Infinate(Point_2D from, Point_2D to) //Checks to see if the gradient is vertical
HenryWTriff 2:d08b6a1eaf2b 559 {
HenryWTriff 10:29126a41b1da 560 float change_in_x = to.x - from.x; //Calculates the change in the x-value
HenryWTriff 10:29126a41b1da 561 if(change_in_x < 0.001 && change_in_x > -0.001) { //If the change in x value is very small
HenryWTriff 2:d08b6a1eaf2b 562 return true;
HenryWTriff 2:d08b6a1eaf2b 563 } else {
HenryWTriff 2:d08b6a1eaf2b 564 return false;
HenryWTriff 2:d08b6a1eaf2b 565 }
HenryWTriff 2:d08b6a1eaf2b 566 }
HenryWTriff 2:d08b6a1eaf2b 567
HenryWTriff 3:ceed6d026b8b 568 //*************
HenryWTriff 3:ceed6d026b8b 569 // DRAW LINE
HenryWTriff 3:ceed6d026b8b 570 //*************
HenryWTriff 2:d08b6a1eaf2b 571
HenryWTriff 2:d08b6a1eaf2b 572 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 573 {
HenryWTriff 2:d08b6a1eaf2b 574
HenryWTriff 2:d08b6a1eaf2b 575 if( Gradient_Check_Infinate(from, to) == false ) { //Checking to see if the line is vertical
HenryWTriff 10:29126a41b1da 576 //Initialising variables
HenryWTriff 2:d08b6a1eaf2b 577 Point_2D plot_x_from = {0,0};
HenryWTriff 2:d08b6a1eaf2b 578 Point_2D plot_x_to = {0,0};
HenryWTriff 2:d08b6a1eaf2b 579 Point_2D plot_y_from = {0,0};
HenryWTriff 2:d08b6a1eaf2b 580 Point_2D plot_y_to = {0,0};
HenryWTriff 2:d08b6a1eaf2b 581
HenryWTriff 2:d08b6a1eaf2b 582 float gradient = Gradient(from, to); // Calculating the gradient
HenryWTriff 2:d08b6a1eaf2b 583 float y_intercept = (from.y - gradient * from.x); // Calulating the y intercept y - mx = c
HenryWTriff 2:d08b6a1eaf2b 584 float x_intercept = (from.x - from.y / gradient); // Calculating the x intercept x - y/m = d
HenryWTriff 2:d08b6a1eaf2b 585
HenryWTriff 2:d08b6a1eaf2b 586 if(gradient <= 1 && gradient >= -1) {
HenryWTriff 10:29126a41b1da 587 //Reordering 'from' and 'to' so that the for loops below can use ++
HenryWTriff 2:d08b6a1eaf2b 588 if(to.x < from.x) {
HenryWTriff 2:d08b6a1eaf2b 589 plot_x_from = to;
HenryWTriff 2:d08b6a1eaf2b 590 plot_x_to = from;
HenryWTriff 2:d08b6a1eaf2b 591 } else {
HenryWTriff 2:d08b6a1eaf2b 592 plot_x_from = from;
HenryWTriff 2:d08b6a1eaf2b 593 plot_x_to = to;
HenryWTriff 2:d08b6a1eaf2b 594 }
HenryWTriff 10:29126a41b1da 595 if(solid == true) { //If the line is solid or dotted
HenryWTriff 2:d08b6a1eaf2b 596 for(int x = Round(plot_x_from.x); x <= Round(plot_x_to.x); x++) { //Iterating through the x points
HenryWTriff 2:d08b6a1eaf2b 597 int y = -(Round((gradient * x) + y_intercept)); //Calculating the value of y for each x point
HenryWTriff 2:d08b6a1eaf2b 598 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 10:29126a41b1da 599 if(plot_x.x <= 84 && plot_x.x >= 0 && plot_x.y <=48 && plot_x.y >= 0) { //Checking to see if the point is on the screen
HenryWTriff 2:d08b6a1eaf2b 600 LCD.setPixel(plot_x.x, plot_x.y, true); //Plotting the points
HenryWTriff 2:d08b6a1eaf2b 601 }
HenryWTriff 2:d08b6a1eaf2b 602 }
HenryWTriff 2:d08b6a1eaf2b 603 } else {
HenryWTriff 2:d08b6a1eaf2b 604 for(int x = Round(plot_x_from.x); x <= Round(plot_x_to.x); x+=2) { //Iterating through the x points
HenryWTriff 2:d08b6a1eaf2b 605 int y = -(Round((gradient * x) + y_intercept)); //Calculating the value of y for each x point
HenryWTriff 2:d08b6a1eaf2b 606 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 10:29126a41b1da 607 if(plot_x.x <= 84 && plot_x.x >= 0 && plot_x.y <=48 && plot_x.y >= 0) { //Checking to see if the point is on the screen
HenryWTriff 2:d08b6a1eaf2b 608 LCD.setPixel(plot_x.x, plot_x.y, true); //Plotting the points
HenryWTriff 2:d08b6a1eaf2b 609 }
HenryWTriff 2:d08b6a1eaf2b 610 }
HenryWTriff 2:d08b6a1eaf2b 611 }
HenryWTriff 2:d08b6a1eaf2b 612 } else {
HenryWTriff 10:29126a41b1da 613 //Reordering 'from' and 'to' so that the for loops below can use ++
HenryWTriff 2:d08b6a1eaf2b 614 if(to.y < from.y) {
HenryWTriff 2:d08b6a1eaf2b 615 plot_y_from = to;
HenryWTriff 2:d08b6a1eaf2b 616 plot_y_to = from;
HenryWTriff 2:d08b6a1eaf2b 617 } else {
HenryWTriff 2:d08b6a1eaf2b 618 plot_y_from = from;
HenryWTriff 2:d08b6a1eaf2b 619 plot_y_to = to;
HenryWTriff 2:d08b6a1eaf2b 620 }
HenryWTriff 10:29126a41b1da 621 if(solid == true) { //If the line is solid or dotted
HenryWTriff 2:d08b6a1eaf2b 622 for(int y = Round(plot_y_from.y); y <= Round(plot_y_to.y); y++) { //Iterating through the Y points
HenryWTriff 2:d08b6a1eaf2b 623 int x = Round((y / gradient) + x_intercept); //Calculating the value of x for every y point
HenryWTriff 2:d08b6a1eaf2b 624 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 10:29126a41b1da 625 if(plot_y.x <= 84 && plot_y.x >= 0 && plot_y.y <=48 && plot_y.y >= 0) { //Checking to see if the point is on the screen
HenryWTriff 2:d08b6a1eaf2b 626 LCD.setPixel(plot_y.x, plot_y.y, true); //Plotting the points
HenryWTriff 2:d08b6a1eaf2b 627 }
HenryWTriff 2:d08b6a1eaf2b 628 }
HenryWTriff 2:d08b6a1eaf2b 629 } else {
HenryWTriff 2:d08b6a1eaf2b 630 for(int y = Round(plot_y_from.y); y <= Round(plot_y_to.y); y+=2) { //Iterating through the Y points
HenryWTriff 2:d08b6a1eaf2b 631 int x = Round((y / gradient) + x_intercept); //Calculating the value of x for every y point
HenryWTriff 2:d08b6a1eaf2b 632 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 10:29126a41b1da 633 if(plot_y.x <= 84 && plot_y.x >= 0 && plot_y.y <=48 && plot_y.y >= 0) { //Checking to see if the point is on the screen
HenryWTriff 2:d08b6a1eaf2b 634 LCD.setPixel(plot_y.x, plot_y.y, true); //Plotting the points
HenryWTriff 2:d08b6a1eaf2b 635 }
HenryWTriff 2:d08b6a1eaf2b 636 }
HenryWTriff 2:d08b6a1eaf2b 637 }
HenryWTriff 2:d08b6a1eaf2b 638 }
HenryWTriff 2:d08b6a1eaf2b 639
HenryWTriff 2:d08b6a1eaf2b 640 } else {
HenryWTriff 2:d08b6a1eaf2b 641 Point_2D plot_y_from = {0,0};
HenryWTriff 2:d08b6a1eaf2b 642 Point_2D plot_y_to = {0,0};
HenryWTriff 2:d08b6a1eaf2b 643 //Reordering from and to so that the for loops below can use ++
HenryWTriff 2:d08b6a1eaf2b 644 if(to.y < from.y) {
HenryWTriff 2:d08b6a1eaf2b 645 plot_y_from = to;
HenryWTriff 2:d08b6a1eaf2b 646 plot_y_to = from;
HenryWTriff 2:d08b6a1eaf2b 647 } else {
HenryWTriff 2:d08b6a1eaf2b 648 plot_y_from = from;
HenryWTriff 2:d08b6a1eaf2b 649 plot_y_to = to;
HenryWTriff 2:d08b6a1eaf2b 650 }
HenryWTriff 2:d08b6a1eaf2b 651 float x_intercept = from.x; //Calculating the x_intercept
HenryWTriff 10:29126a41b1da 652 if(solid == true) { //If the line is solid or dotted
HenryWTriff 2:d08b6a1eaf2b 653 for(int y = plot_y_from.y; y <= plot_y_to.y; y++) {
HenryWTriff 2:d08b6a1eaf2b 654 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 655 LCD.setPixel(plot_y.x, plot_y.y, true); //Plotting the points
HenryWTriff 2:d08b6a1eaf2b 656 }
HenryWTriff 2:d08b6a1eaf2b 657 } else {
HenryWTriff 2:d08b6a1eaf2b 658 for(int y = plot_y_from.y; y <= plot_y_to.y; y+=2) {
HenryWTriff 2:d08b6a1eaf2b 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 2:d08b6a1eaf2b 660 LCD.setPixel(plot_y.x, plot_y.y, true); //Plotting the points
HenryWTriff 2:d08b6a1eaf2b 661 }
HenryWTriff 2:d08b6a1eaf2b 662 }
HenryWTriff 2:d08b6a1eaf2b 663 }
HenryWTriff 3:ceed6d026b8b 664 }
HenryWTriff 3:ceed6d026b8b 665
HenryWTriff 3:ceed6d026b8b 666 //***************
HenryWTriff 3:ceed6d026b8b 667 // DRAW SPRITE
HenryWTriff 3:ceed6d026b8b 668 //***************
HenryWTriff 3:ceed6d026b8b 669
HenryWTriff 10:29126a41b1da 670 void Graphics::Graphics_Draw_Sprite(Point_2D point, int x_size, int y_size, int *sprite, N5110 &LCD) //Similar to N5110 drawSprite function but mine uses the origin as poin 0,0 and allows for transparent pixels
HenryWTriff 3:ceed6d026b8b 671 {
HenryWTriff 3:ceed6d026b8b 672 Point_2D zeroed_point = {Round(point.x) + 42 - x_size, Round(-point.y) + 36 - y_size};
HenryWTriff 10:29126a41b1da 673 if(zeroed_point.x <= 84 && zeroed_point.x >= 0 && zeroed_point.y <= 48 && zeroed_point.y >= 0) { //If the point is on the screen
HenryWTriff 10:29126a41b1da 674 for(int y = 0; y < y_size; y++) { //Iterates through y-points
HenryWTriff 10:29126a41b1da 675 for(int x = 0; x < x_size; x++) { //Iterates through x-points
HenryWTriff 10:29126a41b1da 676 if(*((sprite + y*y_size)+x) == 1) { //If the sprite has a 1 at that point then set that pixel to black
HenryWTriff 3:ceed6d026b8b 677 LCD.setPixel((zeroed_point.x + x), (zeroed_point.y + y), true);
HenryWTriff 10:29126a41b1da 678 } else if(*((sprite + y*y_size)+x) == 0) { //If the sprite has a 0 at that point then set that pixel to white
HenryWTriff 3:ceed6d026b8b 679 LCD.setPixel((zeroed_point.x + x), (zeroed_point.y + y), false);
HenryWTriff 3:ceed6d026b8b 680 }
HenryWTriff 3:ceed6d026b8b 681 }
HenryWTriff 3:ceed6d026b8b 682 }
HenryWTriff 3:ceed6d026b8b 683 }
HenryWTriff 5:2d9f3c36bcb9 684 }
HenryWTriff 5:2d9f3c36bcb9 685
HenryWTriff 5:2d9f3c36bcb9 686 //***************
HenryWTriff 5:2d9f3c36bcb9 687 // DRAW WALL
HenryWTriff 5:2d9f3c36bcb9 688 //***************
HenryWTriff 5:2d9f3c36bcb9 689
HenryWTriff 5:2d9f3c36bcb9 690 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 691 {
HenryWTriff 5:2d9f3c36bcb9 692 if(Gradient_Check_Infinate(from, to) == 0) { //Checking to see if the line is vertical
HenryWTriff 10:29126a41b1da 693 //Declaring points
HenryWTriff 5:2d9f3c36bcb9 694 Point_2D plot_x_from = {0,0};
HenryWTriff 5:2d9f3c36bcb9 695 Point_2D plot_x_to = {0,0};
HenryWTriff 5:2d9f3c36bcb9 696 Point_2D plot_y_from = {0,0};
HenryWTriff 5:2d9f3c36bcb9 697 Point_2D plot_y_to = {0,0};
HenryWTriff 5:2d9f3c36bcb9 698
HenryWTriff 5:2d9f3c36bcb9 699 float gradient = Gradient(from, to); // Calculating the gradient
HenryWTriff 5:2d9f3c36bcb9 700 float y_intercept = (from.y - gradient * from.x); // Calulating the y intercept y - mx = c
HenryWTriff 5:2d9f3c36bcb9 701 float x_intercept = (from.x - from.y / gradient); // Calculating the x intercept x - y/m = d
HenryWTriff 5:2d9f3c36bcb9 702
HenryWTriff 5:2d9f3c36bcb9 703 if(gradient <= 1 && gradient >= -1) {
HenryWTriff 10:29126a41b1da 704 //Reordering 'from' and 'to' so that the for loops below can use ++
HenryWTriff 5:2d9f3c36bcb9 705 if(to.x < from.x) {
HenryWTriff 5:2d9f3c36bcb9 706 plot_x_from = to;
HenryWTriff 5:2d9f3c36bcb9 707 plot_x_to = from;
HenryWTriff 5:2d9f3c36bcb9 708 } else {
HenryWTriff 5:2d9f3c36bcb9 709 plot_x_from = from;
HenryWTriff 5:2d9f3c36bcb9 710 plot_x_to = to;
HenryWTriff 5:2d9f3c36bcb9 711 }
HenryWTriff 5:2d9f3c36bcb9 712 for(int x = Round(plot_x_from.x); x <= Round(plot_x_to.x); x++) { //Iterating through the x points
HenryWTriff 5:2d9f3c36bcb9 713 int y = -(Round((gradient * x) + y_intercept)); //Calculating the value of y for each x point
HenryWTriff 5:2d9f3c36bcb9 714 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 10:29126a41b1da 715 if(plot_x.x <= 84 && plot_x.x >= 0 && plot_x.y <=48 && plot_x.y >= 0) { //Checking to see if the point is on the screen
HenryWTriff 10:29126a41b1da 716 for(int y_add = 0; y_add < height; y_add++) { //To differentiate it from a line, 'heigh' number of pixels above the line are also drawn. This gives the impression of height
HenryWTriff 10:29126a41b1da 717 LCD.setPixel(plot_x.x, plot_x.y - y_add, true); //Plotting the point
HenryWTriff 5:2d9f3c36bcb9 718 }
HenryWTriff 5:2d9f3c36bcb9 719 }
HenryWTriff 5:2d9f3c36bcb9 720 }
HenryWTriff 5:2d9f3c36bcb9 721 } else {
HenryWTriff 10:29126a41b1da 722 //Reordering 'from' and 'to' so that the for loops can use ++
HenryWTriff 5:2d9f3c36bcb9 723 if(to.y < from.y) {
HenryWTriff 5:2d9f3c36bcb9 724 plot_y_from = to;
HenryWTriff 5:2d9f3c36bcb9 725 plot_y_to = from;
HenryWTriff 5:2d9f3c36bcb9 726 } else {
HenryWTriff 5:2d9f3c36bcb9 727 plot_y_from = from;
HenryWTriff 5:2d9f3c36bcb9 728 plot_y_to = to;
HenryWTriff 5:2d9f3c36bcb9 729 }
HenryWTriff 5:2d9f3c36bcb9 730 for(int y = Round(plot_y_from.y); y <= Round(plot_y_to.y); y++) { //Iterating through the Y points
HenryWTriff 5:2d9f3c36bcb9 731 int x = Round((y / gradient) + x_intercept); //Calculating the value of x for every y point
HenryWTriff 5:2d9f3c36bcb9 732 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 10:29126a41b1da 733 if(plot_y.x <= 84 && plot_y.x >= 0 && plot_y.y <=48 && plot_y.y >= 0) { //Checking to see if the point is on the screen
HenryWTriff 10:29126a41b1da 734 for(int y_add = 0; y_add < height; y_add++) { //To differentiate it from a line, 'heigh' number of pixels above the line are also drawn. This gives the impression of height
HenryWTriff 10:29126a41b1da 735 LCD.setPixel(plot_y.x, plot_y.y - y_add, true); //Plotting the point
HenryWTriff 5:2d9f3c36bcb9 736 }
HenryWTriff 5:2d9f3c36bcb9 737 }
HenryWTriff 5:2d9f3c36bcb9 738 }
HenryWTriff 5:2d9f3c36bcb9 739 }
HenryWTriff 5:2d9f3c36bcb9 740
HenryWTriff 5:2d9f3c36bcb9 741 } else {
HenryWTriff 10:29126a41b1da 742 //Declaring and initialising points
HenryWTriff 5:2d9f3c36bcb9 743 Point_2D plot_y_from = {0,0};
HenryWTriff 5:2d9f3c36bcb9 744 Point_2D plot_y_to = {0,0};
HenryWTriff 5:2d9f3c36bcb9 745 //Reordering from and to so that the for loops below can use ++
HenryWTriff 5:2d9f3c36bcb9 746 if(to.y < from.y) {
HenryWTriff 5:2d9f3c36bcb9 747 plot_y_from = to;
HenryWTriff 5:2d9f3c36bcb9 748 plot_y_to = from;
HenryWTriff 5:2d9f3c36bcb9 749 } else {
HenryWTriff 5:2d9f3c36bcb9 750 plot_y_from = from;
HenryWTriff 5:2d9f3c36bcb9 751 plot_y_to = to;
HenryWTriff 5:2d9f3c36bcb9 752 }
HenryWTriff 5:2d9f3c36bcb9 753 float x_intercept = from.x; //Calculating the x_intercept
HenryWTriff 5:2d9f3c36bcb9 754 for(int y = plot_y_from.y; y <= plot_y_to.y; y++) {
HenryWTriff 5:2d9f3c36bcb9 755 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 10:29126a41b1da 756 for(int y_add = 0; y_add < height; y_add++) { //To differentiate it from a line, 'heigh' number of pixels above the line are also drawn. This gives the impression of height
HenryWTriff 10:29126a41b1da 757 LCD.setPixel(plot_y.x, plot_y.y - y_add, true); //Plotting the point
HenryWTriff 5:2d9f3c36bcb9 758 }
HenryWTriff 5:2d9f3c36bcb9 759 }
HenryWTriff 5:2d9f3c36bcb9 760
HenryWTriff 5:2d9f3c36bcb9 761 }
HenryWTriff 6:5f76dd718dc3 762 }
HenryWTriff 6:5f76dd718dc3 763
HenryWTriff 6:5f76dd718dc3 764 //********************
HenryWTriff 6:5f76dd718dc3 765 // DRAW BOOST PLATE
HenryWTriff 6:5f76dd718dc3 766 //********************
HenryWTriff 6:5f76dd718dc3 767
HenryWTriff 10:29126a41b1da 768 void Graphics::Graphics_Draw_Boost_Plate(Triangle_2D boost_plate, Point_2D translation, int angle, float squish, N5110 &LCD) //Draws a boost plate on the track
HenryWTriff 6:5f76dd718dc3 769 {
HenryWTriff 10:29126a41b1da 770 //Using the given coordinates, calculates the points of all corners of the boost plate
HenryWTriff 6:5f76dd718dc3 771 Point_2D boost_plate_TL = boost_plate.TL;
HenryWTriff 6:5f76dd718dc3 772 Point_2D boost_plate_TR = {boost_plate.BR.x, boost_plate.TL.y};
HenryWTriff 6:5f76dd718dc3 773 Point_2D boost_plate_BL = {boost_plate.TL.x, boost_plate.BR.y};
HenryWTriff 6:5f76dd718dc3 774 Point_2D boost_plate_BR = boost_plate.BR;
HenryWTriff 10:29126a41b1da 775 Point_2D boost_plate_mid; //The coordinate of the point of the arrow of the boost plate
HenryWTriff 10:29126a41b1da 776 //The type defines the direction the plate is facing, e.g. Noth, South, East, West
HenryWTriff 6:5f76dd718dc3 777 if(boost_plate.Type == 1) {
HenryWTriff 10:29126a41b1da 778 //Calculates the coordinate of the point of the arrow drawn on the boost plate
HenryWTriff 6:5f76dd718dc3 779 boost_plate_mid.x = boost_plate_BR.x;
HenryWTriff 6:5f76dd718dc3 780 boost_plate_mid.y = (((boost_plate_TL.y - boost_plate_BR.y) / 2) + boost_plate_BR.y);
HenryWTriff 6:5f76dd718dc3 781 } else if(boost_plate.Type == 2) {
HenryWTriff 10:29126a41b1da 782 //Calculates the coordinate of the point of the arrow drawn on the boost plate
HenryWTriff 6:5f76dd718dc3 783 boost_plate_mid.x = (((boost_plate_BR.x - boost_plate_TL.x) / 2) + boost_plate_TL.x);
HenryWTriff 6:5f76dd718dc3 784 boost_plate_mid.y = boost_plate_BR.y;
HenryWTriff 6:5f76dd718dc3 785 } else if(boost_plate.Type == 3) {
HenryWTriff 10:29126a41b1da 786 //Calculates the coordinate of the point of the arrow drawn on the boost plate
HenryWTriff 6:5f76dd718dc3 787 boost_plate_mid.x = boost_plate_TL.x;
HenryWTriff 6:5f76dd718dc3 788 boost_plate_mid.y = (((boost_plate_TL.y - boost_plate_BR.y) / 2) + boost_plate_BR.y);
HenryWTriff 6:5f76dd718dc3 789 } else if(boost_plate.Type == 4) {
HenryWTriff 10:29126a41b1da 790 //Calculates the coordinate of the point of the arrow drawn on the boost plate
HenryWTriff 6:5f76dd718dc3 791 boost_plate_mid.x = (((boost_plate_BR.x - boost_plate_TL.x) / 2) + boost_plate_TL.x);
HenryWTriff 6:5f76dd718dc3 792 boost_plate_mid.y = boost_plate_TL.y;
HenryWTriff 6:5f76dd718dc3 793 }
HenryWTriff 6:5f76dd718dc3 794
HenryWTriff 6:5f76dd718dc3 795 //Translation
HenryWTriff 6:5f76dd718dc3 796 boost_plate_TL = Translate_Point(boost_plate_TL, Round(translation.x), Round(translation.y));
HenryWTriff 6:5f76dd718dc3 797 boost_plate_TR = Translate_Point(boost_plate_TR, Round(translation.x), Round(translation.y));
HenryWTriff 6:5f76dd718dc3 798 boost_plate_BL = Translate_Point(boost_plate_BL, Round(translation.x), Round(translation.y));
HenryWTriff 6:5f76dd718dc3 799 boost_plate_BR = Translate_Point(boost_plate_BR, Round(translation.x), Round(translation.y));
HenryWTriff 6:5f76dd718dc3 800 boost_plate_mid = Translate_Point(boost_plate_mid, Round(translation.x), Round(translation.y));
HenryWTriff 6:5f76dd718dc3 801
HenryWTriff 6:5f76dd718dc3 802 //Rotation
HenryWTriff 6:5f76dd718dc3 803 boost_plate_TL = Rotate_Point(boost_plate_TL, angle);
HenryWTriff 6:5f76dd718dc3 804 boost_plate_TR = Rotate_Point(boost_plate_TR, angle);
HenryWTriff 6:5f76dd718dc3 805 boost_plate_BL = Rotate_Point(boost_plate_BL, angle);
HenryWTriff 6:5f76dd718dc3 806 boost_plate_BR = Rotate_Point(boost_plate_BR, angle);
HenryWTriff 6:5f76dd718dc3 807 boost_plate_mid = Rotate_Point(boost_plate_mid, angle);
HenryWTriff 6:5f76dd718dc3 808
HenryWTriff 6:5f76dd718dc3 809 //Squish
HenryWTriff 6:5f76dd718dc3 810 boost_plate_TL = Squish_Point(boost_plate_TL, squish);
HenryWTriff 6:5f76dd718dc3 811 boost_plate_TR = Squish_Point(boost_plate_TR, squish);
HenryWTriff 6:5f76dd718dc3 812 boost_plate_BL = Squish_Point(boost_plate_BL, squish);
HenryWTriff 6:5f76dd718dc3 813 boost_plate_BR = Squish_Point(boost_plate_BR, squish);
HenryWTriff 6:5f76dd718dc3 814 boost_plate_mid = Squish_Point(boost_plate_mid, squish);
HenryWTriff 17:4c5f25d5c4d5 815
HenryWTriff 10:29126a41b1da 816 //Draws the square edge of the boost plate
HenryWTriff 6:5f76dd718dc3 817 Graphics_Draw_Line(boost_plate_TL, boost_plate_TR, true, LCD);
HenryWTriff 6:5f76dd718dc3 818 Graphics_Draw_Line(boost_plate_TR, boost_plate_BR, true, LCD);
HenryWTriff 6:5f76dd718dc3 819 Graphics_Draw_Line(boost_plate_BR, boost_plate_BL, true, LCD);
HenryWTriff 6:5f76dd718dc3 820 Graphics_Draw_Line(boost_plate_BL, boost_plate_TL, true, LCD);
HenryWTriff 17:4c5f25d5c4d5 821
HenryWTriff 10:29126a41b1da 822 //For each type of boost plate draw the arrow
HenryWTriff 6:5f76dd718dc3 823 if(boost_plate.Type == 1) {
HenryWTriff 6:5f76dd718dc3 824 Graphics_Draw_Line(boost_plate_TL, boost_plate_mid, true, LCD);
HenryWTriff 6:5f76dd718dc3 825 Graphics_Draw_Line(boost_plate_BL, boost_plate_mid, true, LCD);
HenryWTriff 6:5f76dd718dc3 826 } else if(boost_plate.Type == 2) {
HenryWTriff 6:5f76dd718dc3 827 Graphics_Draw_Line(boost_plate_TL, boost_plate_mid, true, LCD);
HenryWTriff 6:5f76dd718dc3 828 Graphics_Draw_Line(boost_plate_BL, boost_plate_mid, true, LCD);
HenryWTriff 6:5f76dd718dc3 829 } else if(boost_plate.Type == 3) {
HenryWTriff 6:5f76dd718dc3 830 Graphics_Draw_Line(boost_plate_TR, boost_plate_mid, true, LCD);
HenryWTriff 6:5f76dd718dc3 831 Graphics_Draw_Line(boost_plate_BR, boost_plate_mid, true, LCD);
HenryWTriff 6:5f76dd718dc3 832 } else if(boost_plate.Type == 4) {
HenryWTriff 6:5f76dd718dc3 833 Graphics_Draw_Line(boost_plate_TR, boost_plate_mid, true, LCD);
HenryWTriff 6:5f76dd718dc3 834 Graphics_Draw_Line(boost_plate_BR, boost_plate_mid, true, LCD);
HenryWTriff 6:5f76dd718dc3 835 }
HenryWTriff 6:5f76dd718dc3 836
HenryWTriff 6:5f76dd718dc3 837 }
HenryWTriff 6:5f76dd718dc3 838
HenryWTriff 6:5f76dd718dc3 839
HenryWTriff 6:5f76dd718dc3 840
HenryWTriff 6:5f76dd718dc3 841
HenryWTriff 6:5f76dd718dc3 842
HenryWTriff 6:5f76dd718dc3 843
HenryWTriff 6:5f76dd718dc3 844
HenryWTriff 6:5f76dd718dc3 845