* Remove most unused WIN32 stuff.
[matthijs/ABM2.git] / ABM2 / Playground.cpp
index 41c8b4b55fd81e407adec9a2e3202dc2f2fbdb0d..38c905f9907d117325c924dfadf071b1888c7440 100755 (executable)
 #include "Engine/VideoUpdate.h"\r
 #include "SchemeReader.h"\r
 \r
-#if WIN32\r
-LPD3DXSPRITE d3dspt;\r
-LPD3DXFONT font;\r
-\r
-#endif\r
-\r
 Playground::Playground(CKernel* kernel) : ITask(kernel) { }\r
 \r
 bool Playground::Start()\r
 {\r
-       #if WIN32\r
-       background = NULL;\r
-       foreground = NULL;\r
-       font = NULL;\r
-       HRESULT res;\r
-\r
-       D3DXCreateSprite(d3ddev, &d3dspt);    // create the Direct3D Sprite object\r
-       res = D3DXCreateFont(d3ddev, 15, 10, 0, 1, false, 0, OUT_TT_ONLY_PRECIS, 0, 0, L"times new roman", &font);\r
-       if (res != S_OK)\r
-       {\r
-               switch (res)\r
-               {\r
-                       case D3DERR_INVALIDCALL:\r
-                               foreground = NULL;\r
-                               break;\r
-                       case D3DXERR_INVALIDDATA:\r
-                               foreground = NULL;\r
-                               break;\r
-                       case E_OUTOFMEMORY:\r
-                               foreground = NULL;\r
-                               break;\r
-                       default:\r
-                               foreground = NULL;\r
-               }\r
-       }\r
-\r
-       res = D3DXCreateTextureFromFile(d3ddev, L"data/field0.png", &background);\r
-       //res = D3DXCreateTextureFromFile(d3ddev, L"data/tiles0.png", &foreground);\r
-       res = D3DXCreateTextureFromFileEx(d3ddev, L"data/tiles0.png", D3DX_DEFAULT, D3DX_DEFAULT, 1, 0, D3DFMT_UNKNOWN,\r
-               D3DPOOL_DEFAULT ,D3DX_DEFAULT, D3DX_DEFAULT, D3DCOLOR_ARGB(0, 248, 0, 248), NULL, NULL, &foreground);\r
-       if (res != D3D_OK)\r
-       {\r
-               switch (res)\r
-               {\r
-                       case D3DERR_NOTAVAILABLE:\r
-                               foreground = NULL;\r
-                               break;\r
-                       case D3DERR_OUTOFVIDEOMEMORY:\r
-                               foreground = NULL;\r
-                               break;\r
-                       case D3DERR_INVALIDCALL:\r
-                               foreground = NULL;\r
-                               break;\r
-                       case D3DXERR_INVALIDDATA:\r
-                               foreground = NULL;\r
-                               break;\r
-                       case E_OUTOFMEMORY:\r
-                               foreground = NULL;\r
-                               break;\r
-                       default:\r
-                               foreground = NULL;\r
-               }\r
-       }\r
-\r
-       #endif\r
        // init playing field\r
        SchemeReader *scheme = new SchemeReader("Data/schemes/BASIC.SCH");\r
-       for (int i=0; i<PLAYGROUND_COLS; ++i) \r
-       {\r
-               for (int j=0; j<PLAYGROUND_ROWS; ++j)\r
-               {\r
-                       field[i][j] = NULL;\r
-               }\r
-       }\r
 \r
+       CMMPointer<Sprite> tile_sprite = this->getKernel()->getSpriteManager()->getSprite(SPR_TILE);\r
        // put in non-destructible blocks\r
-       for (int i=0; i<PLAYGROUND_COLS; i++) \r
-               for (int j=0; j<PLAYGROUND_ROWS; j++)\r
-                       switch(scheme->PlayField[j*PLAYGROUND_NUMFIELD_X+i]) {\r
+       for (int col=0; col<PLAYGROUND_COLS; col++) \r
+       {\r
+               for (int row=0; row<PLAYGROUND_ROWS; row++)\r
+               {\r
+                       int subsprite = -1;\r
+                       switch(scheme->PlayField[row*PLAYGROUND_NUMFIELD_X+col]) {\r
                                case BRICK:\r
-                                       //field[i][j] = new Item(foreground, 0, FIELD_UNIT_WIDTH, FIELD_UNIT_HEIGHT, i, j);\r
+                                       subsprite = SPR_SUB_BRICK;\r
                                        break;\r
                                case SOLID:\r
-                                       #ifdef WIN32\r
-                                       field[i][j] = new Item(foreground, 1, FIELD_UNIT_WIDTH, FIELD_UNIT_HEIGHT, i, j);\r
-                                       #endif // WIN32\r
+                                       subsprite = SPR_SUB_SOLID;\r
                                        break;\r
                        }\r
+                       if (subsprite != -1)\r
+                               field[col][row] = new Tile(tile_sprite, subsprite, col, row);\r
+                       else\r
+                               field[col][row] = NULL;\r
+               }\r
+       }\r
 /*\r
        // put in desctructible blocks with chance 90%\r
        for (int i=0; i<PLAYGROUND_COLS; i+=2) \r
                for (int j=0; j<PLAYGROUND_ROWS; ++j)\r
-                       if ((double)rand()/RAND_MAX <= 0.9) field[i][j] = new Item(foreground, 0, i, j);\r
+                       if ((double)rand()/RAND_MAX <= 0.9) field[i][j] = new Tile(foreground, 0, i, j);\r
        for (int i=1; i<PLAYGROUND_COLS; i+=2) \r
                for (int j=0; j<PLAYGROUND_ROWS; j+=2)\r
-                       if ((double)rand()/RAND_MAX <= 0.9) field[i][j] = new Item(foreground, 0, i, j);\r
+                       if ((double)rand()/RAND_MAX <= 0.9) field[i][j] = new Tile(foreground, 0, i, j);\r
 */     \r
        // put in a player\r
        bomberman = new Bomberman(20, 66);\r
@@ -127,17 +67,7 @@ void Playground::Update()
 {\r
        CMMPointer<Sprite> s = this->getKernel()->getSpriteManager()->getSprite(SPR_FIELD);\r
        \r
-       s->blit(0, 0, 1.0, 1.0, 0, 0, COLOUR_RGBA(0, 0, 255, 255));\r
-       #ifdef WIN32\r
-       if(CInputTask::keyDown(DIK_ESCAPE))CKernel::GetSingleton().KillAllTasks();\r
-\r
-       d3dspt->Begin(NULL);    // begin sprite drawing\r
-\r
-       // draw the sprite\r
-       D3DXVECTOR3 center(0.0f, 0.0f, 0.0f);    // center at the upper-left corner\r
-       D3DXVECTOR3 position(0.0f, 0.0f, 0.0f);    // position at 50, 50 with no depth\r
-       d3dspt->Draw(background, NULL, NULL, NULL, D3DCOLOR_XRGB(255, 255, 255));\r
-\r
+       s->blit(0, 0, 1.0, 1.0, 0, 0, COLOUR_RGBA(255, 255, 255, 255));\r
        for (int i=0; i<PLAYGROUND_COLS; ++i) \r
        {\r
                for (int j=0; j<PLAYGROUND_ROWS; ++j)\r
@@ -146,6 +76,7 @@ void Playground::Update()
                }\r
        }\r
 \r
+       #ifdef WIN32\r
        bomberman->Update();\r
        if (CInputTask::keyDown(DIK_RIGHT)) this->move_right();\r
        if (CInputTask::keyDown(DIK_LEFT)) this->move_left();\r
@@ -190,12 +121,6 @@ void Playground::Stop()
                        if (field[i][j] != NULL) delete field[i][j];\r
 \r
        if (bomberman != NULL) delete bomberman;\r
-       #ifdef WIN32\r
-       if (background != NULL) background->Release();\r
-       if (foreground != NULL) foreground->Release();\r
-       if (d3dspt != NULL) d3dspt->Release();\r
-       if (font != NULL) font->Release();\r
-       #endif // WIN32\r
 }\r
 \r
 void Playground::move_down()\r
@@ -494,32 +419,26 @@ void Bomberman::move_to_direction(TMoveDirection dir)
 }\r
 \r
 // =============================================\r
-// Item class\r
+// Tile class\r
 // =============================================\r
 \r
-#ifdef WIN32\r
-Item:: Item(LPDIRECT3DTEXTURE9 t, int texnr, int subwidth, int subheight, int colnr, int rownr)\r
+Tile::Tile(const CMMPointer<Sprite> &sprite, int subsprite, int col, int row)\r
 {\r
-       texture = t;\r
-       col = colnr;\r
-       row = rownr;\r
-       tex_num = texnr;\r
-       subitem_height = subheight;\r
-       subitem_width = subwidth;\r
+       this->sprite = sprite;\r
+       this->col = col;\r
+       this->row = row;\r
+       this->subsprite = subsprite;\r
 }\r
-#endif // WIN32\r
 \r
-Item::~Item()\r
+Tile::~Tile()\r
 {\r
 }\r
-\r
-#ifdef WIN32\r
-void Item::Draw()\r
+void Tile::Draw()\r
 {\r
-       D3DXVECTOR3 center(0.0f, 0.0f, 0.0f);    // center at the upper-left corner\r
-       D3DXVECTOR3 position((FLOAT)PLAYGROUND_BORDER_LEFT+subitem_width*col, (FLOAT)PLAYGROUND_BORDER_TOP+subitem_height*row, 0.0f);    // position at 50, 50 with no depth\r
-       RECT rect = {tex_num*subitem_width,0,(tex_num+1)*subitem_width,subitem_height};\r
-       d3dspt->Draw(texture, &rect, &center, &position, D3DCOLOR_ARGB(255, 255,255,255));\r
+       this->sprite->blit(\r
+               PLAYGROUND_BORDER_LEFT + this->col * FIELD_UNIT_WIDTH,\r
+               PLAYGROUND_BORDER_TOP + this->row * FIELD_UNIT_HEIGHT,\r
+               1.0, 1.0, this->subsprite, 0, COLOUR_RGBA(255, 255, 255, 255)\r
+       );\r
 }\r
 \r
-#endif // WIN32\r