fix: change renderer to class

This commit is contained in:
2021-09-18 18:58:32 +02:00
parent 519c6e33e7
commit a8b6a646af
10 changed files with 150 additions and 121 deletions

View File

@@ -6,16 +6,19 @@
#include "game/Team.h"
#include "game/Player.h"
#include "render/Renderer.h"
namespace td {
namespace client {
class Client{
private:
render::Renderer* m_Renderer;
ClientConnexion m_Connexion;
ClientGame m_Game{m_Connexion.GetDispatcher()};
ClientGame m_Game;
bool m_Connected;
public:
Client() : m_Connected(false){}
Client(render::Renderer* renderer) : m_Renderer(renderer), m_Game(m_Connexion.GetDispatcher(), m_Renderer), m_Connected(false){}
const ClientGame& getGame() const{ return m_Game; }
const ClientConnexion& getConnexion() const{ return m_Connexion; }

View File

@@ -1,9 +1,13 @@
#pragma once
#include "game/BaseGame.h"
#include "protocol/PacketHandler.h"
#include "WorldClient.h"
#include "render/WorldRenderer.h"
#include "render/Renderer.h"
namespace td {
namespace client {
@@ -13,10 +17,11 @@ private:
std::uint8_t m_ConnexionID;
std::uint32_t m_LobbyTime = 0;
game::Player* m_Player = nullptr;
client::WorldClient m_WorldClient{this};
render::WorldRenderer m_WorldRenderer{&m_WorldClient};
render::Renderer* m_Renderer;
client::WorldClient m_WorldClient;
render::WorldRenderer m_WorldRenderer;
public:
ClientGame(protocol::PacketDispatcher* dispatcher);
ClientGame(protocol::PacketDispatcher* dispatcher, render::Renderer* renderer);
virtual ~ClientGame();
virtual void tick(std::uint64_t delta);

View File

@@ -9,37 +9,53 @@
#define RENDER_RENDERER_H_
#include <glm/glm.hpp>
#include <memory>
#include "loader/GLLoader.h"
#include "render/shaders/WorldShader.h"
#include "render/shaders/EntityShader.h"
namespace td {
namespace render{
namespace render {
namespace Renderer{
class Renderer {
public:
static constexpr float m_AnimationSpeed = 2.0f;
struct Model{
GL::VAO* vao;
glm::vec2 positon;
struct Model {
GL::VAO* vao;
glm::vec2 positon;
};
private:
std::unique_ptr<WorldShader> m_WorldShader;
std::unique_ptr<EntityShader> m_EntityShader;
bool m_IsometricView = true;
float m_IsometricShade = m_IsometricView;
glm::vec2 m_CamPos{};
public:
Renderer();
~Renderer();
bool init();
void prepare();
void resize(const int width, const int height);
void renderVAO(const GL::VAO& vao);
void renderModel(const Model& model);
void setZoom(float zoom);
void setCamMovement(const glm::vec2& mov);
void setCamPos(const glm::vec2& newPos);
void setIsometricView(bool isometric); // false = 2D true = Isometric
glm::vec2 getCursorWorldPos(const glm::vec2& cursorPos, float aspectRatio, float zoom, float windowWidth, float windowHeight);
private:
void updateIsometricView();
void updateIsometricFade();
void initShader();
};
bool init();
void destroy();
void prepare();
void resize(const int width, const int height);
void renderVAO(const GL::VAO& vao);
void renderModel(const Model& model);
void setZoom(float zoom);
void setCamMovement(const glm::vec2& mov);
void setCamPos(const glm::vec2& newPos);
void setIsometricView(bool isometric); // false = 2D true = Isometric
glm::vec2 getCursorWorldPos(const glm::vec2& cursorPos, float aspectRatio, float zoom, float windowWidth, float windowHeight);
}
} // namespace render
} // namespace td

View File

@@ -2,6 +2,7 @@
#include "game/World.h"
#include "render/loader/GLLoader.h"
#include "render/Renderer.h"
#include <glm/glm.hpp>
@@ -10,6 +11,7 @@ namespace render {
class WorldRenderer{
private:
Renderer* m_Renderer;
game::World* m_World;
std::unique_ptr<GL::VAO> m_WorldVao, m_MobVao, m_SelectTileVao;
glm::vec2 m_CamPos;
@@ -17,7 +19,7 @@ private:
float m_Zoom = 1;
float m_CamSensibility = 1;
public:
WorldRenderer(game::World* world);
WorldRenderer(game::World* world, Renderer* renderer);
~WorldRenderer();
void loadModels();

View File

@@ -10,9 +10,18 @@
struct GLFWwindow;
namespace TowerGui{
namespace td {
namespace render {
void init(GLFWwindow* window);
class Renderer;
} // namespace render
} // namespace td
namespace TowerGui {
void init(GLFWwindow* window, td::render::Renderer* renderer);
void render();
void destroy();