Bläddra i källkod

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

Remco 9 år sedan
förälder
incheckning
a38a6d3c5f
9 ändrade filer med 117 tillägg och 46 borttagningar
  1. 6 25
      Main.cpp
  2. 0 1
      Model.cpp
  3. 52 16
      Player.cpp
  4. 11 1
      Player.h
  5. 1 1
      State.cpp
  6. 1 1
      State.h
  7. 2 1
      StateHandler.cpp
  8. 37 0
      WorldState.cpp
  9. 7 0
      WorldState.h

+ 6 - 25
Main.cpp

@@ -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);

+ 0 - 1
Model.cpp

@@ -264,7 +264,6 @@ void Model::loadMaterialFile(std::string fileName, std::string dirName)
 
 Model::MaterialInfo::MaterialInfo()
 {
-	Texture *texture;
 	hasTexture = false;
 }
 

+ 52 - 16
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;
+}
+

+ 11 - 1
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<Weapon> weapons;
+	Player();
+	Player(Player const&);
+	void operator=(Player const&);
+
+	//static Player* player;
 };
 

+ 1 - 1
State.cpp

@@ -27,7 +27,7 @@ void State::Display()
 {
 }
 
-void State::Keyboard(bool keys[255])
+void State::Keyboard(bool keys[255],float deltaTime)
 {
 }
 

+ 1 - 1
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);
 };

+ 2 - 1
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;
 }
 
 

+ 37 - 0
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);
+}
+

+ 7 - 0
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;
 };