push de test pour les animations

This commit is contained in:
Claudel-D-Roy 2023-11-13 16:02:13 -05:00
parent d49d5cdebc
commit dfd2ddc8af
6 changed files with 80 additions and 7 deletions

View File

@ -106,7 +106,11 @@ namespace netprot {
uint64_t id = 0, uint64_t id = 0,
tid = 0; tid = 0;
PlayerInfo() {} PlayerInfo() {}
PlayerInfo(PlayerInfo* log) : id(log->id), tid(log->tid) { strcpy(log->name, name); } PlayerInfo(PlayerInfo* log) : id(log->id), tid(log->tid) {
strcpy(log->name, name);
};
PlayerInfo(int id, int tid, std::string strname) : id(id), tid(tid) { memcpy((void*)strname.c_str(), name, strname.length());
}
}; };
struct GameInfo { // cli <-> srv TCP event (before game start)/ once struct GameInfo { // cli <-> srv TCP event (before game start)/ once

View File

@ -5,6 +5,7 @@
#include "transformation.h" #include "transformation.h"
#include "vector3.h" #include "vector3.h"
class World; class World;
class Player { class Player {
@ -50,6 +51,8 @@ protected:
bool m_airborne; bool m_airborne;
Vector3f InterpolatePosition(const Vector3f& vec1, const Vector3f& vec2, const Timestamp& tim1, const Timestamp& tim2, const Timestamp& now); Vector3f InterpolatePosition(const Vector3f& vec1, const Vector3f& vec2, const Timestamp& tim1, const Timestamp& tim2, const Timestamp& now);
}; };

View File

@ -11,12 +11,13 @@ struct Notification {
float displayStartTime = 0.0f; float displayStartTime = 0.0f;
}; };
// Use a queue to manage notifications // Use a queue to manage notifications
//std::queue<Notification> notificationQueue; //std::queue<Notification> notificationQueue;
// Use a vector to manage notifications // Use a vector to manage notifications
std::vector<Notification> notifications; std::vector<Notification> notifications;
Engine::Engine() {} Engine::Engine() : m_remotePlayer(&m_pinfo), m_pinfo(){}
Engine::~Engine() { Engine::~Engine() {
m_world.CleanUpWorld(m_renderCount, true); m_world.CleanUpWorld(m_renderCount, true);
@ -275,7 +276,8 @@ void Engine::DrawMenu()
ShowCursor(); ShowCursor();
} }
void Engine::Init() { void Engine::Init() {
GLenum glewErr = glewInit(); GLenum glewErr = glewInit();
@ -372,6 +374,7 @@ void Engine::Init() {
m_startTime = std::chrono::high_resolution_clock::now(); m_startTime = std::chrono::high_resolution_clock::now();
// Gestion de souris. // Gestion de souris.
CenterMouse(); CenterMouse();
HideCursor(); HideCursor();
@ -397,6 +400,7 @@ void Engine::LoadResource() {
LoadTexture(MenuQuitTexture, MENU_ITEM_PATH "BasicQuit.png"); LoadTexture(MenuQuitTexture, MENU_ITEM_PATH "BasicQuit.png");
LoadTexture(MenuOptionsTexture, MENU_ITEM_PATH "test.png"); LoadTexture(MenuOptionsTexture, MENU_ITEM_PATH "test.png");
LoadTexture(MenuStartTexture, MENU_ITEM_PATH "BasicPlay.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");
@ -799,6 +803,7 @@ void Engine::DisplaySingleOrMultiplayerMenu() {
glBindTexture(GL_TEXTURE_2D, 0); glBindTexture(GL_TEXTURE_2D, 0);
// Single Player and Multiplayer button background quads // Single Player and Multiplayer button background quads
float buttonWidthProportion = 0.4f; float buttonWidthProportion = 0.4f;
float buttonHeightProportion = 0.075f; float buttonHeightProportion = 0.075f;
@ -1025,6 +1030,11 @@ void Engine::Render(float elapsedTime) {
m_player.ApplyTransformation(skybox, false); // Version d'ApplyTransformation qui ne tient compte que de la rotation m_player.ApplyTransformation(skybox, false); // Version d'ApplyTransformation qui ne tient compte que de la rotation
// (donc l'objet ne bouge pas relativement au joueur, ce qui est pratique pour une skybox!). // (donc l'objet ne bouge pas relativement au joueur, ce qui est pratique pour une skybox!).
m_remotePlayer.Render(m_textureAtlas, m_shader01, elapsedTime);
//m_remotePlayer.ApplyTransformation(all);
if (m_mouseWU) bloc++; if (m_mouseWU) bloc++;
else if (m_mouseWD) bloc--; else if (m_mouseWD) bloc--;
@ -1080,7 +1090,7 @@ void Engine::Render(float elapsedTime) {
} }
} }
m_renderer.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_renderer.UpdateMesh(&m_world, m_player.GetPosition(), m_blockinfo); m_renderer.UpdateMesh(&m_world, m_player.GetPosition(), m_blockinfo);

View File

@ -23,6 +23,7 @@
#include "renderer.h" #include "renderer.h"
#include "remoteplayer.h" #include "remoteplayer.h"
class Engine : public OpenglContext { class Engine : public OpenglContext {
public: public:
Engine(); Engine();
@ -144,7 +145,8 @@ private:
float m_mousemy = 0; float m_mousemy = 0;
bool m_networkgame = false; bool m_networkgame = false;
netprot::PlayerInfo m_pinfo;
RemotePlayer m_remotePlayer;
std::string m_messageNotification = ""; std::string m_messageNotification = "";
}; };

View File

@ -1,10 +1,26 @@
#include "remoteplayer.h" #include "remoteplayer.h"
#include <iostream> #include <iostream>
#include <cstring> #include <cstring>
#include "texture.h"
#include <thread>
#include <queue>
RemotePlayer::RemotePlayer(netprot::PlayerInfo pinfo) : Player(Vector3f(0, 0, 0), 0, 0), m_pinfo(pinfo), m_aminacc(0.0f), m_animstate(Anim::STILL), m_team_id(0), current(), previous() {
RemotePlayer::RemotePlayer(netprot::PlayerInfo pinfo) : m_pinfo(pinfo), m_aminacc(0.0f), m_animstate(Anim::STILL), m_team_id(0), current(), previous(), m_texture_front(), Player(Vector3f(0, 0, 0), 0, 0) {
LoadTexture(m_texture_front, TEXTURE_PATH "AssetOtherPlayer/FinalPNGStanding/BlueFrontRight.png", false, false);
}
//RemotePlayer::RemotePlayer()
//{
//
//}
RemotePlayer::~RemotePlayer()
{
} }
void RemotePlayer::Init() { void RemotePlayer::Init() {
@ -67,4 +83,31 @@ void RemotePlayer::Feed(const netprot::Output out) {
} }
void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, float elapsedTime)
{
m_texture_front.Bind();
glBegin(GL_QUADS);
glTexCoord2f(0, 0); glVertex2f(0, 500);
glTexCoord2f(1, 0); glVertex2f(500, 500);
glTexCoord2f(1, 1); glVertex2f(500, 0);
glTexCoord2f(0, 1); glVertex2f(0, 0);
glEnd();
}
bool RemotePlayer::LoadTexture(Texture& texture, const std::string& filename, bool useMipmaps, bool stopOnError)
{
texture.Load(filename, useMipmaps);
if (!texture.IsValid()) {
std::cerr << "Unable to load texture (" << filename << ")" << std::endl;
if (stopOnError)
return false;
return false;
}
return true;
}

View File

@ -5,15 +5,24 @@
#include "define.h" #include "define.h"
#include "textureatlas.h" #include "textureatlas.h"
#include "shader.h" #include "shader.h"
#include "texture.h"
#include "openglcontext.h"
class RemotePlayer : public Player { class RemotePlayer : public Player {
public: public:
enum Anim: uint8_t { STILL = 1, RUNNING = 2, JUMPING = 4, SHOOTING = 8, POWERUP = 16, DEAD = 32 }; enum Anim: uint8_t { STILL = 1, RUNNING = 2, JUMPING = 4, SHOOTING = 8, POWERUP = 16, DEAD = 32 };
/*RemotePlayer();*/
RemotePlayer(netprot::PlayerInfo pinfo); RemotePlayer(netprot::PlayerInfo pinfo);
~RemotePlayer();
void Init(); void Init();
void Feed(const netprot::Output out); void Feed(const netprot::Output out);
void Render(TextureAtlas& atlas, Shader& shader, float elapsedTime);
bool LoadTexture(Texture& texture, const std::string& filename, bool useMipmaps, bool stopOnError);
private: private:
netprot::Output current, previous; netprot::Output current, previous;
@ -22,6 +31,8 @@ private:
float m_aminacc; float m_aminacc;
Anim m_animstate; Anim m_animstate;
uint64_t m_team_id; uint64_t m_team_id;
Texture m_texture_front;
}; };
#endif #endif