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;
//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);
-1
View File
@@ -264,7 +264,6 @@ void Model::loadMaterialFile(std::string fileName, std::string dirName)
Model::MaterialInfo::MaterialInfo()
{
Texture *texture;
hasTexture = false;
}
+52 -16
View File
@@ -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;
}
+11 -1
View File
@@ -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<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 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);
};
+2 -1
View File
@@ -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;
}
+37
View File
@@ -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);
}
+7
View File
@@ -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;
};