diff --git a/Main.cpp b/Main.cpp index 5e7c269..e5533a4 100644 --- a/Main.cpp +++ b/Main.cpp @@ -18,7 +18,7 @@ bool keys[255]; //vector models; //int currentModel = 0; -Player *player; + StateHandler *statehandler; void display() @@ -49,24 +49,15 @@ void display() statehandler->GetCurrentState()->Display(); - player->Display(); + //player->Display(); - glutSolidCube(10.0); + //glutSolidCube(10.0); glDisable(GL_TEXTURE_2D); glutSwapBuffers(); } -void move(float angle, float fac, bool heigth) -{ - if (heigth) - player->eyes.posY += angle*fac; - else - { - player->eyes.posX += (float)cos((player->eyes.rotY + angle) / 180 * M_PI) * fac; - player->eyes.posZ += (float)sin((player->eyes.rotY + angle) / 180 * M_PI) * fac; - } -} + void idle() { @@ -74,18 +65,9 @@ void idle() float deltaTime = frameTime - lastFrameTime; lastFrameTime = frameTime; - statehandler->GetCurrentState()->Keyboard(keys); + statehandler->GetCurrentState()->Keyboard(keys,deltaTime); statehandler->GetCurrentState()->Idle(deltaTime); - float speed = 10; - - if (keys['a']) move(0, deltaTime*speed, false); - if (keys['d']) move(180, deltaTime*speed, false); - if (keys['w']) move(90, deltaTime*speed, false); - if (keys['s']) move(270, deltaTime*speed, false); - if (keys['q']) move(1, deltaTime*speed, true); - if (keys['e']) move(-1, deltaTime*speed, true); - glutPostRedisplay(); } @@ -197,8 +179,7 @@ void configureOpenGL() } void loadModels() -{ - player = new Player(); +{ statehandler = new StateHandler(); statehandler->Navigate(statehandler->WORLD_STATE); diff --git a/Model.cpp b/Model.cpp index fe474e3..a4edc9b 100644 --- a/Model.cpp +++ b/Model.cpp @@ -264,7 +264,6 @@ void Model::loadMaterialFile(std::string fileName, std::string dirName) Model::MaterialInfo::MaterialInfo() { - Texture *texture; hasTexture = false; } diff --git a/Player.cpp b/Player.cpp index 85417f5..fc74ffa 100644 --- a/Player.cpp +++ b/Player.cpp @@ -1,41 +1,77 @@ #include "Player.h" - - Player::Player() { - right = new Weapon("models/weapons/ZwaardMetTextures/TextureZwaard.obj"); - left = new Weapon("models/weapons/ZwaardMetTextures/TextureZwaard.obj"); + } Player::~Player() { - delete right; - delete left; + if(right != nullptr) + delete right; + if(left != nullptr) + delete left; + /*if (player != nullptr) + delete player;*/ } void Player::Display(void) { if (right != nullptr) - { - glPushMatrix(); - glTranslatef(2.5f,0,-4.5f); + { right->draw_weapon(); - glPopMatrix(); } if (left != nullptr) - { - glPushMatrix(); - glTranslatef(-0.5f,0,-4.5f); - left->draw_weapon(); - glPopMatrix(); - + { + left->draw_weapon(); } + /*glRotatef(player->eyes.rotX, 1, 0, 0); + glRotatef(player->eyes.rotY, 0, 1, 0); + glTranslatef(player->eyes.posX, player->eyes.posY, player->eyes.posZ);*/ glRotatef(eyes.rotX, 1, 0, 0); glRotatef(eyes.rotY, 0, 1, 0); glTranslatef(eyes.posX, eyes.posY, eyes.posZ); } +Player & Player::GetInstance(void) +{ + static Player instance; + return instance; +} + +//Player * Player::GetInstance(void) +//{ +// if (player == nullptr) +// player = new Player(); +// return player; +//} + +void Player::PlayerMoveEyes(float angle, float fac, bool heigth) +{ + //player movement + + /*if (heigth) + player->eyes.posY += angle*fac; + else + { + player->eyes.posX += (float)cos((player->eyes.rotY + angle) / 180 * M_PI) * fac; + player->eyes.posZ += (float)sin((player->eyes.rotY + angle) / 180 * M_PI) * fac; + }*/ + if (heigth) + eyes.posY += angle*fac; + else + { + eyes.posX += (float)cos((eyes.rotY + angle) / 180 * M_PI) * fac; + eyes.posZ += (float)sin((eyes.rotY + angle) / 180 * M_PI) * fac; + } +} + +void Player::PlayerRotateEyes(int dx, int dy) +{ + eyes.rotY += dx / 10.0f; + eyes.rotX += dy / 10.0f; +} + diff --git a/Player.h b/Player.h index 8359528..80a9d21 100644 --- a/Player.h +++ b/Player.h @@ -5,7 +5,6 @@ class Player { public: - Player(); ~Player(); struct Eyes @@ -18,11 +17,22 @@ public: } eyes; void Display(void); + //static Player* GetInstance(void); + static Player& GetInstance(void); + + + void PlayerMoveEyes(const float angle, const float fac, const bool heigth); + void PlayerRotateEyes(const int dx, const int dy); private: int level; int xp; Weapon* right = nullptr; Weapon* left = nullptr; vector weapons; + Player(); + Player(Player const&); + void operator=(Player const&); + + //static Player* player; }; diff --git a/State.cpp b/State.cpp index ea5090f..1e3fd94 100644 --- a/State.cpp +++ b/State.cpp @@ -27,7 +27,7 @@ void State::Display() { } -void State::Keyboard(bool keys[255]) +void State::Keyboard(bool keys[255],float deltaTime) { } diff --git a/State.h b/State.h index 7136f3a..8ef236f 100644 --- a/State.h +++ b/State.h @@ -13,7 +13,7 @@ public: virtual void Idle(float delta); virtual void Display(); - virtual void Keyboard(bool keys[255]); + virtual void Keyboard(bool keys[255],float deltaTime); virtual void MouseMove(int x, int y, int dx, int dy); virtual void MouseClick(int button, int type, int x, int y); }; diff --git a/StateHandler.cpp b/StateHandler.cpp index 8c7027b..02bef5b 100644 --- a/StateHandler.cpp +++ b/StateHandler.cpp @@ -8,7 +8,8 @@ StateHandler::StateHandler() StateList.push_back(new SettingsState()); //SETTINGS_STATE StateList.push_back(new WorldState()); //WORLD_STATE - CurrentState = INIT_STATE; + //CurrentState = INIT_STATE; + CurrentState = WORLD_STATE; } diff --git a/WorldState.cpp b/WorldState.cpp index ab8f7f2..5aba070 100644 --- a/WorldState.cpp +++ b/WorldState.cpp @@ -1,12 +1,49 @@ #include "WorldState.h" +#include "Player.h" WorldState::WorldState() { + /*player = Player::GetInstance();*/ } WorldState::~WorldState() { + //if (player != nullptr) + //delete player; } + +void WorldState::Keyboard(bool keys[255],float deltaTime) +{ + float speed = 10; + std::cout << "Keyboard doet het in de world state" << std::endl; + /*if (keys['a']) player->PlayerMoveEyes(0, deltaTime*speed, false); + if (keys['d']) player->PlayerMoveEyes(180, deltaTime*speed, false); + if (keys['w']) player->PlayerMoveEyes(90, deltaTime*speed, false); + if (keys['s']) player->PlayerMoveEyes(270, deltaTime*speed, false); + if (keys['q']) player->PlayerMoveEyes(1, deltaTime*speed, true); + if (keys['e']) player->PlayerMoveEyes(-1, deltaTime*speed, true); */ + + if (keys['a']) Player::GetInstance().PlayerMoveEyes(0, deltaTime*speed, false); + if (keys['d']) Player::GetInstance().PlayerMoveEyes(180, deltaTime*speed, false); + if (keys['w']) Player::GetInstance().PlayerMoveEyes(90, deltaTime*speed, false); + if (keys['s']) Player::GetInstance().PlayerMoveEyes(270, deltaTime*speed, false); + if (keys['q']) Player::GetInstance().PlayerMoveEyes(1, deltaTime*speed, true); + if (keys['e']) Player::GetInstance().PlayerMoveEyes(-1, deltaTime*speed, true); +} + +void WorldState::MouseMove(int x, int y, int dx, int dy) +{ + //player->PlayerRotateEyes(dx, dy); + Player::GetInstance().PlayerRotateEyes(dx, dy); +} + +void WorldState::Display() +{ + Player::GetInstance().Display(); + + glutSolidCube(10.0); +} + diff --git a/WorldState.h b/WorldState.h index 9249110..b6aa04f 100644 --- a/WorldState.h +++ b/WorldState.h @@ -1,11 +1,18 @@ #pragma once #include "Header.h" #include "State.h" +#include "Player.h" class WorldState : public State { public: WorldState(); ~WorldState(); + + void Keyboard(bool keys[255],float deltaTime); + void MouseMove(int x, int y, int dx, int dy); + void Display(); +private: + //Player* player; };