Henry Triff
/
ELEC2645_Project_el18ht
Graphics/Graphics.cpp@18:5fcb0514fb70, 2020-03-28 (annotated)
- 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?
User | Revision | Line number | New 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 |