Dependencies:   mbed

Committer:
HenryWTriff
Date:
Sat Mar 28 13:08:30 2020 +0000
Revision:
18:5fcb0514fb70
Parent:
17:4c5f25d5c4d5
Child:
25:31761087a83f
Graphics Documentation Added

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