ELEC2645 (2019/20) / Mbed 2 deprecated ELEC2645_Project_el19tb

Dependencies:   mbed

Revision:
42:04e326dcf09b
Parent:
35:db257b7bdefc
Child:
43:2cd1cfe07770
--- a/GraphicEngine/GraphicEngine.cpp	Mon May 18 03:12:30 2020 +0000
+++ b/GraphicEngine/GraphicEngine.cpp	Mon May 18 04:39:06 2020 +0000
@@ -1,207 +1,92 @@
 #include "GraphicEngine.h"
 
-N5110 lcd;
+GraphicEngine::GraphicEngine(){}
 
-GraphicEngine::GraphicEngine(Chicken *chicken){
-    this->chick = chicken;
-}
-
-void GraphicEngine::init(){
+void GraphicEngine::init()
+{
     lcd.init();
 }
 
-void GraphicEngine::showChicken(){
-    //fill the chicken with black color
-    lcd.drawRect(chick->x, chick->y, chick->width, chick->width, FILL_BLACK);
+/* TO-DO: ADD CONTROLS FOR BACKLIGHT */
+void GraphicEngine::contrast()
+{
+    lcd.setContrast(0.4);  
+}
+
+void GraphicEngine::clear()
+{
+    lcd.clear();
 }
 
-void GraphicEngine::createSafetyLanes(const std::vector<Safety>& safety_lane)
+void GraphicEngine::refresh()
+{
+    lcd.refresh();
+}
+
+void GraphicEngine::backLightOn()
 {
-    Safety temp;
-    for(unsigned int i = 0; i < safety_lane.size(); i++){
-        temp.x = safety_lane[i].x;
-        temp.row = safety_lane[i].row;
-        temp.c = safety_lane[i].c;
-       
-        drawIndividualSafety(temp);    
+    lcd.backLightOn();
+}
+
+void GraphicEngine::showObj(Object &obj)
+{
+    if(obj.object.c = 'G' || obj.object.c = 'M' || obj.object.c = 'T') {
+        displayLog(obj.object.x, obj.object.y, obj.object.c);
+    } else {
+        displayVehicle(obj.object.x, obj.object.y, obj.object.c);
     }
 }
 
-void GraphicEngine::drawIndividualSafety(&Safety lane_obj)
+void GraphicEngine::displayVehicle(int x, int y, char c)
 {
-    switch(lane_obj.c)
+    switch(c)
     {
-        case 'K':
-            lcd.drawSprite(lane_obj.x, 48 - 4*lane_obj.row, 4, 4, (int *)safety_lanes_one);  
+        case 'L': lcd.drawSprite(x, y, 4, 6, (int *)left_racer);
+            break;
+        case 'R' : lcd.drawSprite(x, y, 4, 6, (int *)right_racer);
+            break;
+        case 'B': lcd.drawSprite(x, y, 4, 7, (int *)bus);
             break;
-        case 'K':  
-            lcd.drawSprite(lane_obj.x, 48 - 4*lane_obj.row, 4, 4, (int *)safety_lanes_two);  
-            break;  
-    }      
+        case 'N': lcd.drawSprite(x, y, 4, 5, (int *)right_normal);
+            break;
+        case 'X': lcd.drawSprite(x, y, 4, 5, (int *)left_normal);
+            break;
+    } 
 }
 
-void GraphicEngine::drawFirstSafetyBackground(int x, int row)
+void GraphicEngine::displayLog(int x, int y, char c)
 {
-    lcd.drawSprite(x, 48 - 4*row, 4, 4, (int *)safety_lanes_one);  
+    switch(c)
+    {
+        case 'G':
+            lcd.drawSprite(x, y, 4, 4, (int *)big_log);  
+            break;
+
+        case 'M':
+            lcd.drawSprite(x, y, 4, 4, (int *)medium_log);  
+            break;
+
+        case 'T':
+            lcd.drawSprite(x, y, 4, 4, (int *)turtles);  
+            break;
+    }
 }
 
-void GraphicEngine::drawSecondSafetyBackground(int x, int row)
+/* TO-DO: ADD SPRITES AND SPRITE STATE */
+void GraphicEngine::showFrog(Frog &frog)
 {
-    lcd.drawSprite(x, 48 - 4*row, 4, 4, (int *)safety_lane_two);  
-)
+    lcd.drawRect(frog.x, frog.y, frog.width, frog.height, FILL_BLACK);
+}
 
 void GraphicEngine::drawGoal(int x, int row)
 {
     lcd.drawSprite(x, row, 8, 8, (int *)end_post);      
 }  
 
-// this is just going to be white blocks
-// road == '.'
-void GraphhicEngine::drawRoads(int row)
-{
-    // draw across the screen width
-    for(int a = 0; a < 22; a++){
-        showEachRoad(a, row); // x pos is the value of a  
-    }
-}
-
-void GraphicEngine::showEachRoad(int x, int row)
-{
-    lcd.drawSprite(x, 48 - 4*row,4, 4, (int *)road);
-}
-
-void GraphicEngine::showCar(Car *car){        
-    // safety lane
-    lcd.drawRect(0, 48 - 4, 84, 4, FILL_TRANSPARENT);
-    lcd.drawRect(0, 48 - 4*6, 84, 4, FILL_TRANSPARENT);
-       
-    // draw to screen0
-    // create an enum to determine the vehicle type
-    for(int y = 0; y < 4; y++){
-        showIndividualCar(&car[y]);
-    }
-}
-
-void GraphicEngine::displayVehicle(int x, int row, char c)
-{
-    switch(obj)
-    {
-        case 'L': lcd.drawSprite(x, 48 - 4y, 4, 4, (int *)left_racer);
-            break;
-        case 'R' : lcd.drawSprite(x, 48 - 4*y, 4, 4, (int *)right_racer);
-            break;
-        case 'B': lcd.drawSprite(x, 48 - 4*y, 4, 6, (int *)bus);
-            break;
-        case 'N': lcd.drawSprite(x, 48 - 4*y, 4, 4, (int *)right_normal);
-            break;
-        case 'X': lcd.drawSprite(x, 48 - 4*y, 4, 4, (int *)left_normal);
-            break;
-        case '-': lcd.drawSprite(x, 48 - 4*y, 4, 4, FILL_WHITE);
-            break;
-    }    
-}
- 
-void GraphicEngine::showIndividualCar(Car *car){
-    DrawCar temp_car;
-   
-    temp_car.x = car->vehicle.x;
-    temp_car.y = car->vehicle.y;
-    temp_car.width = car->vehicle.width;
-    temp_car.height = car->vehicle.height;
-   
-    displayCar(temp_car);
-}
-
-void GraphicEngine::showWater(Water *water)
-{
-    for(int i = 0; i < 22; i++)
-    {
-        showIndividualWater(&water[i]);    
-    }
-}
-
-void GraphicEngine::showIndividualWater(Water *water)
-{
-    // POTENTIAL BUG, add break later
-    switch(water->sprite){
-        case 'F':
-            displayFirstWater(water);
-        case 'S':
-            displaySecondWater(water);
-        case 'T':
-            displayThirdWater(water);
-    }  
-}
-
-void GraphicEngine::drawWater(std::vector<Water> &water_lane)
-{
-    Water temp;
-    for(unsigned int i = 0; i < water_lane.size(); i++)
-    {
-        temp.x = water_lane[i].x;
-        temp.row = water_lane[i].row;
-        temp.char = water_lane[i].c;
-       
-        drawIndividualWater(&temp);
-    }  
-}
-
-void GraphicEngine::showIndividualWater(Water &temp)
-{
-    switch(temp.c)
-    {
-        case 'F':
-            lcd.drawSprite(temp.x,48 - 4*temp.y, 4, 4, (int *)first_water);  
-            break;
-        case 'S':
-            lcd.drawSprite(temp.x,48 - 4*temp.y, 4, 4, (int *)second_water);  
-            break;
-        case 'T':
-            lcd.drawSprite(temp.x, 48 - 4*temp.y, 4, 4, (int *)third_water);  
-            break;
-    }
-}
-
-// water = ','
-void GraphicEngine::drawWater(char water, int x, int y, int row, in col)
-{
-    int rand_water = 0;
-    rand_water = (rand() % 3) + 1;
-   
-    // for design purposes the water will have different sprites
-    switch(rand_water)
-    {
-        case 1:
-            lcd.drawSprite(x, y, rows, cols, (int *)first_water);
-           
-        case 2:
-            lcd.drawSprite(x, y, rows, cols, (int *)second_water);
-           
-        case 3:
-            lcd.drawSprite(x, y, rows, cols, (int *)third_water);
-    }
-}
-
-void GraphicEngine::displayCar(DrawCar &size)
-{
-     lcd.drawRect(size.x, size.y, size.width, size.height, FILL_TRANSPARENT);                                                        
-}
-
-void GraphicEngine::getRoadObjects(const std::vector<Background>& road_lanes)
-{
-    DrawRoad road;
-   
-    for(unsigned int i = 0; i < road_lanes.size(); i++)
-    {
-        road.x = road_lanes[i].x;
-        road.row = road_lanes[i].row;
-        drawIndividualRoadObj(road);
-    }
-}
-
-void GraphicEngine::drawIndividualRoadObj(DrawRoad &obj)
-{
-    lcd.drawSprite(obj.x, 48 - 4*obj.y, 4, 4, (int *) road);  
+void GraphicEngine::drawSafetyLanes()
+{        
+    lcd.drawRect(0, 48 - 4, 84, 4, FILL_TRANSPARENT); // row 0 -> bottom
+    lcd.drawRect(0, 48 - 4*6, 84, 4, FILL_TRANSPARENT); // row 6 -> middle(ish)
 }
 
 void GraphicEngine::printTest(){
@@ -211,19 +96,3 @@
 void GraphicEngine::print(){
     lcd.printString("DROWNED",1,1);  
 }
-
-void GraphicEngine::contrast(){
-    lcd.setContrast(0.4);  
-}
-
-void GraphicEngine::clear(){
-    lcd.clear();
-}
-
-void GraphicEngine::refresh(){
-    lcd.refresh();
-}
-
-void GraphicEngine::backLightOn(){
-    lcd.backLightOn();
-}
\ No newline at end of file