feat: implement basic tower placement

This commit is contained in:
2021-09-19 13:43:45 +02:00
parent bcde4278ab
commit 52a143769e
17 changed files with 318 additions and 52 deletions

View File

@@ -7,36 +7,51 @@
#include <glm/glm.hpp>
namespace td {
namespace client{
class ClientGame;
} // namespace client
namespace render {
class WorldRenderer{
private:
client::ClientGame* m_Client;
Renderer* m_Renderer;
game::World* m_World;
std::unique_ptr<GL::VAO> m_WorldVao, m_MobVao, m_SelectTileVao;
std::unique_ptr<GL::VertexArray> m_WorldVao, m_MobVao, m_SelectTileVao;
glm::vec2 m_CamPos;
glm::vec2 m_CursorPos;
glm::vec2 m_HoldCursorPos;
float m_Zoom = 1;
float m_CamSensibility = 1;
bool m_TowerPlacePopupOpened = false;
public:
WorldRenderer(game::World* world, Renderer* renderer);
WorldRenderer(game::World* world, client::ClientGame* client);
~WorldRenderer();
void loadModels();
void update();
void render() const;
void render();
void setCamPos(float camX, float camY);
void moveCam(float relativeX, float relativeY, float aspectRatio);
void changeZoom(float zoom);
void click(int mouseX, int mouseY);
private:
void click();
void renderWorld() const;
void renderTowers() const;
void renderMobs() const;
void renderTileSelect() const;
void renderPopups() const;
void detectClick();
glm::vec2 getCursorWorldPos() const;
glm::vec2 getClickWorldPos() const;
void updateCursorPos();
};