]> Shamusworld >> Repos - warehouse-man-deluxe/blobdiff - src/gameboard.cpp
Added/fixed editor, added play level functionality.
[warehouse-man-deluxe] / src / gameboard.cpp
index e39d2e56b22e2f202326c6e73915d9bc7eb2d5e7..0d1216f1c0bfbd1b16bfbadc2dc1ad0fb9197554 100644 (file)
@@ -15,6 +15,7 @@
 #include <string.h>
 //#include <stdio.h>   // for printf()
 #include "boards.h"
+#include "editorwidget.h"      // for Level
 
 
 GameBoard::GameBoard(int boardNumber)
@@ -60,6 +61,42 @@ GameBoard::GameBoard(int boardNumber)
 }
 
 
+GameBoard::GameBoard(Level * level)
+{
+       Point size, corner;
+
+       EditorWidget::GetSizeAndCorner(level, size, corner);
+
+       width = size.x;
+       height = size.y;
+       boardLength = width * height;
+       board = new char[boardLength];
+       initialBoard = new char[boardLength];
+       name = level->name;
+
+       int current = 0;
+
+       for(int y=0; y<size.y; y++)
+       {
+               for(int x=0; x<size.x; x++)
+               {
+                       uint8_t tile = level->board[corner.x + x][corner.y + y];
+
+                       if (tile & GTMan)
+                       {
+                               initialX = x;
+                               initialY = y;
+                               tile &= ~GTMan;
+                       }
+
+                       initialBoard[current++] = tile;
+               }
+       }
+
+       ResetGame();
+}
+
+
 GameBoard::~GameBoard()
 {
        if (board)