Josh Davy / Mbed 2 deprecated Flip

Dependencies:   mbed el17jd

Revision:
9:96969b1c6bde
Parent:
8:21b6d4dbce44
Child:
10:58cf89dd878c
--- a/Game/Game.cpp	Fri Apr 19 17:54:09 2019 +0000
+++ b/Game/Game.cpp	Wed Apr 24 10:18:45 2019 +0000
@@ -1,22 +1,6 @@
 #include "Game.h"
-// Objects
-
-
-
 
-const int number_of_blocks = 4;
-Block  blocks [number_of_blocks] = {
-    { {5,30},{80,40} },
-    { {5,5},{80,10} },
-    { {10,24},{20,34} },
-    { {40,24},{44,26} }
-};
-
-const int number_of_moving_blocks = 1;
-MovingBlock moving_blocks [number_of_moving_blocks] = {
-    {2,30,30,1,1,0,0}
-    };
-
+// Objects
 Game::Game()
 {
 
@@ -24,16 +8,58 @@
 
 
 }
+
+void Game::load_level(int level_number)
+{
+    LevelDefinition level_def;
+    switch(level_number) {
+        case 1 :
+            level_def = level_1;
+            break;
+        case 2:
+            level_def = level_2;
+            break;
+        case 3:
+            level_def = level_3;
+            break;
+        case 4:
+            level_def = level_4;
+            break;
+        case 5:
+            level_def = level_5;
+            break;
+        case 6:
+            level_def = level_6;
+            break;
+        case 7:
+            level_def = level_7;
+            break;
+        case 8:
+            _game_won = true;
+            return;
+
+
+    }
+    
+    _player.init(6,6,level_def.initial_pos);
+    _level.init(level_def.blocks,
+                level_def.number_of_blocks,
+                level_def.goal);
+
+
+    for (int i = 0; i < level_def.number_of_moving_blocks; i++) {
+        MovingBlockDefinition x = level_def.moving_blocks[i];
+        _level.declare_moving_block(x.index,x.extending,x.distance);
+    }
+
+}
+
 void Game::init()
 {
-    Vector2D pos = {32,10};
-    _player.init(6,6,pos); 
-    
-    Vector2D goal = {70,19};
-    _level.init(blocks,moving_blocks,number_of_blocks,
-                number_of_moving_blocks,
-                goal);    
-    
+
+    load_level(1);
+    _current_level = 1;
+    _game_won = false;
 }
 
 Game::~Game()
@@ -41,20 +67,24 @@
 
 }
 
-void Game::read_input(Gamepad &pad)
-{
 
-}
 
 void Game::update(Gamepad &pad)
 {
-     
-    _player.update(pad, blocks,number_of_blocks);
+    _player.update(pad, _level.get_blocks(),_level.get_number_of_blocks());
+    _level.update_moving_blocks();
+    if (_player.check_goal_reached(_level.get_goal())) {
+        _current_level += 1;
+        load_level(_current_level);
+    }
+
+
 }
 
+
 void Game::draw(N5110 &lcd)
 {
-   
+
     lcd.clear();
     _level.render(lcd);
     _player.render(lcd);
@@ -62,3 +92,8 @@
 
 }
 
+
+bool Game::game_won()
+{
+    return _game_won;
+}