Compare commits
	
		
			7 Commits
		
	
	
		
			SQC-09
			...
			sqc-14_cla
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | 889884490b | ||
|  | bd817f9f7d | ||
|  | 57d60e02a7 | ||
|  | ae201846b1 | ||
|  | 67a49a4cad | ||
|  | d7e55c8446 | ||
|  | 183c5f186a | 
							
								
								
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -373,3 +373,5 @@ FodyWeavers.xsd | |||||||
| /x64/Release/SQCSim2023.exe | /x64/Release/SQCSim2023.exe | ||||||
| /x64/Debug/SQCSim2023.exe | /x64/Debug/SQCSim2023.exe | ||||||
| /x64/Debug/SQCSim2021.pdb | /x64/Debug/SQCSim2021.pdb | ||||||
|  | SQCSim2021/SQCSim2021.vcxproj.filters | ||||||
|  | SQCSim2021/SQCSim2021.vcxproj | ||||||
|   | |||||||
| @@ -33,7 +33,11 @@ namespace netprot { | |||||||
| 		bool jumping,  | 		bool jumping,  | ||||||
| 			 shooting,  | 			 shooting,  | ||||||
| 			 hit,  | 			 hit,  | ||||||
| 			 powerup; | 			 powerup, | ||||||
|  | 			 dead, | ||||||
|  | 			 still, | ||||||
|  | 		     jumpshot, | ||||||
|  | 			 running; | ||||||
| 	}; | 	}; | ||||||
|  |  | ||||||
| 	struct Input {										// cli -> srv			UDP			~frame | 	struct Input {										// cli -> srv			UDP			~frame | ||||||
|   | |||||||
| @@ -8,6 +8,8 @@ Player::Player(const Vector3f& position, float rotX, float rotY) : m_position(po | |||||||
| 	m_username = "Zelda Bee-Bop56"; | 	m_username = "Zelda Bee-Bop56"; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | Player::~Player() {} | ||||||
|  |  | ||||||
| void Player::TurnLeftRight(float value) { | void Player::TurnLeftRight(float value) { | ||||||
| 	m_rotY += value; | 	m_rotY += value; | ||||||
| 	if (m_rotY > 360) m_rotY = 0; | 	if (m_rotY > 360) m_rotY = 0; | ||||||
| @@ -206,3 +208,9 @@ void Player::Teleport(int& x, int& z) { | |||||||
| 	m_position.x -= x * CHUNK_SIZE_X; | 	m_position.x -= x * CHUNK_SIZE_X; | ||||||
| 	m_position.z -= z * CHUNK_SIZE_Z; | 	m_position.z -= z * CHUNK_SIZE_Z; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | uint64_t Player::getId() const { return id; } | ||||||
|  |  | ||||||
|  | Vector3f Player::InterpolatePosition(const Vector3f& vec1, const Vector3f& vec2, const Timestamp& tim1, const Timestamp& tim2, const Timestamp& now) { | ||||||
|  | 	return Vector3f(); | ||||||
|  | } | ||||||
|   | |||||||
| @@ -12,6 +12,8 @@ public: | |||||||
| 	enum Sound { NOSOUND, STEP, FALL }; | 	enum Sound { NOSOUND, STEP, FALL }; | ||||||
|  |  | ||||||
| 	Player(const Vector3f& position, float rotX = 0, float rotY = 0); | 	Player(const Vector3f& position, float rotX = 0, float rotY = 0); | ||||||
|  | 	~Player(); | ||||||
|  |  | ||||||
| 	void TurnLeftRight(float value); | 	void TurnLeftRight(float value); | ||||||
| 	void TurnTopBottom(float value); | 	void TurnTopBottom(float value); | ||||||
| 	Vector3f GetInput(bool front, bool back, bool left, bool right, bool jump, bool dash, float elapsedTime); | 	Vector3f GetInput(bool front, bool back, bool left, bool right, bool jump, bool dash, float elapsedTime); | ||||||
| @@ -26,12 +28,13 @@ public: | |||||||
| 	float GetHP() const; | 	float GetHP() const; | ||||||
| 	void Teleport(int& x, int& z); | 	void Teleport(int& x, int& z); | ||||||
|  |  | ||||||
| private: | protected: | ||||||
| 	Vector3f m_position; | 	Vector3f m_position; | ||||||
| 	Vector3f m_velocity; | 	Vector3f m_velocity; | ||||||
| 	Vector3f m_direction; | 	Vector3f m_direction; | ||||||
|  |  | ||||||
| 	std::string m_username; | 	std::string m_username; | ||||||
|  | 	uint64_t id = 0; | ||||||
|  |  | ||||||
| 	float m_rotX = 0;  | 	float m_rotX = 0;  | ||||||
| 	float m_rotY = 0; | 	float m_rotY = 0; | ||||||
| @@ -40,6 +43,9 @@ private: | |||||||
| 	float m_hp; | 	float m_hp; | ||||||
|  |  | ||||||
| 	bool m_airborne; | 	bool m_airborne; | ||||||
|  |  | ||||||
|  | 	Vector3f InterpolatePosition(const Vector3f& vec1, const Vector3f& vec2, const Timestamp& tim1, const Timestamp& tim2, const Timestamp& now); | ||||||
|  |  | ||||||
| }; | }; | ||||||
| #endif //_PLAYER_H__ | #endif //_PLAYER_H__ | ||||||
|  |  | ||||||
|   | |||||||
| @@ -25,13 +25,14 @@ | |||||||
|     <ClInclude Include="engine.h" /> |     <ClInclude Include="engine.h" /> | ||||||
|     <ClInclude Include="mesh.h" /> |     <ClInclude Include="mesh.h" /> | ||||||
|     <ClInclude Include="openglcontext.h" /> |     <ClInclude Include="openglcontext.h" /> | ||||||
|  |     <ClInclude Include="remoteplayer.h" /> | ||||||
|     <ClInclude Include="shader.h" /> |     <ClInclude Include="shader.h" /> | ||||||
|     <ClInclude Include="skybox.h" /> |     <ClInclude Include="skybox.h" /> | ||||||
|     <ClInclude Include="texture.h" /> |     <ClInclude Include="texture.h" /> | ||||||
|     <ClInclude Include="textureatlas.h" /> |     <ClInclude Include="textureatlas.h" /> | ||||||
|     <ClInclude Include="tool.h" /> |     <ClInclude Include="tool.h" /> | ||||||
|     <ClInclude Include="vertexbuffer.h" /> |     <ClInclude Include="vertexbuffer.h" /> | ||||||
|     <ClInclude Include="worldrenderer.h" /> |     <ClInclude Include="renderer.h" /> | ||||||
|   </ItemGroup> |   </ItemGroup> | ||||||
|   <ItemGroup> |   <ItemGroup> | ||||||
|     <ClCompile Include="audio.cpp" /> |     <ClCompile Include="audio.cpp" /> | ||||||
| @@ -40,13 +41,14 @@ | |||||||
|     <ClCompile Include="main.cpp" /> |     <ClCompile Include="main.cpp" /> | ||||||
|     <ClCompile Include="mesh.cpp" /> |     <ClCompile Include="mesh.cpp" /> | ||||||
|     <ClCompile Include="openglcontext.cpp" /> |     <ClCompile Include="openglcontext.cpp" /> | ||||||
|  |     <ClCompile Include="remoteplayer.cpp" /> | ||||||
|     <ClCompile Include="shader.cpp" /> |     <ClCompile Include="shader.cpp" /> | ||||||
|     <ClCompile Include="skybox.cpp" /> |     <ClCompile Include="skybox.cpp" /> | ||||||
|     <ClCompile Include="texture.cpp" /> |     <ClCompile Include="texture.cpp" /> | ||||||
|     <ClCompile Include="textureatlas.cpp" /> |     <ClCompile Include="textureatlas.cpp" /> | ||||||
|     <ClCompile Include="tool.cpp" /> |     <ClCompile Include="tool.cpp" /> | ||||||
|     <ClCompile Include="vertexbuffer.cpp" /> |     <ClCompile Include="vertexbuffer.cpp" /> | ||||||
|     <ClCompile Include="worldrenderer.cpp" /> |     <ClCompile Include="renderer.cpp" /> | ||||||
|   </ItemGroup> |   </ItemGroup> | ||||||
|   <ItemGroup> |   <ItemGroup> | ||||||
|     <ProjectReference Include="..\SQCSim-common\SQCSim-common.vcxproj"> |     <ProjectReference Include="..\SQCSim-common\SQCSim-common.vcxproj"> | ||||||
|   | |||||||
| @@ -47,7 +47,10 @@ | |||||||
|     <ClInclude Include="mesh.h"> |     <ClInclude Include="mesh.h"> | ||||||
|       <Filter>Fichiers d%27en-tête</Filter> |       <Filter>Fichiers d%27en-tête</Filter> | ||||||
|     </ClInclude> |     </ClInclude> | ||||||
|     <ClInclude Include="worldrenderer.h"> |     <ClInclude Include="renderer.h"> | ||||||
|  |       <Filter>Fichiers d%27en-tête</Filter> | ||||||
|  |     </ClInclude> | ||||||
|  |     <ClInclude Include="remoteplayer.h"> | ||||||
|       <Filter>Fichiers d%27en-tête</Filter> |       <Filter>Fichiers d%27en-tête</Filter> | ||||||
|     </ClInclude> |     </ClInclude> | ||||||
|   </ItemGroup> |   </ItemGroup> | ||||||
| @@ -88,7 +91,10 @@ | |||||||
|     <ClCompile Include="mesh.cpp"> |     <ClCompile Include="mesh.cpp"> | ||||||
|       <Filter>Fichiers sources</Filter> |       <Filter>Fichiers sources</Filter> | ||||||
|     </ClCompile> |     </ClCompile> | ||||||
|     <ClCompile Include="worldrenderer.cpp"> |     <ClCompile Include="renderer.cpp"> | ||||||
|  |       <Filter>Fichiers sources</Filter> | ||||||
|  |     </ClCompile> | ||||||
|  |     <ClCompile Include="remoteplayer.cpp"> | ||||||
|       <Filter>Fichiers sources</Filter> |       <Filter>Fichiers sources</Filter> | ||||||
|     </ClCompile> |     </ClCompile> | ||||||
|   </ItemGroup> |   </ItemGroup> | ||||||
|   | |||||||
| @@ -17,6 +17,8 @@ public: | |||||||
|  |  | ||||||
| 	//void SendInput(); | 	//void SendInput(); | ||||||
| 	//int Sync(); | 	//int Sync(); | ||||||
|  |  | ||||||
|  | 	// void updateRemotePlayers(std::map<RemotePlayers> rplayers); | ||||||
| private: | private: | ||||||
| #ifdef _WIN32 | #ifdef _WIN32 | ||||||
| 	WSADATA m_wsaData; | 	WSADATA m_wsaData; | ||||||
|   | |||||||
| @@ -20,13 +20,12 @@ | |||||||
| #define SRV_ADDR "127.0.0.1" | #define SRV_ADDR "127.0.0.1" | ||||||
| #define COUNTDOWN 300 | #define COUNTDOWN 300 | ||||||
|  |  | ||||||
| #define BASE_WIDTH 640 | #define BASE_WIDTH 1920 | ||||||
| #define BASE_HEIGHT 480 | #define BASE_HEIGHT 1080 | ||||||
|  |  | ||||||
| #define TEXTURE_PATH        "./media/textures/" | #define TEXTURE_PATH        "./media/textures/" | ||||||
| #define SHADER_PATH		    "./media/shaders/" | #define SHADER_PATH		    "./media/shaders/" | ||||||
| #define AUDIO_PATH			"./media/audio/" | #define AUDIO_PATH			"./media/audio/" | ||||||
| #define CHUNK_PATH			"./media/chunks/" | #define CHUNK_PATH			"./media/chunks/" | ||||||
| #define MENU_ITEM_PATH		"./media/menu_items/" |  | ||||||
|  |  | ||||||
| #endif // DEFINE_H__ | #endif // DEFINE_H__ | ||||||
|   | |||||||
| @@ -28,200 +28,6 @@ Engine::~Engine() { | |||||||
| 				m_world.GetChunks().Get(x, y)->~Chunk(); | 				m_world.GetChunks().Get(x, y)->~Chunk(); | ||||||
| } | } | ||||||
|  |  | ||||||
| void Engine::DrawMenu() |  | ||||||
| { |  | ||||||
| 	static const int sTitle = 400; |  | ||||||
| 	static const int sButton = 225; |  | ||||||
|  |  | ||||||
| 	glDisable(GL_LIGHTING); |  | ||||||
| 	 |  | ||||||
|  |  | ||||||
| 	glDisable(GL_DEPTH_TEST); |  | ||||||
| 	glDisable(GL_STENCIL_TEST); |  | ||||||
| 	glMatrixMode(GL_PROJECTION); |  | ||||||
| 	glPushMatrix(); |  | ||||||
| 	glLoadIdentity(); |  | ||||||
| 	glOrtho(0, Width(), 0, Height(), -1, 1); |  | ||||||
| 	glMatrixMode(GL_MODELVIEW); |  | ||||||
| 	glPushMatrix(); |  | ||||||
|  |  | ||||||
| 	MenuBGTexture.Bind(); |  | ||||||
| 	glLoadIdentity(); |  | ||||||
| 	glBegin(GL_QUADS); |  | ||||||
| 	glTexCoord2f(0, 0); |  | ||||||
| 	glVertex2i(0, 0); |  | ||||||
| 	glTexCoord2f(1, 0); |  | ||||||
| 	glVertex2i(800, 0); |  | ||||||
| 	glTexCoord2f(1, 1); |  | ||||||
| 	glVertex2i(800, 600); |  | ||||||
| 	glTexCoord2f(0, 1); |  | ||||||
| 	glVertex2i(0, 600); |  | ||||||
| 	glEnd(); |  | ||||||
|  |  | ||||||
| 	glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); |  | ||||||
| 	glBlendEquation(GL_FUNC_ADD); |  | ||||||
| 	glEnable(GL_BLEND); |  | ||||||
|  |  | ||||||
| 	if (m_gamestate != GameState::OPTIONS) |  | ||||||
| 	{ |  | ||||||
| 		MenuTitleTexture.Bind(); |  | ||||||
| 		glTranslated(200, 300, 0); |  | ||||||
| 		glBegin(GL_QUADS); |  | ||||||
| 		glTexCoord2f(0, 0); |  | ||||||
| 		glVertex2i(0, 200); |  | ||||||
| 		glTexCoord2f(1, 0); |  | ||||||
| 		glVertex2i(sTitle, 200); |  | ||||||
| 		glTexCoord2f(1, 1); |  | ||||||
| 		glVertex2i(sTitle, 300); |  | ||||||
| 		glTexCoord2f(0, 1); |  | ||||||
| 		glVertex2i(0, 300); |  | ||||||
| 		glEnd(); |  | ||||||
|  |  | ||||||
| 		MenuStartTexture.Bind(); |  | ||||||
| 		glTranslated(80, -225, 0); |  | ||||||
| 		glBegin(GL_QUADS); |  | ||||||
| 		glTexCoord2f(0, 0); |  | ||||||
| 		glVertex2i(0, 100); |  | ||||||
| 		glTexCoord2f(1, 0); |  | ||||||
| 		glVertex2i(sButton, 100); |  | ||||||
| 		glTexCoord2f(1, 1); |  | ||||||
| 		glVertex2i(sButton, 200); |  | ||||||
| 		glTexCoord2f(0, 1); |  | ||||||
| 		glVertex2i(0, 200); |  | ||||||
| 		glEnd(); |  | ||||||
|  |  | ||||||
| 		/*MenuResumeTexture.Bind(); |  | ||||||
| 		glTranslated(0, -100, 0); |  | ||||||
| 		glBegin(GL_QUADS); |  | ||||||
| 		glTexCoord2f(0, 0); |  | ||||||
| 		glVertex2i(0, 125); |  | ||||||
| 		glTexCoord2f(1, 0); |  | ||||||
| 		glVertex2i(sButton, 125); |  | ||||||
| 		glTexCoord2f(1, 1); |  | ||||||
| 		glVertex2i(sButton, 200); |  | ||||||
| 		glTexCoord2f(0, 1); |  | ||||||
| 		glVertex2i(0, 200); |  | ||||||
| 		glEnd();*/ |  | ||||||
|  |  | ||||||
| 		/*MenuOptionsTexture.Bind(); |  | ||||||
| 		glTranslated(0, -100, 0); |  | ||||||
| 		glBegin(GL_QUADS); |  | ||||||
| 		glTexCoord2f(0, 0); |  | ||||||
| 		glVertex2i(0, 125); |  | ||||||
| 		glTexCoord2f(1, 0); |  | ||||||
| 		glVertex2i(sButton, 125); |  | ||||||
| 		glTexCoord2f(1, 1); |  | ||||||
| 		glVertex2i(sButton, 200); |  | ||||||
| 		glTexCoord2f(0, 1); |  | ||||||
| 		glVertex2i(0, 200); |  | ||||||
| 		glEnd();*/ |  | ||||||
|  |  | ||||||
| 		MenuQuitTexture.Bind(); |  | ||||||
| 		glTranslated(0, -100, 0); |  | ||||||
| 		glBegin(GL_QUADS); |  | ||||||
| 		glTexCoord2f(0, 0); |  | ||||||
| 		glVertex2i(0, 100); |  | ||||||
| 		glTexCoord2f(1, 0); |  | ||||||
| 		glVertex2i(sButton, 100); |  | ||||||
| 		glTexCoord2f(1, 1); |  | ||||||
| 		glVertex2i(sButton, 200); |  | ||||||
| 		glTexCoord2f(0, 1); |  | ||||||
| 		glVertex2i(0, 200); |  | ||||||
| 		glEnd(); |  | ||||||
|  |  | ||||||
| 	} |  | ||||||
| 	else |  | ||||||
| 	{ |  | ||||||
| 		/*MenuOptionsTexture.Bind(); |  | ||||||
| 		glTranslated(200, 0, 0); |  | ||||||
| 		glBegin(GL_QUADS); |  | ||||||
| 		glTexCoord2f(0, 0); |  | ||||||
| 		glVertex2i(0, 0); |  | ||||||
| 		glTexCoord2f(1, 0); |  | ||||||
| 		glVertex2i(sTitle, 0); |  | ||||||
| 		glTexCoord2f(1, 1); |  | ||||||
| 		glVertex2i(sTitle, 200); |  | ||||||
| 		glTexCoord2f(0, 1); |  | ||||||
| 		glVertex2i(0, 200); |  | ||||||
| 		glEnd(); |  | ||||||
|  |  | ||||||
| 		WireFrameTexture.Bind(); |  | ||||||
| 		glTranslated(0, 300, 0); |  | ||||||
| 		glBegin(GL_QUADS); |  | ||||||
| 		glTexCoord2f(0, 0); |  | ||||||
| 		glVertex2i(0, 125); |  | ||||||
| 		glTexCoord2f(1, 0); |  | ||||||
| 		glVertex2i(sButton, 125); |  | ||||||
| 		glTexCoord2f(1, 1); |  | ||||||
| 		glVertex2i(sButton, 200); |  | ||||||
| 		glTexCoord2f(0, 1); |  | ||||||
| 		glVertex2i(0, 200); |  | ||||||
| 		glEnd(); |  | ||||||
|  |  | ||||||
| 		OnOffBtnTexture.Bind(); |  | ||||||
| 		glTranslated(200, 0, 0); |  | ||||||
| 		glBegin(GL_QUADS); |  | ||||||
| 		glTexCoord2f(0, 0); |  | ||||||
| 		glVertex2i(0, 125); |  | ||||||
| 		glTexCoord2f(1, 0); |  | ||||||
| 		glVertex2i(sButton, 125); |  | ||||||
| 		glTexCoord2f(1, 1); |  | ||||||
| 		glVertex2i(sButton, 200); |  | ||||||
| 		glTexCoord2f(0, 1); |  | ||||||
| 		glVertex2i(0, 200); |  | ||||||
| 		glEnd(); |  | ||||||
| 		glTranslated(-400, -300, 0); |  | ||||||
|  |  | ||||||
| 		MusicTexture.Bind(); |  | ||||||
| 		glTranslated(200, 200, 0); |  | ||||||
| 		glBegin(GL_QUADS); |  | ||||||
| 		glTexCoord2f(0, 0); |  | ||||||
| 		glVertex2i(0, 125); |  | ||||||
| 		glTexCoord2f(1, 0); |  | ||||||
| 		glVertex2i(sButton, 125); |  | ||||||
| 		glTexCoord2f(1, 1); |  | ||||||
| 		glVertex2i(sButton, 200); |  | ||||||
| 		glTexCoord2f(0, 1); |  | ||||||
| 		glVertex2i(0, 200); |  | ||||||
| 		glEnd(); |  | ||||||
|  |  | ||||||
| 		OnOffBtnTexture.Bind(); |  | ||||||
| 		glTranslated(200, 0, 0); |  | ||||||
| 		glBegin(GL_QUADS); |  | ||||||
| 		glTexCoord2f(0, 0); |  | ||||||
| 		glVertex2i(0, 125); |  | ||||||
| 		glTexCoord2f(1, 0); |  | ||||||
| 		glVertex2i(sButton, 125); |  | ||||||
| 		glTexCoord2f(1, 1); |  | ||||||
| 		glVertex2i(sButton, 200); |  | ||||||
| 		glTexCoord2f(0, 1); |  | ||||||
| 		glVertex2i(0, 200); |  | ||||||
| 		glEnd(); |  | ||||||
|  |  | ||||||
| 		BackBtnTexture.Bind(); |  | ||||||
| 		glTranslated(-375, 175, 0); |  | ||||||
| 		glBegin(GL_QUADS); |  | ||||||
| 		glTexCoord2f(0, 0); |  | ||||||
| 		glVertex2i(0, 140); |  | ||||||
| 		glTexCoord2f(1, 0); |  | ||||||
| 		glVertex2i(sButton, 140); |  | ||||||
| 		glTexCoord2f(1, 1); |  | ||||||
| 		glVertex2i(sButton, 200); |  | ||||||
| 		glTexCoord2f(0, 1); |  | ||||||
| 		glVertex2i(0, 200); |  | ||||||
| 		glEnd();*/ |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	//glEnable(GL_LIGHTING); |  | ||||||
| 	glDisable(GL_BLEND); |  | ||||||
| 	glEnable(GL_DEPTH_TEST); |  | ||||||
| 	glMatrixMode(GL_PROJECTION); |  | ||||||
| 	glPopMatrix(); |  | ||||||
| 	glMatrixMode(GL_MODELVIEW); |  | ||||||
| 	glPopMatrix(); |  | ||||||
| 	ShowCursor(); |  | ||||||
| } |  | ||||||
|  |  | ||||||
| void Engine::Init() { | void Engine::Init() { | ||||||
| 	GLenum glewErr = glewInit(); | 	GLenum glewErr = glewInit(); | ||||||
| 	if (glewErr != GLEW_OK) { | 	if (glewErr != GLEW_OK) { | ||||||
| @@ -247,7 +53,6 @@ void Engine::Init() { | |||||||
| 	glDisable(GL_BLEND); | 	glDisable(GL_BLEND); | ||||||
| 	glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); | 	glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); | ||||||
| 	glBlendEquation(GL_FUNC_SUBTRACT); | 	glBlendEquation(GL_FUNC_SUBTRACT); | ||||||
| 	 |  | ||||||
| 	//  | 	//  | ||||||
| 	// Objet de skybox avec sa propre texture et son propre shader! | 	// Objet de skybox avec sa propre texture et son propre shader! | ||||||
| 	m_skybox.Init(0.2f); | 	m_skybox.Init(0.2f); | ||||||
| @@ -260,18 +65,18 @@ void Engine::Init() { | |||||||
| 		m_bullets[x] = nullptr; | 		m_bullets[x] = nullptr; | ||||||
|  |  | ||||||
| 	uint64_t seed = SEED; | 	uint64_t seed = SEED; | ||||||
| 	std::string playname = "La Chienne <20> Jacques"; | 	std::string playname = "La Chienne <20> Jacques"; | ||||||
| 	if (NETWORK_TEST) { // Test connexion r<>seau. | 	if (NETWORK_TEST) { // Test connexion r<>seau. | ||||||
| 		if (!m_conn.Init()) { | 		if (!m_conn.Init()) { | ||||||
| 			if (!m_conn.Connect(SRV_ADDR, playname)) { | 			if (!m_conn.Connect(SRV_ADDR, playname)) { | ||||||
| 				// setup jeu en r<>seau. | 				// setup jeu en r<>seau. | ||||||
| 				std::cout << "ID re<72>u du serveur: " << std::to_string(m_conn.getId()) << "!" << std::endl; | 				std::cout << "ID re<72>u du serveur: " << std::to_string(m_conn.getId()) << "!" << std::endl; | ||||||
| 				std::cout << "Seed re<72>u du serveur: " << std::to_string(m_conn.getSeed()) << "!" << std::endl; | 				std::cout << "Seed re<72>u du serveur: " << std::to_string(m_conn.getSeed()) << "!" << std::endl; | ||||||
| 				seed = m_conn.getSeed(); | 				seed = m_conn.getSeed(); | ||||||
| 			} | 			} | ||||||
| 			else std::cout << "Erreur de connexion." << std::endl; | 			else std::cout << "Erreur de connexion." << std::endl; | ||||||
| 		} | 		} | ||||||
| 		else std::cout << "Erreur de cr<63>ation de socket." << std::endl; | 		else std::cout << "Erreur de cr<63>ation de socket." << std::endl; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	m_world.SetSeed(seed); | 	m_world.SetSeed(seed); | ||||||
| @@ -290,13 +95,8 @@ void Engine::LoadResource() { | |||||||
| 	LoadTexture(m_skybox.GetTexture(), TEXTURE_PATH "skybox.png", true); | 	LoadTexture(m_skybox.GetTexture(), TEXTURE_PATH "skybox.png", true); | ||||||
| 	LoadTexture(m_textureCrosshair, TEXTURE_PATH "cross.bmp", true); | 	LoadTexture(m_textureCrosshair, TEXTURE_PATH "cross.bmp", true); | ||||||
| 	LoadTexture(m_textureFont, TEXTURE_PATH "font.bmp", true); | 	LoadTexture(m_textureFont, TEXTURE_PATH "font.bmp", true); | ||||||
| 	LoadTexture(m_textureGun, TEXTURE_PATH "gun01.png", true); | 	LoadTexture(m_textureGun, TEXTURE_PATH "gun01.png", false); | ||||||
|  |  | ||||||
| 	LoadTexture(MenuTitleTexture, MENU_ITEM_PATH "test.png"); |  | ||||||
| 	LoadTexture(MenuBGTexture, MENU_ITEM_PATH "test.png"); |  | ||||||
| 	LoadTexture(MenuQuitTexture, MENU_ITEM_PATH "BasicQuit.png"); |  | ||||||
| 	LoadTexture(MenuOptionsTexture, MENU_ITEM_PATH "test.png"); |  | ||||||
| 	LoadTexture(MenuStartTexture, MENU_ITEM_PATH "BasicPlay.png"); |  | ||||||
| 	TextureAtlas::TextureIndex texDirtIndex = m_textureAtlas.AddTexture(TEXTURE_PATH "metal3.png"); | 	TextureAtlas::TextureIndex texDirtIndex = m_textureAtlas.AddTexture(TEXTURE_PATH "metal3.png"); | ||||||
| 	TextureAtlas::TextureIndex texIceIndex = m_textureAtlas.AddTexture(TEXTURE_PATH "metal2.png"); | 	TextureAtlas::TextureIndex texIceIndex = m_textureAtlas.AddTexture(TEXTURE_PATH "metal2.png"); | ||||||
| 	TextureAtlas::TextureIndex texGrassIndex = m_textureAtlas.AddTexture(TEXTURE_PATH "grass.png"); | 	TextureAtlas::TextureIndex texGrassIndex = m_textureAtlas.AddTexture(TEXTURE_PATH "grass.png"); | ||||||
| @@ -388,6 +188,8 @@ void Engine::ProcessNotificationQueue() { | |||||||
| 		glMatrixMode(GL_MODELVIEW); | 		glMatrixMode(GL_MODELVIEW); | ||||||
| 		glPushMatrix(); | 		glPushMatrix(); | ||||||
| 		 | 		 | ||||||
|  | 		 | ||||||
|  | 		 | ||||||
| 		PrintText(xOffset, y, scale, it->message); | 		PrintText(xOffset, y, scale, it->message); | ||||||
|  |  | ||||||
| 		glBlendFunc(GL_CONSTANT_COLOR, GL_ONE_MINUS_CONSTANT_COLOR); | 		glBlendFunc(GL_CONSTANT_COLOR, GL_ONE_MINUS_CONSTANT_COLOR); | ||||||
| @@ -434,7 +236,6 @@ void Engine::DisplayCrosshair() { | |||||||
| void Engine::DisplayCurrentItem() { | void Engine::DisplayCurrentItem() { | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| void Engine::DisplayHud(int timer) { | void Engine::DisplayHud(int timer) { | ||||||
| 	glBindTexture(GL_TEXTURE_2D, 0); | 	glBindTexture(GL_TEXTURE_2D, 0); | ||||||
| 	glLoadIdentity(); | 	glLoadIdentity(); | ||||||
| @@ -448,7 +249,7 @@ void Engine::DisplayHud(int timer) { | |||||||
| 	float playerHp = m_player.GetHP(); | 	float playerHp = m_player.GetHP(); | ||||||
| 	float facteurOmbrage = m_displayInfo ? 0.5f : 1.0f; | 	float facteurOmbrage = m_displayInfo ? 0.5f : 1.0f; | ||||||
|  |  | ||||||
| 	// Arri<72>re-plan (Barre HP) | 	// Arri<72>re-plan (Barre HP) | ||||||
| 	glColor3f(1.0f * facteurOmbrage, 1.0f * facteurOmbrage, 1.0f * facteurOmbrage); | 	glColor3f(1.0f * facteurOmbrage, 1.0f * facteurOmbrage, 1.0f * facteurOmbrage); | ||||||
| 	glBegin(GL_QUADS); | 	glBegin(GL_QUADS); | ||||||
| 		glVertex2f(fPosX, fPosY - fBarHeight);				// Bas-Gauche | 		glVertex2f(fPosX, fPosY - fBarHeight);				// Bas-Gauche | ||||||
| @@ -457,7 +258,7 @@ void Engine::DisplayHud(int timer) { | |||||||
| 		glVertex2f(fPosX, fPosY);							// Haut-Gauche | 		glVertex2f(fPosX, fPosY);							// Haut-Gauche | ||||||
| 	glEnd(); | 	glEnd(); | ||||||
|  |  | ||||||
| 	//TODO: Associer avec m<>chanique de vie du joueur | 	//TODO: Associer avec m<>chanique de vie du joueur | ||||||
|  |  | ||||||
| 	// Barre HP | 	// Barre HP | ||||||
| 	glColor3f(0.0f * facteurOmbrage, 1.0f * facteurOmbrage, 0.0f * facteurOmbrage); | 	glColor3f(0.0f * facteurOmbrage, 1.0f * facteurOmbrage, 0.0f * facteurOmbrage); | ||||||
| @@ -468,7 +269,7 @@ void Engine::DisplayHud(int timer) { | |||||||
| 		glVertex2f(fPosX, fPosY);										// Haut-Gauche | 		glVertex2f(fPosX, fPosY);										// Haut-Gauche | ||||||
| 	glEnd(); | 	glEnd(); | ||||||
|  |  | ||||||
| 	// Barre <20>quip | 	// Barre <20>quip | ||||||
| 	glEnable(GL_BLEND); | 	glEnable(GL_BLEND); | ||||||
| 	glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); | 	glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); | ||||||
| 	glColor3f(1.0f * facteurOmbrage, 1.0f * facteurOmbrage, 1.0f * facteurOmbrage); | 	glColor3f(1.0f * facteurOmbrage, 1.0f * facteurOmbrage, 1.0f * facteurOmbrage); | ||||||
| @@ -489,7 +290,7 @@ void Engine::DisplayHud(int timer) { | |||||||
| 	glTexCoord2f(1, 1); glVertex2i(0, itemHeight); | 	glTexCoord2f(1, 1); glVertex2i(0, itemHeight); | ||||||
| 	glEnd(); | 	glEnd(); | ||||||
|  |  | ||||||
| 	//glDisable(GL_BLEND); | 	glDisable(GL_BLEND); | ||||||
|  |  | ||||||
| 	// Username | 	// Username | ||||||
| 	glEnable(GL_BLEND); | 	glEnable(GL_BLEND); | ||||||
| @@ -526,7 +327,7 @@ void Engine::DisplayInfo(float elapsedTime, BlockType bloc) { | |||||||
| 	ss << " To-Be-Deleted Chunks : " << m_world.GettbDeleted(); | 	ss << " To-Be-Deleted Chunks : " << m_world.GettbDeleted(); | ||||||
| 	PrintText(x, Height() - (Height() / 10.7), scale, ss.str()); | 	PrintText(x, Height() - (Height() / 10.7), scale, ss.str()); | ||||||
| 	ss.str(""); | 	ss.str(""); | ||||||
| 	ss << " Velocity  : " << m_player.GetVelocity(); // IMPORTANT : on utilise l <20> operateur << pour afficher la position | 	ss << " Velocity  : " << m_player.GetVelocity(); // IMPORTANT : on utilise l <20> operateur << pour afficher la position | ||||||
| 	PrintText(x, Height() / 48, scale, ss.str()); | 	PrintText(x, Height() / 48, scale, ss.str()); | ||||||
| 	ss.str(""); | 	ss.str(""); | ||||||
| 	ss << " Direction : " << m_player.GetDirection(); | 	ss << " Direction : " << m_player.GetDirection(); | ||||||
| @@ -551,7 +352,6 @@ void Engine::DrawHud(float elapsedTime, BlockType bloc) { | |||||||
|  |  | ||||||
| 	glBlendFunc(GL_SRC_ALPHA, GL_ONE); | 	glBlendFunc(GL_SRC_ALPHA, GL_ONE); | ||||||
| 	glBlendEquation(GL_FUNC_ADD); | 	glBlendEquation(GL_FUNC_ADD); | ||||||
| 	glEnable(GL_BLEND); |  | ||||||
|  |  | ||||||
| 	glMatrixMode(GL_PROJECTION); | 	glMatrixMode(GL_PROJECTION); | ||||||
| 	glPushMatrix(); | 	glPushMatrix(); | ||||||
| @@ -643,13 +443,6 @@ int Engine::GetCountdown(float elapsedTime) { | |||||||
| } | } | ||||||
|  |  | ||||||
| void Engine::Render(float elapsedTime) { | void Engine::Render(float elapsedTime) { | ||||||
| 	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); |  | ||||||
|  |  | ||||||
| 	if (m_gamestate == GameState::PLAY) |  | ||||||
| 	{ |  | ||||||
| 		HideCursor(); |  | ||||||
| 		CenterMouse(); //D<>placement de centermouse dans l'action de jouer |  | ||||||
|  |  | ||||||
| 	//static float gameTime = elapsedTime; | 	//static float gameTime = elapsedTime; | ||||||
| 	static irrklang::ISound* step; // Pour les sons de pas. | 	static irrklang::ISound* step; // Pour les sons de pas. | ||||||
| 	static float pollTime = 0; | 	static float pollTime = 0; | ||||||
| @@ -664,6 +457,7 @@ void Engine::Render(float elapsedTime) { | |||||||
| 	Transformation all; | 	Transformation all; | ||||||
| 	Transformation skybox; | 	Transformation skybox; | ||||||
| 	Vector3f vstep; | 	Vector3f vstep; | ||||||
|  | 	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); | ||||||
|  |  | ||||||
| 	// Transformations initiales | 	// Transformations initiales | ||||||
| 	glMatrixMode(GL_MODELVIEW); | 	glMatrixMode(GL_MODELVIEW); | ||||||
| @@ -688,8 +482,8 @@ void Engine::Render(float elapsedTime) { | |||||||
| 			break; | 			break; | ||||||
| 		default: break; | 		default: break; | ||||||
| 		} | 		} | ||||||
| 			m_audio.Update3DAudio(m_player.GetPOV(), m_player.GetDirection(), m_player.GetVelocity()); // Ajustement du positionnement 3D avec les coordonn<6E>es du joueur et | 		m_audio.Update3DAudio(m_player.GetPOV(), m_player.GetDirection(), m_player.GetVelocity()); // Ajustement du positionnement 3D avec les coordonn<6E>es du joueur et | ||||||
| 			// son vecteur de v<>locit<69> (pour l'effet Doppler) | 		// son vecteur de v<>locit<69> (pour l'effet Doppler) | ||||||
| 		pollTime = 0; | 		pollTime = 0; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| @@ -701,7 +495,7 @@ void Engine::Render(float elapsedTime) { | |||||||
| 	if (m_mouseWU) bloc++; | 	if (m_mouseWU) bloc++; | ||||||
| 	else if (m_mouseWD) bloc--; | 	else if (m_mouseWD) bloc--; | ||||||
| 	if (bloc == BTYPE_LAST + 1) bloc = BTYPE_AIR + 1; | 	if (bloc == BTYPE_LAST + 1) bloc = BTYPE_AIR + 1; | ||||||
| 		else if (bloc == BTYPE_AIR) bloc = BTYPE_LAST; // La selection de BTYPE_LAST <20>quipe l'arme. | 	else if (bloc == BTYPE_AIR) bloc = BTYPE_LAST; // La selection de BTYPE_LAST <20>quipe l'arme. | ||||||
| 	m_mouseWU = m_mouseWD = false; | 	m_mouseWU = m_mouseWD = false; | ||||||
|  |  | ||||||
| 	if (m_mouseL) { | 	if (m_mouseL) { | ||||||
| @@ -713,7 +507,7 @@ void Engine::Render(float elapsedTime) { | |||||||
| 					m_bullets[x] = new Bullet(m_player.GetPOV() + m_player.GetDirection(), m_player.GetDirection()); | 					m_bullets[x] = new Bullet(m_player.GetPOV() + m_player.GetDirection(), m_player.GetDirection()); | ||||||
| 					break; | 					break; | ||||||
| 				} | 				} | ||||||
| 					else if (x == MAX_BULLETS - 1) { // S'il y a pas d'espace dans l'array, prendre la place de la premi<6D>re balle de l'array. | 				else if (x == MAX_BULLETS - 1) { // S'il y a pas d'espace dans l'array, prendre la place de la premi<6D>re balle de l'array. | ||||||
| 					m_bullets[0]->~Bullet(); | 					m_bullets[0]->~Bullet(); | ||||||
| 					m_bullets[0] = new Bullet(m_player.GetPOV() + m_player.GetDirection(), m_player.GetDirection()); | 					m_bullets[0] = new Bullet(m_player.GetPOV() + m_player.GetDirection(), m_player.GetDirection()); | ||||||
| 				} | 				} | ||||||
| @@ -737,9 +531,9 @@ void Engine::Render(float elapsedTime) { | |||||||
| 				m_bullets[x] = nullptr; | 				m_bullets[x] = nullptr; | ||||||
| 			} | 			} | ||||||
|  |  | ||||||
| 		m_wrenderer.RenderWorld(&m_world, m_renderCount, m_player.GetPosition(), m_player.GetDirection(), all, m_shader01, m_textureAtlas); | 	m_renderer.RenderWorld(&m_world, m_renderCount, m_player.GetPosition(), m_player.GetDirection(), all, m_shader01, m_textureAtlas); | ||||||
| 	m_world.Update(m_bullets, m_player.GetPosition(), m_blockinfo); | 	m_world.Update(m_bullets, m_player.GetPosition(), m_blockinfo); | ||||||
| 		m_wrenderer.UpdateWorld(&m_world, m_player.GetPosition(), m_blockinfo); | 	m_renderer.UpdateMesh(&m_world, m_player.GetPosition(), m_blockinfo); | ||||||
|  |  | ||||||
| 	if (m_isSkybox) m_skybox.Render(skybox); | 	if (m_isSkybox) m_skybox.Render(skybox); | ||||||
|  |  | ||||||
| @@ -755,13 +549,6 @@ void Engine::Render(float elapsedTime) { | |||||||
| 		m_player = Player(Vector3f(.5f, CHUNK_SIZE_Y + 1.8f, .5f)); // Respawn si le bonho- joueur tombe en bas du monde. | 		m_player = Player(Vector3f(.5f, CHUNK_SIZE_Y + 1.8f, .5f)); // Respawn si le bonho- joueur tombe en bas du monde. | ||||||
| 		fell = false; | 		fell = false; | ||||||
| 	} | 	} | ||||||
| 	} |  | ||||||
| 	else if (m_gamestate == GameState::MAIN_MENU || m_gamestate == GameState::OPTIONS) |  | ||||||
| 	{ |  | ||||||
| 		DrawMenu(); |  | ||||||
| 	} |  | ||||||
| 	else if (m_gamestate == GameState::QUIT) |  | ||||||
| 		Stop(); |  | ||||||
| } | } | ||||||
|  |  | ||||||
| void Engine::KeyPressEvent(unsigned char key) { | void Engine::KeyPressEvent(unsigned char key) { | ||||||
| @@ -787,15 +574,14 @@ void Engine::KeyPressEvent(unsigned char key) { | |||||||
| 		} | 		} | ||||||
| 		break; | 		break; | ||||||
| 	case 36: // ESC - Quitter | 	case 36: // ESC - Quitter | ||||||
| 		m_gamestate = GameState::MAIN_MENU; | 		Stop(); | ||||||
| 		//Stop(); |  | ||||||
| 		break; | 		break; | ||||||
| 	case 57: // Space - Sauter | 	case 57: // Space - Sauter | ||||||
| 		if (!m_keySpace) { | 		if (!m_keySpace) { | ||||||
| 			m_keySpace = true; | 			m_keySpace = true; | ||||||
| 		} | 		} | ||||||
| 		break; | 		break; | ||||||
| 	case 94: // F10 - Plein <20>cran | 	case 94: // F10 - Plein <20>cran | ||||||
| 		IsFullscreen() ? SetFullscreen(false) : SetFullscreen(true); | 		IsFullscreen() ? SetFullscreen(false) : SetFullscreen(true); | ||||||
| 		//SetFullscreen(!IsFullscreen()); | 		//SetFullscreen(!IsFullscreen()); | ||||||
| 		break; | 		break; | ||||||
| @@ -805,7 +591,7 @@ void Engine::KeyPressEvent(unsigned char key) { | |||||||
| 		break; | 		break; | ||||||
| 	case 10: // K - Debugging DisplayNotification() | 	case 10: // K - Debugging DisplayNotification() | ||||||
| 		m_keyK = true; | 		m_keyK = true; | ||||||
| 		m_messageNotification = "notifications systeme peuvent <20>tre affich<63>"; | 		m_messageNotification = "notifications systeme peuvent <20>tre affich<63>"; | ||||||
| 		break; | 		break; | ||||||
| 	case 11: // L - Debugging DisplayNotification() | 	case 11: // L - Debugging DisplayNotification() | ||||||
| 		m_keyL = true; | 		m_keyL = true; | ||||||
| @@ -897,22 +683,18 @@ void Engine::MouseMoveEvent(int x, int y) { | |||||||
| 	m_player.TurnLeftRight(x - (Width() / 2)); | 	m_player.TurnLeftRight(x - (Width() / 2)); | ||||||
| 	m_player.TurnTopBottom(y - (Height() / 2)); | 	m_player.TurnTopBottom(y - (Height() / 2)); | ||||||
|  |  | ||||||
| 	// Centrer la souris seulement si elle n'est pas d<>j<EFBFBD> centr<74>e | 	// Centrer la souris seulement si elle n'est pas d<>j<EFBFBD> centr<74>e | ||||||
| 	// Il est n<>cessaire de faire la v<>rification pour <20>viter de tomber | 	// Il est n<>cessaire de faire la v<>rification pour <20>viter de tomber | ||||||
| 	// dans une boucle infinie o<> l'appel <20> CenterMouse g<>n<EFBFBD>re un | 	// dans une boucle infinie o<> l'appel <20> CenterMouse g<>n<EFBFBD>re un | ||||||
| 	// MouseMoveEvent, qui rapelle CenterMouse qui rapelle un autre | 	// MouseMoveEvent, qui rapelle CenterMouse qui rapelle un autre | ||||||
| 	// MouseMoveEvent, etc | 	// MouseMoveEvent, etc | ||||||
| 	if (x == (Width() / 2) && y == (Height() / 2)) | 	if (x == (Width() / 2) && y == (Height() / 2)) | ||||||
| 		return; | 		return; | ||||||
|  |  | ||||||
|  | 	CenterMouse(); | ||||||
| } | } | ||||||
|  |  | ||||||
| void Engine::MousePressEvent(const MOUSE_BUTTON& button, int x, int y) { | void Engine::MousePressEvent(const MOUSE_BUTTON& button, int x, int y) { | ||||||
| 	m_mousemx = x; |  | ||||||
| 	m_mousemy = y; |  | ||||||
|  |  | ||||||
| 	if (m_gamestate == GameState::PLAY) |  | ||||||
| 	{ |  | ||||||
| 	switch (button) { | 	switch (button) { | ||||||
| 	case MOUSE_BUTTON_LEFT: | 	case MOUSE_BUTTON_LEFT: | ||||||
| 		m_mouseL = true; | 		m_mouseL = true; | ||||||
| @@ -931,14 +713,6 @@ void Engine::MousePressEvent(const MOUSE_BUTTON& button, int x, int y) { | |||||||
| 		break; | 		break; | ||||||
| 	case MOUSE_BUTTON_NONE: break; | 	case MOUSE_BUTTON_NONE: break; | ||||||
| 	} | 	} | ||||||
| 	} |  | ||||||
| 	else if (m_gamestate == GameState::MAIN_MENU) |  | ||||||
| 	{ |  | ||||||
| 		if ((m_mousemx >= 285 && m_mousemx <= 490) && (m_mousemy >= 150 && m_mousemy <= 250)) |  | ||||||
| 			m_gamestate = GameState::PLAY; |  | ||||||
| 		if ((m_mousemx >= 305 && m_mousemx <= 450) && (m_mousemy >= 300 && m_mousemy <= 400)) |  | ||||||
| 			m_gamestate = GameState::QUIT; |  | ||||||
| 	} |  | ||||||
| } | } | ||||||
|  |  | ||||||
| void Engine::MouseReleaseEvent(const MOUSE_BUTTON& button, int x, int y) { | void Engine::MouseReleaseEvent(const MOUSE_BUTTON& button, int x, int y) { | ||||||
|   | |||||||
| @@ -18,13 +18,12 @@ | |||||||
| #include "audio.h" | #include "audio.h" | ||||||
| #include "textureatlas.h" | #include "textureatlas.h" | ||||||
| #include "connector.h" | #include "connector.h" | ||||||
| #include "worldrenderer.h" | #include "renderer.h" | ||||||
|  |  | ||||||
| class Engine : public OpenglContext { | class Engine : public OpenglContext { | ||||||
| public: | public: | ||||||
|     Engine(); |     Engine(); | ||||||
|     virtual ~Engine(); |     virtual ~Engine(); | ||||||
|     virtual void DrawMenu(); |  | ||||||
|     virtual void Init(); |     virtual void Init(); | ||||||
|     virtual void DeInit(); |     virtual void DeInit(); | ||||||
|     virtual void LoadResource(); |     virtual void LoadResource(); | ||||||
| @@ -61,7 +60,7 @@ private: | |||||||
|     TextureAtlas m_textureAtlas = TextureAtlas(BTYPE_LAST); |     TextureAtlas m_textureAtlas = TextureAtlas(BTYPE_LAST); | ||||||
|  |  | ||||||
|     World m_world = World(); |     World m_world = World(); | ||||||
|     WorldRenderer m_wrenderer = WorldRenderer(); |     Renderer m_renderer = Renderer(); | ||||||
|  |  | ||||||
|     Texture m_textureSkybox; |     Texture m_textureSkybox; | ||||||
|     Texture m_textureFont; |     Texture m_textureFont; | ||||||
| @@ -78,15 +77,6 @@ private: | |||||||
|      |      | ||||||
|     Bullet* m_bullets[MAX_BULLETS]; |     Bullet* m_bullets[MAX_BULLETS]; | ||||||
|  |  | ||||||
|     //Menu |  | ||||||
|     enum class GameState { MAIN_MENU, OPTIONS, QUIT, NEWG, PLAY }; |  | ||||||
|     GameState m_gamestate = GameState::MAIN_MENU; |  | ||||||
|     Texture MenuTitleTexture; |  | ||||||
|     Texture MenuBGTexture; |  | ||||||
|     Texture MenuStartTexture; |  | ||||||
|     Texture MenuQuitTexture; |  | ||||||
|     Texture MenuOptionsTexture; |  | ||||||
|  |  | ||||||
|     float m_scale; |     float m_scale; | ||||||
|     float m_time = 0; |     float m_time = 0; | ||||||
|  |  | ||||||
| @@ -115,9 +105,6 @@ private: | |||||||
|     bool m_mouseC = false; |     bool m_mouseC = false; | ||||||
|     bool m_mouseWU = false; |     bool m_mouseWU = false; | ||||||
|     bool m_mouseWD = false; |     bool m_mouseWD = false; | ||||||
|     //Pour trouver ou est la souris |  | ||||||
|     float m_mousemx = 0; |  | ||||||
|     float m_mousemy = 0; |  | ||||||
|  |  | ||||||
|     std::string m_messageNotification = ""; |     std::string m_messageNotification = ""; | ||||||
| }; | }; | ||||||
|   | |||||||
										
											Binary file not shown.
										
									
								
							| Before Width: | Height: | Size: 7.9 KiB | 
										
											Binary file not shown.
										
									
								
							| Before Width: | Height: | Size: 8.6 KiB | 
										
											Binary file not shown.
										
									
								
							| Before Width: | Height: | Size: 289 KiB | 
							
								
								
									
										70
									
								
								SQCSim2021/remoteplayer.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										70
									
								
								SQCSim2021/remoteplayer.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,70 @@ | |||||||
|  | #include "remoteplayer.h" | ||||||
|  | #include <iostream> | ||||||
|  | #include <cstring> | ||||||
|  |  | ||||||
|  |  | ||||||
|  | RemotePlayer::RemotePlayer() : Player(Vector3f(0, 0, 0), 0, 0), m_aminacc(0.0f), m_animstate(Anim::STILL), m_team_id(0), current(), previous() { | ||||||
|  |  | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void RemotePlayer::Init() { | ||||||
|  | 	 | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void RemotePlayer::Feed(const netprot::Output out) { | ||||||
|  |  | ||||||
|  | 	current.position = out.position; | ||||||
|  | 	current.direction = out.direction; | ||||||
|  | 	current.states = out.states; | ||||||
|  | 	current.id = out.id; | ||||||
|  |  | ||||||
|  | 	//a revoir pour le jump et le shoot en meme temps lorsque les test seront possible	 | ||||||
|  |  | ||||||
|  | 	if (current.position != previous.position) | ||||||
|  | 	{ | ||||||
|  | 		Vector3f positionDelta = current.position - previous.position; | ||||||
|  | 		m_position = current.position + positionDelta; | ||||||
|  | 		m_direction = current.direction;		 | ||||||
|  |  | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	if(current.direction != previous.direction) | ||||||
|  | 	{ | ||||||
|  | 		m_direction = current.direction; | ||||||
|  | 		current.direction = current.direction; | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	if (current.states.shooting) { | ||||||
|  | 		//true; | ||||||
|  | 		m_animstate = Anim::SHOOTING; | ||||||
|  | 	} | ||||||
|  | 	else if (current.states.jumping) { | ||||||
|  | 		//true; | ||||||
|  | 		m_animstate = Anim::JUMPING; | ||||||
|  | 	} | ||||||
|  | 	else if (current.states.dead) { | ||||||
|  | 		//true; | ||||||
|  | 		m_animstate = Anim::DEAD; | ||||||
|  | 	} | ||||||
|  | 	else if(current.states.powerup){ | ||||||
|  | 		//true; | ||||||
|  | 		m_animstate = Anim::POWERUP; | ||||||
|  | 	} | ||||||
|  | 	else if (current.states.still) { | ||||||
|  | 		//true; | ||||||
|  | 		m_animstate = Anim::STILL; | ||||||
|  | 	} | ||||||
|  | 	else if (current.states.running) { | ||||||
|  | 		//true; | ||||||
|  | 		m_animstate = Anim::RUNNING; | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	 | ||||||
|  | 	previous.direction = current.direction; | ||||||
|  | 	previous.position = current.position; | ||||||
|  | 	previous.states = current.states; | ||||||
|  | 	previous.id = current.id; | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } | ||||||
							
								
								
									
										25
									
								
								SQCSim2021/remoteplayer.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								SQCSim2021/remoteplayer.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,25 @@ | |||||||
|  | #ifndef REMOTEPLAYER_H__ | ||||||
|  | #define REMOTEPLAYER_H__ | ||||||
|  | #include "../SQCSim-common/player.h" | ||||||
|  | #include "../SQCSim-common/netprotocol.h" | ||||||
|  | #include "define.h" | ||||||
|  | #include "textureatlas.h" | ||||||
|  | #include "shader.h" | ||||||
|  |  | ||||||
|  | class RemotePlayer : public Player { | ||||||
|  | public: | ||||||
|  | 	enum Anim { STILL = 1, RUNNING = 2, JUMPING = 4, SHOOTING = 8, POWERUP = 16,  DEAD = 32 }; | ||||||
|  |  | ||||||
|  | 	RemotePlayer(); | ||||||
|  |  | ||||||
|  | 	void Init(); | ||||||
|  | 	void Feed(const netprot::Output out); | ||||||
|  |  | ||||||
|  | private: | ||||||
|  | 	netprot::Output current, previous; | ||||||
|  | 	float m_aminacc; | ||||||
|  | 	Anim m_animstate; | ||||||
|  | 	uint64_t m_team_id; | ||||||
|  |  | ||||||
|  | }; | ||||||
|  | #endif | ||||||
| @@ -1,13 +1,13 @@ | |||||||
| #include "worldrenderer.h" | #include "renderer.h" | ||||||
| 
 | 
 | ||||||
| WorldRenderer::WorldRenderer() { | Renderer::Renderer() { | ||||||
| 	m_meshes.Reset(nullptr); | 	m_meshes.Reset(nullptr); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| WorldRenderer::~WorldRenderer() { | Renderer::~Renderer() { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void WorldRenderer::RenderWorld(World* origin, int& rendercount, const Vector3f& player_pos, const Vector3f& player_dir, Transformation& world, Shader& shader, TextureAtlas& atlas) { | void Renderer::RenderWorld(World* origin, int& rendercount, const Vector3f& player_pos, const Vector3f& player_dir, Transformation& world, Shader& shader, TextureAtlas& atlas) const { | ||||||
| 	rendercount = 0; | 	rendercount = 0; | ||||||
| 	Vector3f angle; | 	Vector3f angle; | ||||||
| 	Vector3f cursor; | 	Vector3f cursor; | ||||||
| @@ -107,7 +107,7 @@ void WorldRenderer::RenderWorld(World* origin, int& rendercount, const Vector3f& | |||||||
| 	glStencilFunc(GL_GREATER, 1, 0xFF); | 	glStencilFunc(GL_GREATER, 1, 0xFF); | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| void WorldRenderer::UpdateWorld(World* origin, const Vector3f& player, BlockInfo* blockinfo[BTYPE_LAST]) { | void Renderer::UpdateMesh(World* origin, const Vector3f& player, BlockInfo* blockinfo[BTYPE_LAST]) { | ||||||
| 	int cx = player.x; | 	int cx = player.x; | ||||||
| 	int cy = player.z; | 	int cy = player.z; | ||||||
| 	static int frameUpdate = 2; | 	static int frameUpdate = 2; | ||||||
| @@ -211,3 +211,9 @@ void WorldRenderer::UpdateWorld(World* origin, const Vector3f& player, BlockInfo | |||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | void Renderer::RenderPlayer(Player* player, Transformation tran) const { | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void Renderer::RenderPlayer(RemotePlayer* rplayer, const Vector3f& player_pos, const Vector3f& player_dir) const { | ||||||
|  | } | ||||||
							
								
								
									
										30
									
								
								SQCSim2021/renderer.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								SQCSim2021/renderer.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,30 @@ | |||||||
|  | #ifndef RENDERER_H__ | ||||||
|  | #define RENDERER_H__ | ||||||
|  | #include <future> | ||||||
|  | #include <thread> | ||||||
|  | #include "../SQCSim-common/world.h" | ||||||
|  | #include "../SQCSim-common/transformation.h" | ||||||
|  | #include "define.h" | ||||||
|  | #include "mesh.h" | ||||||
|  | #include "textureatlas.h" | ||||||
|  | #include "shader.h" | ||||||
|  | #include "remoteplayer.h" | ||||||
|  |  | ||||||
|  | class Renderer { | ||||||
|  | private: | ||||||
|  | 	Array2d<Mesh*> m_meshes = Array2d<Mesh*>(WORLD_SIZE_X, WORLD_SIZE_Y); | ||||||
|  |  | ||||||
|  | 	TextureAtlas* m_playertext = nullptr; | ||||||
|  | 	Shader* m_playershader = nullptr; | ||||||
|  |  | ||||||
|  | public: | ||||||
|  | 	Renderer(); | ||||||
|  | 	~Renderer(); | ||||||
|  |  | ||||||
|  | 	void UpdateMesh(World* origin, const Vector3f& player, BlockInfo* blockinfo[BTYPE_LAST]); | ||||||
|  |  | ||||||
|  | 	void RenderWorld(World* origin, int& rendercount, const Vector3f& player_pos, const Vector3f& player_dir, Transformation& world, Shader& shader, TextureAtlas& atlas) const; | ||||||
|  | 	void RenderPlayer(Player* player, Transformation tran) const; | ||||||
|  | 	void RenderPlayer(RemotePlayer* rplayer, const Vector3f& player_pos, const Vector3f& player_dir) const; | ||||||
|  | }; | ||||||
|  | #endif | ||||||
| @@ -1,23 +0,0 @@ | |||||||
| #ifndef WORLDRENDERER_H__ |  | ||||||
| #define WORLDRENDERER_H__ |  | ||||||
| #include <future> |  | ||||||
| #include <thread> |  | ||||||
| #include "../SQCSim-common/world.h" |  | ||||||
| #include "../SQCSim-common/transformation.h" |  | ||||||
| #include "define.h" |  | ||||||
| #include "mesh.h" |  | ||||||
| #include "textureatlas.h" |  | ||||||
| #include "shader.h" |  | ||||||
|  |  | ||||||
| class WorldRenderer { |  | ||||||
| private: |  | ||||||
| 	Array2d<Mesh*> m_meshes = Array2d<Mesh*>(WORLD_SIZE_X, WORLD_SIZE_Y); |  | ||||||
|  |  | ||||||
| public: |  | ||||||
| 	WorldRenderer(); |  | ||||||
| 	~WorldRenderer(); |  | ||||||
|  |  | ||||||
| 	void RenderWorld(World* origin, int& rendercount, const Vector3f& player_pos, const Vector3f& player_dir, Transformation& world, Shader& shader, TextureAtlas& atlas); |  | ||||||
| 	void UpdateWorld(World* origin, const Vector3f& player, BlockInfo* blockinfo[BTYPE_LAST]); |  | ||||||
| }; |  | ||||||
| #endif |  | ||||||
		Reference in New Issue
	
	Block a user