ELEC2645 (2019/20) / Mbed 2 deprecated ELEC2645_Project_el19tb

Dependencies:   mbed

Committer:
el19tb
Date:
Sat May 16 04:15:46 2020 +0000
Revision:
31:70521f37e004
Parent:
28:ab1ad440eff7
Child:
33:011f0f7cf3ce
MBED DELETED MAJOR PARTS OF MY CODE, had to re write some of it

Who changed what in which revision?

UserRevisionLine numberNew contents of line
el19tb 31:70521f37e004 1 #include "GraphicEngine.h"
el19tb 31:70521f37e004 2
el19tb 31:70521f37e004 3 N5110 lcd;
el19tb 31:70521f37e004 4
el19tb 31:70521f37e004 5 GraphicEngine::GraphicEngine(Chicken *chicken){
el19tb 31:70521f37e004 6 this->chick = chicken;
el19tb 31:70521f37e004 7 }
el19tb 31:70521f37e004 8
el19tb 31:70521f37e004 9 void GraphicEngine::init(){
el19tb 31:70521f37e004 10 lcd.init();
el19tb 31:70521f37e004 11 }
el19tb 31:70521f37e004 12
el19tb 31:70521f37e004 13 void GraphicEngine::showChicken(){
el19tb 31:70521f37e004 14 //fill the chicken with black color
el19tb 31:70521f37e004 15 lcd.drawRect(chick->x, chick->y, chick->width, chick->width, FILL_BLACK);
el19tb 31:70521f37e004 16 }
el19tb 31:70521f37e004 17
el19tb 31:70521f37e004 18 void GraphicEngine::createSafetyLanes(const std::vector<Safety>& safety_lane)
el19tb 31:70521f37e004 19 {
el19tb 31:70521f37e004 20 Safety temp;
el19tb 31:70521f37e004 21 for(unsigned int i = 0; i < safety_lane.size(); i++){
el19tb 31:70521f37e004 22 temp.x = safety_lane[i].x;
el19tb 31:70521f37e004 23 temp.row = safety_lane[i].row;
el19tb 31:70521f37e004 24 temp.c = safety_lane[i].c;
el19tb 31:70521f37e004 25
el19tb 31:70521f37e004 26 drawIndividualSafety(temp);
el19tb 31:70521f37e004 27 }
el19tb 31:70521f37e004 28 }
el19tb 31:70521f37e004 29
el19tb 31:70521f37e004 30 void GraphicEngine::drawIndividualSafety(&Safety lane_obj)
el19tb 31:70521f37e004 31 {
el19tb 31:70521f37e004 32 switch(lane_obj.c)
el19tb 31:70521f37e004 33 {
el19tb 31:70521f37e004 34 case 'K':
el19tb 31:70521f37e004 35 lcd.drawSprite(lane_obj.x, 48 - 4*lane_obj.row, 4, 4, (int *)safety_lanes_one);
el19tb 31:70521f37e004 36 break;
el19tb 31:70521f37e004 37 case 'K':
el19tb 31:70521f37e004 38 lcd.drawSprite(lane_obj.x, 48 - 4*lane_obj.row, 4, 4, (int *)safety_lanes_two);
el19tb 31:70521f37e004 39 break;
el19tb 31:70521f37e004 40 }
el19tb 31:70521f37e004 41 }
el19tb 31:70521f37e004 42
el19tb 31:70521f37e004 43 void GraphicEngine::drawFirstSafetyBackground(int x, int row)
el19tb 31:70521f37e004 44 {
el19tb 31:70521f37e004 45 lcd.drawSprite(x, 48 - 4*row, 4, 4, (int *)safety_lanes_one);
el19tb 31:70521f37e004 46 }
el19tb 31:70521f37e004 47
el19tb 31:70521f37e004 48 void GraphicEngine::drawSecondSafetyBackground(int x, int row)
el19tb 31:70521f37e004 49 {
el19tb 31:70521f37e004 50 lcd.drawSprite(x, 48 - 4*row, 4, 4, (int *)safety_lane_two);
el19tb 31:70521f37e004 51 )
el19tb 31:70521f37e004 52
el19tb 31:70521f37e004 53 void GraphicEngine::drawGoal(int x, int row)
el19tb 31:70521f37e004 54 {
el19tb 31:70521f37e004 55 lcd.drawSprite(x, row, 8, 8, (int *)end_post);
el19tb 31:70521f37e004 56 }
el19tb 31:70521f37e004 57
el19tb 31:70521f37e004 58 // this is just going to be white blocks
el19tb 31:70521f37e004 59 // road == '.'
el19tb 31:70521f37e004 60 void GraphhicEngine::drawRoads(int row)
el19tb 31:70521f37e004 61 {
el19tb 31:70521f37e004 62 // draw across the screen width
el19tb 31:70521f37e004 63 for(int a = 0; a < 22; a++){
el19tb 31:70521f37e004 64 showEachRoad(a, row); // x pos is the value of a
el19tb 31:70521f37e004 65 }
el19tb 31:70521f37e004 66 }
el19tb 31:70521f37e004 67
el19tb 31:70521f37e004 68 void GraphicEngine::showEachRoad(int x, int row)
el19tb 31:70521f37e004 69 {
el19tb 31:70521f37e004 70 lcd.drawSprite(x, 48 - 4*row,4, 4, (int *)road);
el19tb 31:70521f37e004 71 }
el19tb 31:70521f37e004 72
el19tb 31:70521f37e004 73 void GraphicEngine::showCar(Car *car){
el19tb 31:70521f37e004 74 // safety lane
el19tb 31:70521f37e004 75 lcd.drawRect(0, 48 - 4, 84, 4, FILL_TRANSPARENT);
el19tb 31:70521f37e004 76 lcd.drawRect(0, 48 - 4*6, 84, 4, FILL_TRANSPARENT);
el19tb 31:70521f37e004 77
el19tb 31:70521f37e004 78 // draw to screen0
el19tb 31:70521f37e004 79 // create an enum to determine the vehicle type
el19tb 31:70521f37e004 80 for(int y = 0; y < 4; y++){
el19tb 31:70521f37e004 81 showIndividualCar(&car[y]);
el19tb 31:70521f37e004 82 }
el19tb 31:70521f37e004 83 }
el19tb 31:70521f37e004 84
el19tb 31:70521f37e004 85 void GraphicEngine::displayVehicle(int x, int row, char c)
el19tb 31:70521f37e004 86 {
el19tb 31:70521f37e004 87 switch(obj)
el19tb 31:70521f37e004 88 {
el19tb 31:70521f37e004 89 case 'L': lcd.drawSprite(x, 48 - 4y, 4, 4, (int *)left_racer);
el19tb 31:70521f37e004 90 break;
el19tb 31:70521f37e004 91 case 'R' : lcd.drawSprite(x, 48 - 4*y, 4, 4, (int *)right_racer);
el19tb 31:70521f37e004 92 break;
el19tb 31:70521f37e004 93 case 'B': lcd.drawSprite(x, 48 - 4*y, 4, 6, (int *)bus);
el19tb 31:70521f37e004 94 break;
el19tb 31:70521f37e004 95 case 'N': lcd.drawSprite(x, 48 - 4*y, 4, 4, (int *)right_normal);
el19tb 31:70521f37e004 96 break;
el19tb 31:70521f37e004 97 case 'X': lcd.drawSprite(x, 48 - 4*y, 4, 4, (int *)left_normal);
el19tb 31:70521f37e004 98 break;
el19tb 31:70521f37e004 99 case '-': lcd.drawSprite(x, 48 - 4*y, 4, 4, FILL_WHITE);
el19tb 31:70521f37e004 100 break;
el19tb 31:70521f37e004 101 }
el19tb 31:70521f37e004 102 }
el19tb 31:70521f37e004 103
el19tb 31:70521f37e004 104 void GraphicEngine::showIndividualCar(Car *car){
el19tb 31:70521f37e004 105 DrawCar temp_car;
el19tb 31:70521f37e004 106
el19tb 31:70521f37e004 107 temp_car.x = car->vehicle.x;
el19tb 31:70521f37e004 108 temp_car.y = car->vehicle.y;
el19tb 31:70521f37e004 109 temp_car.width = car->vehicle.width;
el19tb 31:70521f37e004 110 temp_car.height = car->vehicle.height;
el19tb 31:70521f37e004 111
el19tb 31:70521f37e004 112 displayCar(temp_car);
el19tb 31:70521f37e004 113 }
el19tb 31:70521f37e004 114
el19tb 31:70521f37e004 115 void GraphicEngine::showWater(Water *water)
el19tb 31:70521f37e004 116 {
el19tb 31:70521f37e004 117 for(int i = 0; i < 22; i++)
el19tb 31:70521f37e004 118 {
el19tb 31:70521f37e004 119 showIndividualWater(&water[i]);
el19tb 31:70521f37e004 120 }
el19tb 31:70521f37e004 121 }
el19tb 31:70521f37e004 122
el19tb 31:70521f37e004 123 void GraphicEngine::showIndividualWater(Water *water)
el19tb 31:70521f37e004 124 {
el19tb 31:70521f37e004 125 // POTENTIAL BUG, add break later
el19tb 31:70521f37e004 126 switch(water->sprite){
el19tb 31:70521f37e004 127 case 'F':
el19tb 31:70521f37e004 128 displayFirstWater(water);
el19tb 31:70521f37e004 129 case 'S':
el19tb 31:70521f37e004 130 displaySecondWater(water);
el19tb 31:70521f37e004 131 case 'T':
el19tb 31:70521f37e004 132 displayThirdWater(water);
el19tb 31:70521f37e004 133 }
el19tb 31:70521f37e004 134 }
el19tb 31:70521f37e004 135
el19tb 31:70521f37e004 136 void GraphicEngine::drawWater(std::vector<Water> &water_lane)
el19tb 31:70521f37e004 137 {
el19tb 31:70521f37e004 138 Water temp;
el19tb 31:70521f37e004 139 for(unsigned int i = 0; i < water_lane.size(); i++)
el19tb 31:70521f37e004 140 {
el19tb 31:70521f37e004 141 temp.x = water_lane[i].x;
el19tb 31:70521f37e004 142 temp.row = water_lane[i].row;
el19tb 31:70521f37e004 143 temp.char = water_lane[i].c;
el19tb 31:70521f37e004 144
el19tb 31:70521f37e004 145 drawIndividualWater(&temp);
el19tb 31:70521f37e004 146 }
el19tb 31:70521f37e004 147 }
el19tb 31:70521f37e004 148
el19tb 31:70521f37e004 149 void GraphicEngine::showIndividualWater(Water &temp)
el19tb 31:70521f37e004 150 {
el19tb 31:70521f37e004 151 switch(temp.c)
el19tb 31:70521f37e004 152 {
el19tb 31:70521f37e004 153 case 'F':
el19tb 31:70521f37e004 154 lcd.drawSprite(temp.x,48 - 4*temp.y, 4, 4, (int *)first_water);
el19tb 31:70521f37e004 155 break;
el19tb 31:70521f37e004 156 case 'S':
el19tb 31:70521f37e004 157 lcd.drawSprite(temp.x,48 - 4*temp.y, 4, 4, (int *)second_water);
el19tb 31:70521f37e004 158 break;
el19tb 31:70521f37e004 159 case 'T':
el19tb 31:70521f37e004 160 lcd.drawSprite(temp.x, 48 - 4*temp.y, 4, 4, (int *)third_water);
el19tb 31:70521f37e004 161 break;
el19tb 31:70521f37e004 162 }
el19tb 31:70521f37e004 163 }
el19tb 31:70521f37e004 164
el19tb 31:70521f37e004 165 // water = ','
el19tb 31:70521f37e004 166 void GraphicEngine::drawWater(char water, int x, int y, int row, in col)
el19tb 31:70521f37e004 167 {
el19tb 31:70521f37e004 168 int rand_water = 0;
el19tb 31:70521f37e004 169 rand_water = (rand() % 3) + 1;
el19tb 31:70521f37e004 170
el19tb 31:70521f37e004 171 // for design purposes the water will have different sprites
el19tb 31:70521f37e004 172 switch(rand_water)
el19tb 31:70521f37e004 173 {
el19tb 31:70521f37e004 174 case 1:
el19tb 31:70521f37e004 175 lcd.drawSprite(x, y, rows, cols, (int *)first_water);
el19tb 31:70521f37e004 176
el19tb 31:70521f37e004 177 case 2:
el19tb 31:70521f37e004 178 lcd.drawSprite(x, y, rows, cols, (int *)second_water);
el19tb 31:70521f37e004 179
el19tb 31:70521f37e004 180 case 3:
el19tb 31:70521f37e004 181 lcd.drawSprite(x, y, rows, cols, (int *)third_water);
el19tb 31:70521f37e004 182 }
el19tb 31:70521f37e004 183 }
el19tb 31:70521f37e004 184
el19tb 31:70521f37e004 185 void GraphicEngine::displayCar(DrawCar &size)
el19tb 31:70521f37e004 186 {
el19tb 31:70521f37e004 187 lcd.drawRect(size.x, size.y, size.width, size.height, FILL_TRANSPARENT);
el19tb 31:70521f37e004 188 }
el19tb 31:70521f37e004 189
el19tb 31:70521f37e004 190 void GraphicEngine::getRoadObjects(const std::vector<Background>& road_lanes)
el19tb 31:70521f37e004 191 {
el19tb 31:70521f37e004 192 DrawRoad road;
el19tb 31:70521f37e004 193
el19tb 31:70521f37e004 194 for(unsigned int i = 0; i < road_lanes.size(); i++)
el19tb 31:70521f37e004 195 {
el19tb 31:70521f37e004 196 road.x = road_lanes[i].x;
el19tb 31:70521f37e004 197 road.row = road_lanes[i].row;
el19tb 31:70521f37e004 198 drawIndividualRoadObj(road);
el19tb 31:70521f37e004 199 }
el19tb 31:70521f37e004 200 }
el19tb 31:70521f37e004 201
el19tb 31:70521f37e004 202 void GraphicEngine::drawIndividualRoadObj(DrawRoad &obj)
el19tb 31:70521f37e004 203 {
el19tb 31:70521f37e004 204 lcd.drawSprite(obj.x, 48 - 4*obj.y, 4, 4, (int *) road);
el19tb 31:70521f37e004 205 }
el19tb 31:70521f37e004 206
el19tb 31:70521f37e004 207 void GraphicEngine::printTest(){
el19tb 31:70521f37e004 208 lcd.printString("SQUISHED", 1, 1);
el19tb 31:70521f37e004 209 }
el19tb 31:70521f37e004 210
el19tb 31:70521f37e004 211 void GraphicEngine::print(){
el19tb 31:70521f37e004 212 lcd.printString("DROWNED",1,1);
el19tb 31:70521f37e004 213 }
el19tb 31:70521f37e004 214
el19tb 31:70521f37e004 215 void GraphicEngine::contrast(){
el19tb 31:70521f37e004 216 lcd.setContrast(0.4);
el19tb 31:70521f37e004 217 }
el19tb 31:70521f37e004 218
el19tb 31:70521f37e004 219 void GraphicEngine::clear(){
el19tb 31:70521f37e004 220 lcd.clear();
el19tb 31:70521f37e004 221 }
el19tb 31:70521f37e004 222
el19tb 31:70521f37e004 223 void GraphicEngine::refresh(){
el19tb 31:70521f37e004 224 lcd.refresh();
el19tb 31:70521f37e004 225 }
el19tb 31:70521f37e004 226
el19tb 31:70521f37e004 227 void GraphicEngine::backLightOn(){
el19tb 31:70521f37e004 228 lcd.backLightOn();
el19tb 31:70521f37e004 229 }