get player out of main. player is now a singelton?(not sure of singleton is good inplemented). Added player singleton in worldstate

This commit is contained in:
Remco
2016-05-19 11:27:32 +02:00
parent 876ec56780
commit a38a6d3c5f
9 changed files with 117 additions and 46 deletions
+6 -25
View File
@@ -18,7 +18,7 @@ bool keys[255];
//vector<Model*> models; //vector<Model*> models;
//int currentModel = 0; //int currentModel = 0;
Player *player;
StateHandler *statehandler; StateHandler *statehandler;
void display() void display()
@@ -49,24 +49,15 @@ void display()
statehandler->GetCurrentState()->Display(); statehandler->GetCurrentState()->Display();
player->Display(); //player->Display();
glutSolidCube(10.0); //glutSolidCube(10.0);
glDisable(GL_TEXTURE_2D); glDisable(GL_TEXTURE_2D);
glutSwapBuffers(); 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() void idle()
{ {
@@ -74,18 +65,9 @@ void idle()
float deltaTime = frameTime - lastFrameTime; float deltaTime = frameTime - lastFrameTime;
lastFrameTime = frameTime; lastFrameTime = frameTime;
statehandler->GetCurrentState()->Keyboard(keys); statehandler->GetCurrentState()->Keyboard(keys,deltaTime);
statehandler->GetCurrentState()->Idle(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(); glutPostRedisplay();
} }
@@ -197,8 +179,7 @@ void configureOpenGL()
} }
void loadModels() void loadModels()
{ {
player = new Player();
statehandler = new StateHandler(); statehandler = new StateHandler();
statehandler->Navigate(statehandler->WORLD_STATE); statehandler->Navigate(statehandler->WORLD_STATE);
-1
View File
@@ -264,7 +264,6 @@ void Model::loadMaterialFile(std::string fileName, std::string dirName)
Model::MaterialInfo::MaterialInfo() Model::MaterialInfo::MaterialInfo()
{ {
Texture *texture;
hasTexture = false; hasTexture = false;
} }
+52 -16
View File
@@ -1,41 +1,77 @@
#include "Player.h" #include "Player.h"
Player::Player() Player::Player()
{ {
right = new Weapon("models/weapons/ZwaardMetTextures/TextureZwaard.obj");
left = new Weapon("models/weapons/ZwaardMetTextures/TextureZwaard.obj");
} }
Player::~Player() Player::~Player()
{ {
delete right; if(right != nullptr)
delete left; delete right;
if(left != nullptr)
delete left;
/*if (player != nullptr)
delete player;*/
} }
void Player::Display(void) void Player::Display(void)
{ {
if (right != nullptr) if (right != nullptr)
{ {
glPushMatrix();
glTranslatef(2.5f,0,-4.5f);
right->draw_weapon(); right->draw_weapon();
glPopMatrix();
} }
if (left != nullptr) if (left != nullptr)
{ {
glPushMatrix(); left->draw_weapon();
glTranslatef(-0.5f,0,-4.5f);
left->draw_weapon();
glPopMatrix();
} }
/*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.rotX, 1, 0, 0);
glRotatef(eyes.rotY, 0, 1, 0); glRotatef(eyes.rotY, 0, 1, 0);
glTranslatef(eyes.posX, eyes.posY, eyes.posZ); 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;
}
+11 -1
View File
@@ -5,7 +5,6 @@
class Player class Player
{ {
public: public:
Player();
~Player(); ~Player();
struct Eyes struct Eyes
@@ -18,11 +17,22 @@ public:
} eyes; } eyes;
void Display(void); 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: private:
int level; int level;
int xp; int xp;
Weapon* right = nullptr; Weapon* right = nullptr;
Weapon* left = nullptr; Weapon* left = nullptr;
vector<Weapon> weapons; vector<Weapon> weapons;
Player();
Player(Player const&);
void operator=(Player const&);
//static Player* player;
}; };
+1 -1
View File
@@ -27,7 +27,7 @@ void State::Display()
{ {
} }
void State::Keyboard(bool keys[255]) void State::Keyboard(bool keys[255],float deltaTime)
{ {
} }
+1 -1
View File
@@ -13,7 +13,7 @@ public:
virtual void Idle(float delta); virtual void Idle(float delta);
virtual void Display(); 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 MouseMove(int x, int y, int dx, int dy);
virtual void MouseClick(int button, int type, int x, int y); virtual void MouseClick(int button, int type, int x, int y);
}; };
+2 -1
View File
@@ -8,7 +8,8 @@ StateHandler::StateHandler()
StateList.push_back(new SettingsState()); //SETTINGS_STATE StateList.push_back(new SettingsState()); //SETTINGS_STATE
StateList.push_back(new WorldState()); //WORLD_STATE StateList.push_back(new WorldState()); //WORLD_STATE
CurrentState = INIT_STATE; //CurrentState = INIT_STATE;
CurrentState = WORLD_STATE;
} }
+37
View File
@@ -1,12 +1,49 @@
#include "WorldState.h" #include "WorldState.h"
#include "Player.h"
WorldState::WorldState() WorldState::WorldState()
{ {
/*player = Player::GetInstance();*/
} }
WorldState::~WorldState() 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);
}
+7
View File
@@ -1,11 +1,18 @@
#pragma once #pragma once
#include "Header.h" #include "Header.h"
#include "State.h" #include "State.h"
#include "Player.h"
class WorldState : public State class WorldState : public State
{ {
public: public:
WorldState(); WorldState();
~WorldState(); ~WorldState();
void Keyboard(bool keys[255],float deltaTime);
void MouseMove(int x, int y, int dx, int dy);
void Display();
private:
//Player* player;
}; };