Dependencies:   mbed

Committer:
HenryWTriff
Date:
Wed Mar 25 15:36:01 2020 +0000
Revision:
10:29126a41b1da
Parent:
9:7b1093d3f03a
Child:
17:4c5f25d5c4d5
Better ghost mode using SD card

Who changed what in which revision?

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