summaryrefslogtreecommitdiffstats
path: root/matchblox/C_MatchBloxEngine.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'matchblox/C_MatchBloxEngine.cpp')
-rw-r--r--matchblox/C_MatchBloxEngine.cpp348
1 files changed, 0 insertions, 348 deletions
diff --git a/matchblox/C_MatchBloxEngine.cpp b/matchblox/C_MatchBloxEngine.cpp
deleted file mode 100644
index 7e17b1b..0000000
--- a/matchblox/C_MatchBloxEngine.cpp
+++ /dev/null
@@ -1,348 +0,0 @@
-#include <GL/glut.h>
-
-#include <time.h>
-#include <string>
-#include <iostream>
-
-#include "C_MatchBloxEngine.h"
-
-#include "C_3DObject.h"
-#include "C_Environment.h"
-#include "C_Hand.h"
-#include "C_Block.h"
-#include "C_Box.h"
-#include "C_Log.h"
-#include "bitmap.h"
-
-C_MatchBloxEngine::C_MatchBloxEngine(const char *f_strModelPath,
- const char *f_strLogFile)
-{
- //create logger
-
-
- //Load models
- if (LoadModels(f_strModelPath))
- {
- //set state to initialised;
- m_State = ES_INITIALISED;
- }
- else
- {
- m_State = ES_ERROR;
- }
-
- //initialise a random seed
- srand ( time(NULL) );
-
- //init vars
- m_CurrentBox = BS_SMALL;
-
- //debug
- m_pBox[0]->SetPos(0.0, -5.0, -15.0);
- m_pBox[0]->SetRot(45.0, 0.0, 0.0);
- m_pBox[0]->RandomizeTiles();
-
- m_pBlock[0]->SetPos(-6.0, 1.0, -10.0);
- m_pBlock[0]->SetRot(90.0, 0.0, 0.0);
- m_pBlock[1]->SetPos(-2.0, 1.0, -10.0);
- m_pBlock[1]->SetRot(90.0, 0.0, 0.0);
- m_pBlock[2]->SetPos(2.0, 1.0, -10.0);
- m_pBlock[2]->SetRot(90.0, 0.0, 0.0);
- m_pBlock[3]->SetPos(6.0, 1.0, -10.0);
- m_pBlock[3]->SetRot(90.0, 0.0, 0.0);
-}
-
-C_MatchBloxEngine::~C_MatchBloxEngine()
-{
- //destroy logger
-
- //delete models
- DeleteModels();
-}
-
-GameResult C_MatchBloxEngine::GameStep(msgQueue &f_Queue)
-{
- //process message queue
- return GR_ERROR;
-}
-
-void C_MatchBloxEngine::Render_Basics(unsigned int f_uiElapsedTime)
-{
- //render the environment
- m_pEnvMap->Render();
-
- m_pBox[(intptr_t)m_CurrentBox]->Render();
- for (int i=0; i<4; i++)
- m_pBlock[i]->Render(f_uiElapsedTime);
-// m_pHand->Render(f_uiElapsedTime);
-}
-
-void C_MatchBloxEngine::Render(unsigned int f_uiElapsedTime)
-{
- switch (m_State)
- {
- case ES_INITIALISED:
- Render_Basics(f_uiElapsedTime);
- break;
-
- case ES_ERROR:
- //render a red cube
- glPushMatrix();
- glPushAttrib(GL_ENABLE_BIT);
- glDisable(GL_LIGHTING);
- glColor3d(1.0, 0.0, 0.0);
- glTranslated(0.0, 0.0, -5.0);
- glutSolidCube(5.0);
- glPopAttrib();
- glPopMatrix();
- break;
-
- case ES_GET_READY:
- Render_Basics(f_uiElapsedTime);
- //render some GET READY text
- break;
-
- case ES_PLAYING_GRAB_BLOCK:
- Render_Basics(f_uiElapsedTime);
- break;
-
- case ES_PLAYING_PUT_BLOCK:
- Render_Basics(f_uiElapsedTime);
- break;
-
- case ES_PAUSED:
- Render_Basics(f_uiElapsedTime);
- //render menu??
- break;
-
- case ES_FINISHED:
- //render results...
- break;
- }
-
- //glPushMatrix();
-
- //double l_dSeconds = (double)f_uiElapsedTime/1000.0;
-
- //glRotated(l_dSeconds * 5.0, 0.0, 1.0, 0.0);
- ////glRotated(l_dSeconds * 10, 0.0, 0.0, 1.0);
-
- //m_pEnvMap->Render();
-
- //glPopMatrix();
-
- //m_pBox[0]->Render();
-
- //for(int i=0; i<4; i++)
- //{
- // glPushMatrix();
- // m_pBlock[i]->Render(f_uiElapsedTime);
- // glPopMatrix();
- //}
-
-}
-
-bool C_MatchBloxEngine::NewGame(int f_iUserID, int f_iGameId, BoxSize f_BS)
-{
- if(m_State == ES_INITIALISED)
- {
- //log new game
-
- //prepare a fresh box
- m_CurrentBox = f_BS;
- m_pBox[(int)m_CurrentBox]->RandomizeTiles();
-
- //set state to GET READY
- m_State = ES_GET_READY;
-
- //init object positions
- m_pBox[(int)m_CurrentBox]->SetPos(0.0, -6.0, -15.0);
- return true;
- }
-
- return false;
-}
-
-bool C_MatchBloxEngine::StartGame()
-{
- return false;
-}
-
-bool C_MatchBloxEngine::Pause()
-{
- //only pause when playing
- if (m_State == ES_PLAYING_GRAB_BLOCK ||
- m_State == ES_PLAYING_PUT_BLOCK)
- {
- //save current state
- m_SavedState = m_State;
-
- //probably do something with a time variable
-
- //set current state to paused
- m_State = ES_PAUSED;
-
- return true;
- }
-
- return false;
-}
-
-bool C_MatchBloxEngine::Resume()
-{
- if (m_State == ES_PAUSED)
- {
- //restore previous state
- m_State = m_SavedState;
-
- //restore timers
- //
-
- return true;
- }
- return false;
-}
-
-bool C_MatchBloxEngine::Abort()
-{
- //abort when not in error or init state
- if (m_State != ES_ERROR && m_State != ES_INITIALISED)
- {
- //set state to initialised
- m_State = ES_INITIALISED;
-
- //..
-
- return true;
- }
- return false;
-}
-
-bool C_MatchBloxEngine::LoadModels(const char* f_strModelDir)
-{
- MatProps_t l_Mat;
- std::string l_BaseName = f_strModelDir;
-
- //create the environment mapped cube
- m_pEnvMap = new C_Environment("envmaps/terrain_", 50.0);
-
- //load the bitmaps for the textures
- LoadTexture((l_BaseName + "/wood1.bmp").c_str(), m_uiWood1Tex);
- LoadTexture((l_BaseName + "/wood2.bmp").c_str(), m_uiWood2Tex);
- LoadTexture((l_BaseName + "/wood3.bmp").c_str(), m_uiWood3Tex);
-
- //load the block models
- //red squares
- l_Mat.setAmb(1.0, 0.0, 0.0, 1.0);
- l_Mat.setDif(1.0, 0.0, 0.0, 1.0);
- m_pBlock[BT_SQUARE] = new C_Block((l_BaseName + "/square.obj").c_str(),
- m_uiWood1Tex, l_Mat);
- if (!m_pBlock[BT_SQUARE]->Initialized()) return false;
-
- //yellow cricles
- l_Mat.setAmb(0.0, 1.0, 1.0, 1.0);
- l_Mat.setDif(0.0, 1.0, 1.0, 1.0);
- m_pBlock[BT_CIRCLE] = new C_Block((l_BaseName + "/circle.obj").c_str(),
- m_uiWood1Tex, l_Mat);
- if (!m_pBlock[BT_CIRCLE]->Initialized()) return false;
-
- //green triangles
- l_Mat.setAmb(0.0, 1.0, 0.0, 1.0);
- l_Mat.setDif(0.0, 1.0, 0.0, 1.0);
- m_pBlock[BT_TRIANGLE] = new C_Block((l_BaseName + "/triangle.obj").c_str(),
- m_uiWood1Tex, l_Mat);
- if (!m_pBlock[BT_TRIANGLE]->Initialized()) return false;
-
- //blue crosses
- l_Mat.setAmb(0.0, 0.0, 1.0, 1.0);
- l_Mat.setDif(0.0, 0.0, 1.0, 1.0);
- m_pBlock[BT_CROSS] = new C_Block((l_BaseName + "/cross.obj").c_str(),
- m_uiWood1Tex, l_Mat);
- if (!m_pBlock[BT_CROSS]->Initialized()) return false;
-
-
- //load the hand???
-
-
- //Load the box tiles
- l_Mat.setAmb(1.0, 1.0, 1.0, 1.0);
- l_Mat.setDif(1.0, 1.0, 1.0, 1.0);
-
- m_pTiles[BT_SQUARE] = new C_3DObject((l_BaseName + "/tile_square.obj").c_str(),
- m_uiWood3Tex, l_Mat);
- if (!m_pTiles[BT_SQUARE]->Initialized()) return false;
-
- m_pTiles[BT_CIRCLE] = new C_3DObject((l_BaseName + "/tile_circle.obj").c_str(),
- m_uiWood3Tex, l_Mat);
- if (!m_pTiles[BT_CIRCLE]->Initialized()) return false;
-
- m_pTiles[BT_TRIANGLE] = new C_3DObject((l_BaseName + "/tile_triangle.obj").c_str(),
- m_uiWood3Tex, l_Mat);
- if (!m_pTiles[BT_TRIANGLE]->Initialized()) return false;
-
- m_pTiles[BT_CROSS] = new C_3DObject((l_BaseName + "/tile_cross.obj").c_str(),
- m_uiWood3Tex, l_Mat);
- if (!m_pTiles[BT_CROSS]->Initialized()) return false;
-
- m_pTiles[4] = new C_3DObject((l_BaseName + "/tile_no_hole.obj").c_str(),
- m_uiWood3Tex, l_Mat);
- if (!m_pTiles[4]->Initialized()) return false;
-
-
- //Load the box models
- m_pBox[0] = new C_Box((l_BaseName + "/box_small.obj").c_str(),
- m_uiWood2Tex, l_Mat, 2, 2, m_pTiles);
- if (!m_pBox[0]->Initialized()) return false;
-
- m_pBox[1] = new C_Box((l_BaseName + "/box_med.obj").c_str(),
- m_uiWood2Tex, l_Mat, 4, 2, m_pTiles);
- if (!m_pBox[1]->Initialized()) return false;
-
- m_pBox[2] = new C_Box((l_BaseName + "/box_large.obj").c_str(),
- m_uiWood2Tex, l_Mat, 4, 4, m_pTiles);
- if (!m_pBox[2]->Initialized()) return false;
-
-
- return true;
-}
-
-void C_MatchBloxEngine::DeleteModels()
-{
- //delete objects
- delete m_pEnvMap;
- delete m_pBlock[0];
- delete m_pBlock[1];
- delete m_pBlock[2];
- delete m_pBlock[3];
- //delete m_pHand;
- delete m_pBox[0];
- delete m_pBox[1];
- delete m_pBox[2];
- delete m_pTiles[0];
- delete m_pTiles[1];
- delete m_pTiles[2];
- delete m_pTiles[3];
- delete m_pTiles[4];
-
- //delete textures
- glDeleteTextures(1, &m_uiWood1Tex);
- glDeleteTextures(1, &m_uiWood2Tex);
- glDeleteTextures(1, &m_uiWood3Tex);
-}
-
-void C_MatchBloxEngine::LoadTexture(const char* f_BmpName, GLuint &f_uiTexHandle)
-{
- BitmapStruct l_Bmp;
-
- l_Bmp = BitmapLoad((char*)f_BmpName);
- f_uiTexHandle = (GLuint)l_Bmp.m_iImageId;
-
- glBindTexture(GL_TEXTURE_2D, f_uiTexHandle);
-
- //set the texture paramaters
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
-}
-