Compare commits
124 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 8392a53bcb | |||
| de30c3bc96 | |||
| 4324bad41b | |||
| 7271681175 | |||
| 9afe4e6250 | |||
| ddc658be12 | |||
| 3b99463213 | |||
| b0114e4ddf | |||
| 8fc1b70288 | |||
| 28803c2848 | |||
| 179151c90c | |||
| 0f1947e43e | |||
| 59e449b665 | |||
| 5fff416d42 | |||
| 0b00fd02c2 | |||
| c4810bd878 | |||
| 7c1909584f | |||
| 4b47a44b0d | |||
| 6ba6c0b21d | |||
| b9f14cb830 | |||
| 80baf2b59f | |||
| 8b0b1371e5 | |||
| fbef0cc660 | |||
| 8c181e5353 | |||
| c36db6b15f | |||
| 3c3a68f1d1 | |||
| fb2f1343c8 | |||
| c4143be864 | |||
| 6ca5afe81c | |||
| 6a65358e37 | |||
| aac3410755 | |||
| eff94cf05c | |||
| 5e97a0ac1c | |||
| 6cfa32a2c2 | |||
| 3282af2752 | |||
| 4511676dc6 | |||
| 06f5e3038a | |||
| 9496e03cf0 | |||
| 3afdaccff1 | |||
| 3fdb5ce45e | |||
| 8e9a90259d | |||
| c3eee424b6 | |||
| a4e1d4a84d | |||
| 3b62da6489 | |||
| 6c5d5f4921 | |||
| 2cc571c0ce | |||
| ae84abc14d | |||
| 171005b06a | |||
| cdb6753d52 | |||
| 746f2cd383 | |||
| 4050ef8322 | |||
| dd91750e28 | |||
| edc6f40799 | |||
| bfd22b9de0 | |||
| 695ef540f2 | |||
| 331d95573d | |||
| 26ccf3334d | |||
| 3360f4acdb | |||
| 8ead200eb7 | |||
| d5e24635c7 | |||
| 3defa497b6 | |||
| a241589025 | |||
| 911fe7cc10 | |||
| a6a71cb487 | |||
| 3e8cf5e290 | |||
| c62f114087 | |||
| 237c6d9981 | |||
| ece20e0e1f | |||
| 3eecfa7df1 | |||
| 80bdf130dc | |||
| 4338fd3895 | |||
| 3a334b3227 | |||
| 186ca76345 | |||
| da3439cc03 | |||
| 5a1f71e5c0 | |||
| 93d587d463 | |||
| bad65f89d0 | |||
| 3c04810496 | |||
| ec538c1783 | |||
| 01bd4621b3 | |||
| 2ef4f091f1 | |||
| bc4e1f1f35 | |||
| 7c4ed3910f | |||
| 90c834cc49 | |||
| d23761dc10 | |||
| 3d8fd2e519 | |||
| 4bd32e8d0b | |||
| 09bba12814 | |||
| bb76e9493f | |||
|
|
808ef7b3f6 | ||
|
|
23938a0cb5 | ||
|
|
5631efcf9e | ||
|
|
8e7b446003 | ||
|
|
51ec035490 | ||
| 1f94ae2586 | |||
| 7b8c13612c | |||
| a36716d8e4 | |||
| debf9e974c | |||
| 380ecf3a27 | |||
| b3157be641 | |||
| 1e3b672897 | |||
| d1aa5cd8aa | |||
| dbe91b52fd | |||
| 7ab8c79fdf | |||
| 8f2a22762a | |||
| f0c3325141 | |||
| 1d00e0098a | |||
| ee5a27ac54 | |||
| 49a5a09537 | |||
| f9f80fc4fb | |||
| 4997715672 | |||
| 3fe480d121 | |||
| c46226c1ae | |||
| 8630421734 | |||
| 60b81003c0 | |||
| 7986e55846 | |||
| 0c0fd155ed | |||
| 7f650f282c | |||
| 118a04cd01 | |||
| d529c79150 | |||
| ddbba997e5 | |||
| 50c17e8ed1 | |||
| b4836847f5 | |||
| f941862637 |
25
.gitea/workflows/linux.yaml
Normal file
25
.gitea/workflows/linux.yaml
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
name: Linux arm64
|
||||||
|
run-name: Build And Test
|
||||||
|
|
||||||
|
on: [push]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
Build:
|
||||||
|
runs-on: ubuntu-test
|
||||||
|
steps:
|
||||||
|
- name: Check out repository code
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Packages cache
|
||||||
|
uses: actions/cache@v4
|
||||||
|
with:
|
||||||
|
path: ${{ github.workspace }}/build/.packages
|
||||||
|
|
||||||
|
- name: XMake config
|
||||||
|
run: xmake f -p linux -y
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: xmake
|
||||||
|
|
||||||
|
- name: Test
|
||||||
|
run: xmake test
|
||||||
@@ -1,16 +1,17 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "ClientConnexion.h"
|
#include "client/ClientConnexion.h"
|
||||||
#include "ClientGame.h"
|
#include "client/game/ClientGame.h"
|
||||||
|
|
||||||
#include "game/Team.h"
|
#include "td/game/Team.h"
|
||||||
#include "game/Player.h"
|
#include "td/game/Player.h"
|
||||||
|
|
||||||
#include "protocol/Protocol.h"
|
#include "td/protocol/Protocol.h"
|
||||||
|
#include "td/protocol/packets/SendMobsPacket.h"
|
||||||
|
|
||||||
#include "render/Renderer.h"
|
#include "client/render/Renderer.h"
|
||||||
|
|
||||||
#include "network/Network.h"
|
#include "td/network/Network.h"
|
||||||
|
|
||||||
namespace td {
|
namespace td {
|
||||||
namespace client {
|
namespace client {
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "protocol/PacketHandler.h"
|
#include "td/protocol/PacketHandler.h"
|
||||||
#include "network/TCPSocket.h"
|
#include "td/network/TCPSocket.h"
|
||||||
#include "game/Connexion.h"
|
#include "td/network/Connexion.h"
|
||||||
|
|
||||||
namespace td {
|
namespace td {
|
||||||
namespace client {
|
namespace client {
|
||||||
@@ -1,13 +1,13 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "game/BaseGame.h"
|
#include "td/game/BaseGame.h"
|
||||||
|
|
||||||
#include "protocol/PacketHandler.h"
|
#include "td/protocol/PacketHandler.h"
|
||||||
|
|
||||||
#include "WorldClient.h"
|
#include "WorldClient.h"
|
||||||
|
|
||||||
#include "render/WorldRenderer.h"
|
#include "client/render/WorldRenderer.h"
|
||||||
#include "render/Renderer.h"
|
#include "client/render/Renderer.h"
|
||||||
|
|
||||||
namespace td {
|
namespace td {
|
||||||
namespace client {
|
namespace client {
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "game/World.h"
|
#include "td/game/World.h"
|
||||||
#include "protocol/PacketHandler.h"
|
#include "td/protocol/PacketHandler.h"
|
||||||
|
|
||||||
namespace td {
|
namespace td {
|
||||||
namespace client {
|
namespace client {
|
||||||
@@ -13,12 +13,14 @@ private:
|
|||||||
ClientGame* m_Game;
|
ClientGame* m_Game;
|
||||||
public:
|
public:
|
||||||
WorldClient(ClientGame* game);
|
WorldClient(ClientGame* game);
|
||||||
|
virtual ~WorldClient();
|
||||||
|
|
||||||
virtual void HandlePacket(const protocol::WorldBeginDataPacket* packet) override;
|
virtual void HandlePacket(const protocol::WorldBeginDataPacket* packet) override;
|
||||||
virtual void HandlePacket(const protocol::WorldDataPacket* packet) override;
|
virtual void HandlePacket(const protocol::WorldDataPacket* packet) override;
|
||||||
virtual void HandlePacket(const protocol::SpawnMobPacket* packet) override;
|
virtual void HandlePacket(const protocol::SpawnMobPacket* packet) override;
|
||||||
virtual void HandlePacket(const protocol::UpgradeTowerPacket* packet) override;
|
virtual void HandlePacket(const protocol::UpgradeTowerPacket* packet) override;
|
||||||
virtual void HandlePacket(const protocol::WorldAddTowerPacket* packet) override;
|
virtual void HandlePacket(const protocol::WorldAddTowerPacket* packet) override;
|
||||||
|
virtual void HandlePacket(const protocol::RemoveMobPacket* packet) override;
|
||||||
virtual void HandlePacket(const protocol::RemoveTowerPacket* packet) override;
|
virtual void HandlePacket(const protocol::RemoveTowerPacket* packet) override;
|
||||||
virtual void HandlePacket(const protocol::UpdateMobStatesPacket* packet) override;
|
virtual void HandlePacket(const protocol::UpdateMobStatesPacket* packet) override;
|
||||||
virtual void HandlePacket(const protocol::UpdateCastleLifePacket* packet) override;
|
virtual void HandlePacket(const protocol::UpdateCastleLifePacket* packet) override;
|
||||||
@@ -1,10 +1,10 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "Defines.h"
|
#include "td/Defines.h"
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include "loader/GLLoader.h"
|
#include "loader/GLLoader.h"
|
||||||
#include "render/shaders/WorldShader.h"
|
#include "client/render/shaders/WorldShader.h"
|
||||||
#include "render/shaders/EntityShader.h"
|
#include "client/render/shaders/EntityShader.h"
|
||||||
|
|
||||||
namespace td {
|
namespace td {
|
||||||
namespace render {
|
namespace render {
|
||||||
@@ -23,41 +23,16 @@ struct Camera {
|
|||||||
float m_Pitch = -PI / 2.0f + 0.0000001f;
|
float m_Pitch = -PI / 2.0f + 0.0000001f;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct Model {
|
|
||||||
std::unique_ptr<GL::VertexArray> vao;
|
|
||||||
Vec3f positon;
|
|
||||||
Vec3f color = { 1, 1, 1 };
|
|
||||||
};
|
|
||||||
|
|
||||||
class TexturedModel {
|
|
||||||
private:
|
|
||||||
std::unique_ptr<GL::VertexArray> m_Vao;
|
|
||||||
std::unique_ptr<GL::Texture> m_Texture;
|
|
||||||
Vec3f m_Positon;
|
|
||||||
Vec3f m_Color = { 1, 1, 1 };
|
|
||||||
public:
|
|
||||||
REMOVE_COPY(TexturedModel);
|
|
||||||
|
|
||||||
TexturedModel(GL::VertexArray&& vao, GL::Texture&& texture);
|
|
||||||
TexturedModel(TexturedModel&& other);
|
|
||||||
~TexturedModel() {}
|
|
||||||
|
|
||||||
const GL::VertexArray& GetVao() const { return *m_Vao; }
|
|
||||||
const GL::Texture& GetTexture() const { return *m_Texture; }
|
|
||||||
Vec3f GetPosition() const { return m_Positon; }
|
|
||||||
Vec3f GetColor() const { return m_Color; }
|
|
||||||
|
|
||||||
void SetPosition(Vec3f newPos) { m_Positon = newPos; }
|
|
||||||
void SetColor(Vec3f newColor) { m_Color = newColor; }
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
class Renderer {
|
class Renderer {
|
||||||
public:
|
public:
|
||||||
static constexpr float m_AnimationSpeed = 2.0f;
|
static constexpr float m_AnimationSpeed = 2.0f;
|
||||||
static constexpr float m_MouseSensitivity = 200.0f;
|
static constexpr float m_MouseSensitivity = 200.0f;
|
||||||
|
|
||||||
|
struct Model {
|
||||||
|
GL::VertexArray* vao;
|
||||||
|
Vec3f positon;
|
||||||
|
Vec3f color = { 1, 1, 1 };
|
||||||
|
};
|
||||||
private:
|
private:
|
||||||
std::unique_ptr<shader::WorldShader> m_WorldShader;
|
std::unique_ptr<shader::WorldShader> m_WorldShader;
|
||||||
std::unique_ptr<shader::EntityShader> m_EntityShader;
|
std::unique_ptr<shader::EntityShader> m_EntityShader;
|
||||||
@@ -78,12 +53,12 @@ public:
|
|||||||
|
|
||||||
void RenderVAO(const GL::VertexArray& vao);
|
void RenderVAO(const GL::VertexArray& vao);
|
||||||
void RenderModel(const Model& model);
|
void RenderModel(const Model& model);
|
||||||
void RenderModel(const TexturedModel& model);
|
|
||||||
|
|
||||||
void AddZoom(float zoom);
|
void AddZoom(float zoom);
|
||||||
void SetCamAngularMovement(const Vec2f& mov);
|
void SetCamAngularMovement(const Vec2f& mov);
|
||||||
void SetCamMovement(const Vec2f& lastCursorPos, const Vec2f& currentCursorPos);
|
void SetCamMovement(const Vec2f& lastCursorPos, const Vec2f& currentCursorPos);
|
||||||
void SetCamLook(const Vec2f& worldPos);
|
void SetCamLook(const Vec2f& worldPos);
|
||||||
|
void ResetCamLook();
|
||||||
|
|
||||||
void SetBackgroundColor(const Vec3f& color) { m_BackgroundColor = color; }
|
void SetBackgroundColor(const Vec3f& color) { m_BackgroundColor = color; }
|
||||||
|
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
|
||||||
#include "render/loader/GLLoader.h"
|
#include "client/render/loader/GLLoader.h"
|
||||||
|
|
||||||
|
|
||||||
namespace td {
|
namespace td {
|
||||||
@@ -1,16 +1,14 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "game/World.h"
|
#include "td/game/World.h"
|
||||||
|
|
||||||
#include "render/Renderer.h"
|
#include "client/render/Renderer.h"
|
||||||
#include "render/VertexCache.h"
|
#include "client/render/VertexCache.h"
|
||||||
|
|
||||||
#include "render/gui/TowerPlacePopup.h"
|
#include "client/render/gui/TowerPlacePopup.h"
|
||||||
#include "render/gui/TowerUpgradePopup.h"
|
#include "client/render/gui/TowerUpgradePopup.h"
|
||||||
#include "render/gui/MobTooltip.h"
|
#include "client/render/gui/MobTooltip.h"
|
||||||
#include "render/gui/CastleTooltip.h"
|
#include "client/render/gui/CastleTooltip.h"
|
||||||
|
|
||||||
#include "render/gui/imgui/imgui.h"
|
|
||||||
|
|
||||||
namespace td {
|
namespace td {
|
||||||
|
|
||||||
@@ -20,7 +18,6 @@ class ClientGame;
|
|||||||
|
|
||||||
} // namespace client
|
} // namespace client
|
||||||
|
|
||||||
|
|
||||||
namespace render {
|
namespace render {
|
||||||
|
|
||||||
class WorldRenderer : public game::WorldListener {
|
class WorldRenderer : public game::WorldListener {
|
||||||
@@ -28,9 +25,7 @@ private:
|
|||||||
client::ClientGame* m_Client;
|
client::ClientGame* m_Client;
|
||||||
Renderer* m_Renderer;
|
Renderer* m_Renderer;
|
||||||
game::World* m_World;
|
game::World* m_World;
|
||||||
std::unique_ptr<GL::VertexArray> m_WorldVao;
|
std::unique_ptr<GL::VertexArray> m_WorldVao, m_MobVao, m_SelectTileVao;
|
||||||
std::unique_ptr<Model> m_SelectTileModel;
|
|
||||||
std::vector<TexturedModel> m_MobModels;
|
|
||||||
Vec2f m_CamPos;
|
Vec2f m_CamPos;
|
||||||
Vec2f m_CursorPos;
|
Vec2f m_CursorPos;
|
||||||
Vec2f m_HoldCursorPos;
|
Vec2f m_HoldCursorPos;
|
||||||
@@ -50,11 +45,10 @@ public:
|
|||||||
|
|
||||||
void LoadModels();
|
void LoadModels();
|
||||||
|
|
||||||
static ImVec4 GetImGuiTeamColor(game::TeamColor color);
|
|
||||||
|
|
||||||
void Update();
|
void Update();
|
||||||
void Render();
|
void Render();
|
||||||
|
|
||||||
|
void ResetCam();
|
||||||
void SetCamPos(float camX, float camY);
|
void SetCamPos(float camX, float camY);
|
||||||
|
|
||||||
void MoveCam(float relativeX, float relativeY);
|
void MoveCam(float relativeX, float relativeY);
|
||||||
@@ -68,7 +62,7 @@ private:
|
|||||||
void Click();
|
void Click();
|
||||||
void RenderWorld() const;
|
void RenderWorld() const;
|
||||||
void RenderTowers() const;
|
void RenderTowers() const;
|
||||||
void RenderMobs();
|
void RenderMobs() const;
|
||||||
void RenderTileSelect() const;
|
void RenderTileSelect() const;
|
||||||
void RenderPopups();
|
void RenderPopups();
|
||||||
void RenderMobTooltip() const;
|
void RenderMobTooltip() const;
|
||||||
@@ -1,16 +1,19 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "SummonMenu.h"
|
#include "SummonMenu.h"
|
||||||
|
#include "td/game/BaseGame.h"
|
||||||
|
|
||||||
namespace td {
|
namespace td {
|
||||||
namespace gui {
|
namespace gui {
|
||||||
|
|
||||||
class GameMenu : public GuiWidget {
|
class GameMenu : public GuiWidget, public game::GameListener {
|
||||||
private:
|
private:
|
||||||
std::unique_ptr<SummonMenu> m_SummonMenu;
|
std::unique_ptr<SummonMenu> m_SummonMenu;
|
||||||
public:
|
public:
|
||||||
GameMenu(client::Client* client);
|
GameMenu(client::Client* client);
|
||||||
|
|
||||||
|
virtual void OnGameBegin();
|
||||||
|
|
||||||
virtual void Render();
|
virtual void Render();
|
||||||
private:
|
private:
|
||||||
void ShowTPS();
|
void ShowTPS();
|
||||||
@@ -18,6 +21,8 @@ private:
|
|||||||
void ShowPlayers();
|
void ShowPlayers();
|
||||||
void ShowLobbyProgress();
|
void ShowLobbyProgress();
|
||||||
void ShowTeamSelection();
|
void ShowTeamSelection();
|
||||||
|
|
||||||
|
void DisconnectButton();
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace gui
|
} // namespace gui
|
||||||
13
include/client/render/gui/ImGuiTeamColor.h
Normal file
13
include/client/render/gui/ImGuiTeamColor.h
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "client/render/gui/imgui/imgui.h"
|
||||||
|
#include "td/game/Team.h"
|
||||||
|
|
||||||
|
namespace td {
|
||||||
|
namespace render {
|
||||||
|
|
||||||
|
ImVec4 GetImGuiTeamColor(game::TeamColor color);
|
||||||
|
|
||||||
|
} // namespace render
|
||||||
|
} // namespace td
|
||||||
|
|
||||||
@@ -4,13 +4,15 @@
|
|||||||
|
|
||||||
#include "imgui/imgui_filebrowser.h"
|
#include "imgui/imgui_filebrowser.h"
|
||||||
|
|
||||||
#include "game/server/Server.h"
|
#include "server/Server.h"
|
||||||
|
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
|
||||||
namespace td {
|
namespace td {
|
||||||
namespace gui {
|
namespace gui {
|
||||||
|
|
||||||
|
class ServerGui;
|
||||||
|
|
||||||
class MainMenu : public GuiWidget {
|
class MainMenu : public GuiWidget {
|
||||||
private:
|
private:
|
||||||
bool m_TriedToConnect = false;
|
bool m_TriedToConnect = false;
|
||||||
@@ -22,6 +24,7 @@ private:
|
|||||||
imgui_addons::ImGuiFileBrowser m_FileDialog;
|
imgui_addons::ImGuiFileBrowser m_FileDialog;
|
||||||
|
|
||||||
std::unique_ptr<server::Server> m_Server;
|
std::unique_ptr<server::Server> m_Server;
|
||||||
|
std::unique_ptr<ServerGui> m_ServerGui;
|
||||||
public:
|
public:
|
||||||
MainMenu(client::Client* client);
|
MainMenu(client::Client* client);
|
||||||
~MainMenu();
|
~MainMenu();
|
||||||
19
include/client/render/gui/ServerGui.h
Normal file
19
include/client/render/gui/ServerGui.h
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "GuiWidget.h"
|
||||||
|
#include "server/Server.h"
|
||||||
|
|
||||||
|
namespace td {
|
||||||
|
namespace gui {
|
||||||
|
|
||||||
|
class ServerGui : public GuiWidget {
|
||||||
|
private:
|
||||||
|
server::Server* m_Server;
|
||||||
|
public:
|
||||||
|
ServerGui(client::Client* client, server::Server* server);
|
||||||
|
|
||||||
|
virtual void Render();
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace gui
|
||||||
|
} // namespace td
|
||||||
@@ -3,7 +3,7 @@
|
|||||||
#include "GuiWidget.h"
|
#include "GuiWidget.h"
|
||||||
|
|
||||||
#include <array>
|
#include <array>
|
||||||
#include "game/Mobs.h"
|
#include "td/game/Mobs.h"
|
||||||
|
|
||||||
namespace td {
|
namespace td {
|
||||||
namespace gui {
|
namespace gui {
|
||||||
@@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
|
||||||
#include "render/gui/GuiManager.h"
|
#include "client/render/gui/GuiManager.h"
|
||||||
|
|
||||||
struct SDL_Window;
|
struct SDL_Window;
|
||||||
typedef void* SDL_GLContext;
|
typedef void* SDL_GLContext;
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
#include "GuiWidget.h"
|
#include "GuiWidget.h"
|
||||||
|
|
||||||
#include "Defines.h"
|
#include "td/Defines.h"
|
||||||
|
|
||||||
namespace td {
|
namespace td {
|
||||||
namespace gui {
|
namespace gui {
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
#include "GuiWidget.h"
|
#include "GuiWidget.h"
|
||||||
|
|
||||||
#include "Defines.h"
|
#include "td/Defines.h"
|
||||||
|
|
||||||
namespace td {
|
namespace td {
|
||||||
namespace gui {
|
namespace gui {
|
||||||
@@ -107,7 +107,7 @@ namespace ImGui
|
|||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "render/GL.h"
|
#include "client/render/GL.h"
|
||||||
|
|
||||||
#if defined(__ANDROID__)
|
#if defined(__ANDROID__)
|
||||||
#define IMGUI_IMPL_OPENGL_LOADER_ES3
|
#define IMGUI_IMPL_OPENGL_LOADER_ES3
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
#ifndef IMGUIFILEBROWSER_H
|
#ifndef IMGUIFILEBROWSER_H
|
||||||
#define IMGUIFILEBROWSER_H
|
#define IMGUIFILEBROWSER_H
|
||||||
|
|
||||||
#include "render/gui/imgui/imgui.h"
|
#include "client/render/gui/imgui/imgui.h"
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
@@ -70,24 +70,5 @@ public:
|
|||||||
void Unbind() const;
|
void Unbind() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
class Texture {
|
|
||||||
private:
|
|
||||||
unsigned int m_ID;
|
|
||||||
public:
|
|
||||||
REMOVE_COPY(Texture);
|
|
||||||
|
|
||||||
Texture(Texture&& other) {
|
|
||||||
m_ID = other.m_ID;
|
|
||||||
other.m_ID = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
Texture(const char* textureData, int width, int height, int comp);
|
|
||||||
~Texture();
|
|
||||||
|
|
||||||
unsigned int GetTextureID() const { return m_ID; }
|
|
||||||
void Bind() const;
|
|
||||||
static void Unbind();
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -8,12 +8,9 @@
|
|||||||
#ifndef RENDER_LOADER_TEXTURELOADER_H_
|
#ifndef RENDER_LOADER_TEXTURELOADER_H_
|
||||||
#define RENDER_LOADER_TEXTURELOADER_H_
|
#define RENDER_LOADER_TEXTURELOADER_H_
|
||||||
|
|
||||||
#include "render/loader/GLLoader.h"
|
|
||||||
#include <string>
|
|
||||||
|
|
||||||
namespace TextureLoader {
|
namespace TextureLoader {
|
||||||
|
|
||||||
GL::Texture LoadTexture(const std::string& fileName);
|
unsigned int LoadGLTexture(const char* fileName);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "game/World.h"
|
#include "td/game/World.h"
|
||||||
#include "GLLoader.h"
|
#include "GLLoader.h"
|
||||||
|
|
||||||
namespace td {
|
namespace td {
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
#include "Defines.h"
|
#include "td/Defines.h"
|
||||||
#include "render/GL.h"
|
#include "client/render/GL.h"
|
||||||
|
|
||||||
namespace td {
|
namespace td {
|
||||||
namespace shader {
|
namespace shader {
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "misc/DataBuffer.h"
|
#include "td/misc/DataBuffer.h"
|
||||||
|
|
||||||
#define TD_VERSION "alpha-0.3.0"
|
#define TD_VERSION "alpha-0.4.0"
|
||||||
|
|
||||||
namespace td {
|
namespace td {
|
||||||
namespace utils {
|
namespace utils {
|
||||||
@@ -1,639 +0,0 @@
|
|||||||
#pragma once
|
|
||||||
|
|
||||||
#include "misc/DataBuffer.h"
|
|
||||||
#include "game/World.h"
|
|
||||||
#include "game/BaseGame.h"
|
|
||||||
|
|
||||||
#include <memory>
|
|
||||||
|
|
||||||
namespace td {
|
|
||||||
namespace protocol {
|
|
||||||
|
|
||||||
class PacketHandler;
|
|
||||||
|
|
||||||
enum class PacketType : std::uint8_t {
|
|
||||||
// client --> server
|
|
||||||
PlayerLogin = 0,
|
|
||||||
SelectTeam,
|
|
||||||
SpawnMob,
|
|
||||||
SendMobs,
|
|
||||||
PlaceTower,
|
|
||||||
|
|
||||||
// client <-- server
|
|
||||||
PlayerJoin,
|
|
||||||
PlayerLeave,
|
|
||||||
WorldBeginData,
|
|
||||||
WorldData,
|
|
||||||
UpdateMoney,
|
|
||||||
UpdateEXP,
|
|
||||||
UpdateLobbyTime,
|
|
||||||
UpdateGameState,
|
|
||||||
PlayerList,
|
|
||||||
ConnectionInfo,
|
|
||||||
UpdatePlayerTeam,
|
|
||||||
ServerTps,
|
|
||||||
WorldAddTower,
|
|
||||||
UpdateMobStates,
|
|
||||||
UpdateCastleLife,
|
|
||||||
|
|
||||||
// client <--> server
|
|
||||||
KeepAlive,
|
|
||||||
Disconnect,
|
|
||||||
UpgradeTower,
|
|
||||||
RemoveTower,
|
|
||||||
PlayerBuyItem,
|
|
||||||
PlayerBuyMobUpgrade,
|
|
||||||
|
|
||||||
PACKET_COUNT
|
|
||||||
};
|
|
||||||
|
|
||||||
struct WorldHeader {
|
|
||||||
game::TowerTileColorPalette m_TowerPlacePalette;
|
|
||||||
Color m_WalkablePalette;
|
|
||||||
std::vector<Color> m_DecorationPalette;
|
|
||||||
Color m_Background;
|
|
||||||
|
|
||||||
game::SpawnColorPalette m_SpawnColorPalette;
|
|
||||||
|
|
||||||
game::TilePalette m_TilePalette;
|
|
||||||
|
|
||||||
game::Spawn m_RedSpawn, m_BlueSpawn;
|
|
||||||
game::TeamCastle m_RedCastle, m_BlueCastle;
|
|
||||||
|
|
||||||
const game::World* m_World;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct WorldData {
|
|
||||||
std::unordered_map<game::ChunkCoord, game::ChunkPtr> m_Chunks;
|
|
||||||
};
|
|
||||||
|
|
||||||
class Packet {
|
|
||||||
public:
|
|
||||||
Packet() {}
|
|
||||||
virtual ~Packet() {}
|
|
||||||
|
|
||||||
virtual DataBuffer Serialize(bool packetID = true) const = 0;
|
|
||||||
virtual void Deserialize(DataBuffer& data) = 0;
|
|
||||||
virtual void Dispatch(PacketHandler* handler) const = 0;
|
|
||||||
|
|
||||||
void WritePacketID(DataBuffer& data, bool packetID) const;
|
|
||||||
|
|
||||||
virtual PacketType GetType() const = 0;
|
|
||||||
std::uint8_t GetID() const { return static_cast<std::uint8_t>(GetType()); }
|
|
||||||
};
|
|
||||||
|
|
||||||
typedef std::unique_ptr<Packet> PacketPtr;
|
|
||||||
|
|
||||||
class KeepAlivePacket : public Packet {
|
|
||||||
private:
|
|
||||||
std::uint64_t m_AliveID;
|
|
||||||
public:
|
|
||||||
KeepAlivePacket() {}
|
|
||||||
KeepAlivePacket(std::uint64_t aliveID) : m_AliveID(aliveID) {}
|
|
||||||
virtual ~KeepAlivePacket() {}
|
|
||||||
|
|
||||||
virtual DataBuffer Serialize(bool packetID = true) const;
|
|
||||||
virtual void Deserialize(DataBuffer& data);
|
|
||||||
virtual void Dispatch(PacketHandler* handler) const;
|
|
||||||
|
|
||||||
std::uint64_t GetAliveID() const { return m_AliveID; }
|
|
||||||
|
|
||||||
virtual PacketType GetType() const { return PacketType::KeepAlive; }
|
|
||||||
};
|
|
||||||
|
|
||||||
class PlayerLoginPacket : public Packet {
|
|
||||||
private:
|
|
||||||
std::string m_PlayerName;
|
|
||||||
public:
|
|
||||||
PlayerLoginPacket() {}
|
|
||||||
PlayerLoginPacket(std::string playerName) : m_PlayerName(playerName) {}
|
|
||||||
virtual ~PlayerLoginPacket() {}
|
|
||||||
|
|
||||||
virtual DataBuffer Serialize(bool packetID = true) const;
|
|
||||||
virtual void Deserialize(DataBuffer& data);
|
|
||||||
virtual void Dispatch(PacketHandler* handler) const;
|
|
||||||
|
|
||||||
virtual PacketType GetType() const { return PacketType::PlayerLogin; }
|
|
||||||
|
|
||||||
const std::string& GetPlayerName() const { return m_PlayerName; }
|
|
||||||
};
|
|
||||||
|
|
||||||
class WorldBeginDataPacket : public Packet {
|
|
||||||
private:
|
|
||||||
WorldHeader m_Header;
|
|
||||||
public:
|
|
||||||
WorldBeginDataPacket() {}
|
|
||||||
WorldBeginDataPacket(const game::World* world) {
|
|
||||||
m_Header.m_World = world;
|
|
||||||
}
|
|
||||||
virtual ~WorldBeginDataPacket() {}
|
|
||||||
|
|
||||||
virtual DataBuffer Serialize(bool packetID = true) const;
|
|
||||||
virtual void Deserialize(DataBuffer& data);
|
|
||||||
virtual void Dispatch(PacketHandler* handler) const;
|
|
||||||
|
|
||||||
virtual PacketType GetType() const { return PacketType::WorldBeginData; }
|
|
||||||
|
|
||||||
const game::TowerTileColorPalette& GetTowerTilePalette() const { return m_Header.m_TowerPlacePalette; }
|
|
||||||
const Color& GetWalkableTileColor() const { return m_Header.m_WalkablePalette; }
|
|
||||||
const std::vector<Color>& GetDecorationPalette() const { return m_Header.m_DecorationPalette; }
|
|
||||||
const Color& GetBackgroundColor() const { return m_Header.m_Background; }
|
|
||||||
|
|
||||||
const game::Spawn& GetRedSpawn() const { return m_Header.m_RedSpawn; }
|
|
||||||
const game::Spawn& GetBlueSpawn() const { return m_Header.m_BlueSpawn; }
|
|
||||||
|
|
||||||
const game::SpawnColorPalette& GetSpawnPalette() const { return m_Header.m_SpawnColorPalette; }
|
|
||||||
|
|
||||||
const game::TeamCastle& GetRedCastle() const { return m_Header.m_RedCastle; }
|
|
||||||
const game::TeamCastle& GetBlueCastle() const { return m_Header.m_BlueCastle; }
|
|
||||||
|
|
||||||
const game::TilePalette GetTilePalette() const { return m_Header.m_TilePalette; }
|
|
||||||
|
|
||||||
void setWorldHeader(const WorldHeader& header) { m_Header = header; }
|
|
||||||
};
|
|
||||||
|
|
||||||
class WorldDataPacket : public Packet {
|
|
||||||
private:
|
|
||||||
WorldData m_WorldData;
|
|
||||||
|
|
||||||
const game::World* m_World;
|
|
||||||
public:
|
|
||||||
WorldDataPacket() {}
|
|
||||||
WorldDataPacket(const game::World* world) : m_World(world) {}
|
|
||||||
virtual ~WorldDataPacket() {}
|
|
||||||
|
|
||||||
virtual DataBuffer Serialize(bool packetID = true) const;
|
|
||||||
virtual void Deserialize(DataBuffer& data);
|
|
||||||
virtual void Dispatch(PacketHandler* handler) const;
|
|
||||||
|
|
||||||
virtual PacketType GetType() const { return PacketType::WorldData; }
|
|
||||||
|
|
||||||
const std::unordered_map<game::ChunkCoord, game::ChunkPtr>& GetChunks() const { return m_WorldData.m_Chunks; }
|
|
||||||
|
|
||||||
DataBuffer SerializeCustom() const; // allow serialisation with invalid World member
|
|
||||||
void SetWorldData(const WorldData& worldData) { m_WorldData = worldData; }
|
|
||||||
};
|
|
||||||
|
|
||||||
class UpdateMoneyPacket : public Packet {
|
|
||||||
private:
|
|
||||||
std::uint32_t m_NewAmount;
|
|
||||||
public:
|
|
||||||
UpdateMoneyPacket() {}
|
|
||||||
UpdateMoneyPacket(std::uint32_t newAmount) : m_NewAmount(newAmount) {}
|
|
||||||
virtual ~UpdateMoneyPacket() {}
|
|
||||||
|
|
||||||
std::uint32_t GetGold() const { return m_NewAmount; }
|
|
||||||
|
|
||||||
virtual DataBuffer Serialize(bool packetID = true) const;
|
|
||||||
virtual void Deserialize(DataBuffer& data);
|
|
||||||
virtual void Dispatch(PacketHandler* handler) const;
|
|
||||||
|
|
||||||
virtual PacketType GetType() const { return PacketType::UpdateMoney; }
|
|
||||||
};
|
|
||||||
|
|
||||||
class UpdateExpPacket : public Packet {
|
|
||||||
private:
|
|
||||||
std::uint32_t m_NewAmount;
|
|
||||||
public:
|
|
||||||
UpdateExpPacket() {}
|
|
||||||
UpdateExpPacket(std::uint32_t newAmount) : m_NewAmount(newAmount) {}
|
|
||||||
virtual ~UpdateExpPacket() {}
|
|
||||||
|
|
||||||
std::uint32_t GetExp() const { return m_NewAmount; }
|
|
||||||
|
|
||||||
virtual DataBuffer Serialize(bool packetID = true) const;
|
|
||||||
virtual void Deserialize(DataBuffer& data);
|
|
||||||
virtual void Dispatch(PacketHandler* handler) const;
|
|
||||||
|
|
||||||
virtual PacketType GetType() const { return PacketType::UpdateEXP; }
|
|
||||||
};
|
|
||||||
|
|
||||||
class UpdateLobbyTimePacket : public Packet {
|
|
||||||
private:
|
|
||||||
std::uint32_t m_RemainingTime;
|
|
||||||
public:
|
|
||||||
UpdateLobbyTimePacket() {}
|
|
||||||
UpdateLobbyTimePacket(std::uint32_t remainingTime) : m_RemainingTime(remainingTime) {}
|
|
||||||
virtual ~UpdateLobbyTimePacket() {}
|
|
||||||
|
|
||||||
virtual DataBuffer Serialize(bool packetID = true) const;
|
|
||||||
virtual void Deserialize(DataBuffer& data);
|
|
||||||
virtual void Dispatch(PacketHandler* handler) const;
|
|
||||||
|
|
||||||
std::uint32_t GetRemainingTime() const { return m_RemainingTime; }
|
|
||||||
|
|
||||||
virtual PacketType GetType() const { return PacketType::UpdateLobbyTime; }
|
|
||||||
};
|
|
||||||
|
|
||||||
class UpdateGameStatePacket : public Packet {
|
|
||||||
private:
|
|
||||||
game::GameState m_GameState;
|
|
||||||
public:
|
|
||||||
UpdateGameStatePacket() {}
|
|
||||||
UpdateGameStatePacket(game::GameState gameState) : m_GameState(gameState) {}
|
|
||||||
virtual ~UpdateGameStatePacket() {}
|
|
||||||
|
|
||||||
virtual DataBuffer Serialize(bool packetID = true) const;
|
|
||||||
virtual void Deserialize(DataBuffer& data);
|
|
||||||
virtual void Dispatch(PacketHandler* handler) const;
|
|
||||||
|
|
||||||
game::GameState GetGameState() const { return m_GameState; }
|
|
||||||
|
|
||||||
virtual PacketType GetType() const { return PacketType::UpdateGameState; }
|
|
||||||
};
|
|
||||||
|
|
||||||
struct PlayerInfo {
|
|
||||||
std::string name;
|
|
||||||
game::TeamColor team;
|
|
||||||
};
|
|
||||||
|
|
||||||
class PlayerListPacket : public Packet {
|
|
||||||
private:
|
|
||||||
std::map<std::uint8_t, PlayerInfo> m_Players;
|
|
||||||
public:
|
|
||||||
PlayerListPacket() {}
|
|
||||||
PlayerListPacket(std::map<std::uint8_t, PlayerInfo> players) : m_Players(players) {}
|
|
||||||
virtual ~PlayerListPacket() {}
|
|
||||||
|
|
||||||
virtual DataBuffer Serialize(bool packetID = true) const;
|
|
||||||
virtual void Deserialize(DataBuffer& data);
|
|
||||||
virtual void Dispatch(PacketHandler* handler) const;
|
|
||||||
|
|
||||||
const std::map<std::uint8_t, PlayerInfo>& GetPlayers() const { return m_Players; }
|
|
||||||
|
|
||||||
virtual PacketType GetType() const { return PacketType::PlayerList; }
|
|
||||||
};
|
|
||||||
|
|
||||||
class PlayerJoinPacket : public Packet {
|
|
||||||
private:
|
|
||||||
std::uint8_t m_PlayerID;
|
|
||||||
std::string m_PlayerName;
|
|
||||||
public:
|
|
||||||
PlayerJoinPacket() {}
|
|
||||||
PlayerJoinPacket(std::uint8_t playerID, const std::string& playerName) : m_PlayerID(playerID), m_PlayerName(playerName) {}
|
|
||||||
virtual ~PlayerJoinPacket() {}
|
|
||||||
|
|
||||||
virtual DataBuffer Serialize(bool packetID = true) const;
|
|
||||||
virtual void Deserialize(DataBuffer& data);
|
|
||||||
virtual void Dispatch(PacketHandler* handler) const;
|
|
||||||
|
|
||||||
std::uint8_t GetPlayerID() const { return m_PlayerID; }
|
|
||||||
const std::string& GetPlayerName() const { return m_PlayerName; }
|
|
||||||
|
|
||||||
virtual PacketType GetType() const { return PacketType::PlayerJoin; }
|
|
||||||
};
|
|
||||||
|
|
||||||
class PlayerLeavePacket : public Packet {
|
|
||||||
private:
|
|
||||||
std::uint8_t m_PlayerID;
|
|
||||||
public:
|
|
||||||
PlayerLeavePacket() {}
|
|
||||||
PlayerLeavePacket(std::uint8_t playerID) : m_PlayerID(playerID) {}
|
|
||||||
virtual ~PlayerLeavePacket() {}
|
|
||||||
|
|
||||||
virtual DataBuffer Serialize(bool packetID = true) const;
|
|
||||||
virtual void Deserialize(DataBuffer& data);
|
|
||||||
virtual void Dispatch(PacketHandler* handler) const;
|
|
||||||
|
|
||||||
std::uint8_t GetPlayerID() const { return m_PlayerID; }
|
|
||||||
|
|
||||||
virtual PacketType GetType() const { return PacketType::PlayerLeave; }
|
|
||||||
};
|
|
||||||
|
|
||||||
class ConnexionInfoPacket : public Packet {
|
|
||||||
private:
|
|
||||||
std::uint8_t m_ConnectionID;
|
|
||||||
public:
|
|
||||||
ConnexionInfoPacket() {}
|
|
||||||
ConnexionInfoPacket(std::uint8_t connectionID) : m_ConnectionID(connectionID) {}
|
|
||||||
virtual ~ConnexionInfoPacket() {}
|
|
||||||
|
|
||||||
virtual DataBuffer Serialize(bool packetID = true) const;
|
|
||||||
virtual void Deserialize(DataBuffer& data);
|
|
||||||
virtual void Dispatch(PacketHandler* handler) const;
|
|
||||||
|
|
||||||
std::uint8_t GetConnectionID() const { return m_ConnectionID; }
|
|
||||||
|
|
||||||
virtual PacketType GetType() const { return PacketType::ConnectionInfo; }
|
|
||||||
};
|
|
||||||
|
|
||||||
class SelectTeamPacket : public Packet {
|
|
||||||
private:
|
|
||||||
game::TeamColor m_SelectedTeam;
|
|
||||||
public:
|
|
||||||
SelectTeamPacket() {}
|
|
||||||
SelectTeamPacket(game::TeamColor selectedTeam) : m_SelectedTeam(selectedTeam) {}
|
|
||||||
virtual ~SelectTeamPacket() {}
|
|
||||||
|
|
||||||
virtual DataBuffer Serialize(bool packetID = true) const;
|
|
||||||
virtual void Deserialize(DataBuffer& data);
|
|
||||||
virtual void Dispatch(PacketHandler* handler) const;
|
|
||||||
|
|
||||||
game::TeamColor GetSelectedTeam() const { return m_SelectedTeam; }
|
|
||||||
|
|
||||||
virtual PacketType GetType() const { return PacketType::SelectTeam; }
|
|
||||||
};
|
|
||||||
|
|
||||||
class UpdatePlayerTeamPacket : public Packet {
|
|
||||||
private:
|
|
||||||
std::uint8_t m_PlayerID;
|
|
||||||
game::TeamColor m_SelectedTeam;
|
|
||||||
public:
|
|
||||||
UpdatePlayerTeamPacket() {}
|
|
||||||
UpdatePlayerTeamPacket(std::uint8_t playerID, game::TeamColor selectedTeam) : m_PlayerID(playerID), m_SelectedTeam(selectedTeam) {}
|
|
||||||
virtual ~UpdatePlayerTeamPacket() {}
|
|
||||||
|
|
||||||
virtual DataBuffer Serialize(bool packetID = true) const;
|
|
||||||
virtual void Deserialize(DataBuffer& data);
|
|
||||||
virtual void Dispatch(PacketHandler* handler) const;
|
|
||||||
|
|
||||||
game::TeamColor GetSelectedTeam() const { return m_SelectedTeam; }
|
|
||||||
std::uint8_t GetPlayerID() const { return m_PlayerID; }
|
|
||||||
|
|
||||||
virtual PacketType GetType() const { return PacketType::UpdatePlayerTeam; }
|
|
||||||
};
|
|
||||||
|
|
||||||
class DisconnectPacket : public Packet {
|
|
||||||
private:
|
|
||||||
std::string m_Reason; // only when sent from server
|
|
||||||
public:
|
|
||||||
DisconnectPacket() {}
|
|
||||||
DisconnectPacket(std::string reason) : m_Reason(reason) {}
|
|
||||||
virtual ~DisconnectPacket() {}
|
|
||||||
|
|
||||||
virtual DataBuffer Serialize(bool packetID = true) const;
|
|
||||||
virtual void Deserialize(DataBuffer& data);
|
|
||||||
virtual void Dispatch(PacketHandler* handler) const;
|
|
||||||
|
|
||||||
const std::string& GetReason() const { return m_Reason; }
|
|
||||||
|
|
||||||
virtual PacketType GetType() const { return PacketType::Disconnect; }
|
|
||||||
};
|
|
||||||
|
|
||||||
class ServerTpsPacket : public Packet {
|
|
||||||
private:
|
|
||||||
float m_TPS;
|
|
||||||
float m_MSPT;
|
|
||||||
std::uint64_t m_PacketSendTime; // used to calculate ping
|
|
||||||
public:
|
|
||||||
ServerTpsPacket() {}
|
|
||||||
ServerTpsPacket(float tps, float mspt, std::uint64_t sendTime) : m_TPS(tps), m_MSPT(mspt), m_PacketSendTime(sendTime) {}
|
|
||||||
virtual ~ServerTpsPacket() {}
|
|
||||||
|
|
||||||
virtual DataBuffer Serialize(bool packetID = true) const;
|
|
||||||
virtual void Deserialize(DataBuffer& data);
|
|
||||||
virtual void Dispatch(PacketHandler* handler) const;
|
|
||||||
|
|
||||||
float GetTPS() const { return m_TPS; }
|
|
||||||
float GetMSPT() const { return m_MSPT; }
|
|
||||||
std::uint64_t GetPacketSendTime() const { return m_PacketSendTime; }
|
|
||||||
|
|
||||||
virtual PacketType GetType() const { return PacketType::ServerTps; }
|
|
||||||
};
|
|
||||||
|
|
||||||
struct MobSend { // represents a mob send
|
|
||||||
game::MobType mobType : 4;
|
|
||||||
game::MobLevel mobLevel : 4;
|
|
||||||
std::uint8_t mobCount; // the max is 12
|
|
||||||
};
|
|
||||||
|
|
||||||
class SendMobsPacket : public Packet {
|
|
||||||
private:
|
|
||||||
std::vector<MobSend> m_MobSends;
|
|
||||||
public:
|
|
||||||
SendMobsPacket() {}
|
|
||||||
SendMobsPacket(const std::vector<MobSend>& mobSends) : m_MobSends(mobSends) {}
|
|
||||||
virtual ~SendMobsPacket() {}
|
|
||||||
|
|
||||||
virtual DataBuffer Serialize(bool packetID = true) const;
|
|
||||||
virtual void Deserialize(DataBuffer& data);
|
|
||||||
virtual void Dispatch(PacketHandler* handler) const;
|
|
||||||
|
|
||||||
const std::vector<MobSend>& GetMobSends() const { return m_MobSends; }
|
|
||||||
|
|
||||||
virtual PacketType GetType() const { return PacketType::SendMobs; }
|
|
||||||
};
|
|
||||||
|
|
||||||
class SpawnMobPacket : public Packet {
|
|
||||||
private:
|
|
||||||
game::MobID m_MobID;
|
|
||||||
game::MobType m_MobType;
|
|
||||||
game::MobLevel m_MobLevel;
|
|
||||||
game::Direction m_MobDirection;
|
|
||||||
game::PlayerID m_Sender;
|
|
||||||
float m_MobX, m_MobY;
|
|
||||||
public:
|
|
||||||
SpawnMobPacket() {}
|
|
||||||
SpawnMobPacket(game::MobID id, game::MobType type, std::uint8_t level, game::PlayerID sender,
|
|
||||||
float x, float y, game::Direction dir) : m_MobID(id), m_MobType(type), m_MobLevel(level),
|
|
||||||
m_MobDirection(dir), m_Sender(sender), m_MobX(x), m_MobY(y) {
|
|
||||||
}
|
|
||||||
virtual ~SpawnMobPacket() {}
|
|
||||||
|
|
||||||
virtual DataBuffer Serialize(bool packetID = true) const;
|
|
||||||
virtual void Deserialize(DataBuffer& data);
|
|
||||||
virtual void Dispatch(PacketHandler* handler) const;
|
|
||||||
|
|
||||||
game::MobID GetMobID() const { return m_MobID; }
|
|
||||||
game::MobType GetMobType() const { return m_MobType; }
|
|
||||||
game::MobLevel GetMobLevel() const { return m_MobLevel; }
|
|
||||||
game::Direction GetMobDirection() const { return m_MobDirection; }
|
|
||||||
game::PlayerID GetSender() const { return m_Sender; }
|
|
||||||
float GetMobX() const { return m_MobX; }
|
|
||||||
float GetMobY() const { return m_MobY; }
|
|
||||||
|
|
||||||
virtual PacketType GetType() const { return PacketType::SpawnMob; }
|
|
||||||
};
|
|
||||||
|
|
||||||
class PlaceTowerPacket : public Packet {
|
|
||||||
private:
|
|
||||||
std::int32_t m_TowerX, m_TowerY;
|
|
||||||
game::TowerType m_TowerType;
|
|
||||||
public:
|
|
||||||
PlaceTowerPacket() {}
|
|
||||||
PlaceTowerPacket(std::int32_t x, std::int32_t y, game::TowerType type) :
|
|
||||||
m_TowerX(x), m_TowerY(y), m_TowerType(type) {
|
|
||||||
}
|
|
||||||
virtual ~PlaceTowerPacket() {}
|
|
||||||
|
|
||||||
virtual DataBuffer Serialize(bool packetID = true) const;
|
|
||||||
virtual void Deserialize(DataBuffer& data);
|
|
||||||
virtual void Dispatch(PacketHandler* handler) const;
|
|
||||||
|
|
||||||
std::int32_t GetTowerX() const { return m_TowerX; }
|
|
||||||
std::int32_t GetTowerY() const { return m_TowerY; }
|
|
||||||
game::TowerType GetTowerType() const { return m_TowerType; }
|
|
||||||
|
|
||||||
virtual PacketType GetType() const { return PacketType::PlaceTower; }
|
|
||||||
};
|
|
||||||
|
|
||||||
class WorldAddTowerPacket : public Packet {
|
|
||||||
private:
|
|
||||||
game::TowerID m_TowerID;
|
|
||||||
std::int32_t m_TowerX, m_TowerY;
|
|
||||||
game::TowerType m_TowerType;
|
|
||||||
game::PlayerID m_Builder;
|
|
||||||
public:
|
|
||||||
WorldAddTowerPacket() {}
|
|
||||||
WorldAddTowerPacket(game::TowerID id, std::int32_t x, std::int32_t y, game::TowerType type, game::PlayerID player) :
|
|
||||||
m_TowerID(id), m_TowerX(x), m_TowerY(y), m_TowerType(type), m_Builder(player) {
|
|
||||||
}
|
|
||||||
virtual ~WorldAddTowerPacket() {}
|
|
||||||
|
|
||||||
virtual DataBuffer Serialize(bool packetID = true) const;
|
|
||||||
virtual void Deserialize(DataBuffer& data);
|
|
||||||
virtual void Dispatch(PacketHandler* handler) const;
|
|
||||||
|
|
||||||
game::TowerID GetTowerID() const { return m_TowerID; }
|
|
||||||
std::int32_t GetTowerX() const { return m_TowerX; }
|
|
||||||
std::int32_t GetTowerY() const { return m_TowerY; }
|
|
||||||
game::TowerType GetTowerType() const { return m_TowerType; }
|
|
||||||
game::PlayerID GetBuilder() const { return m_Builder; }
|
|
||||||
|
|
||||||
virtual PacketType GetType() const { return PacketType::WorldAddTower; }
|
|
||||||
};
|
|
||||||
|
|
||||||
class RemoveTowerPacket : public Packet {
|
|
||||||
private:
|
|
||||||
game::TowerID m_TowerID;
|
|
||||||
public:
|
|
||||||
RemoveTowerPacket() {}
|
|
||||||
RemoveTowerPacket(game::TowerID id) : m_TowerID(id) {}
|
|
||||||
virtual ~RemoveTowerPacket() {}
|
|
||||||
|
|
||||||
virtual DataBuffer Serialize(bool packetID = true) const;
|
|
||||||
virtual void Deserialize(DataBuffer& data);
|
|
||||||
virtual void Dispatch(PacketHandler* handler) const;
|
|
||||||
|
|
||||||
game::TowerID GetTowerID() const { return m_TowerID; }
|
|
||||||
|
|
||||||
virtual PacketType GetType() const { return PacketType::RemoveTower; }
|
|
||||||
};
|
|
||||||
|
|
||||||
class UpgradeTowerPacket : public Packet {
|
|
||||||
private:
|
|
||||||
game::TowerID m_TowerID;
|
|
||||||
game::TowerLevel m_TowerLevel;
|
|
||||||
public:
|
|
||||||
UpgradeTowerPacket() {}
|
|
||||||
UpgradeTowerPacket(game::TowerID tower, game::TowerLevel level) : m_TowerID(tower), m_TowerLevel(level) {}
|
|
||||||
virtual ~UpgradeTowerPacket() {}
|
|
||||||
|
|
||||||
virtual DataBuffer Serialize(bool packetID = true) const;
|
|
||||||
virtual void Deserialize(DataBuffer& data);
|
|
||||||
virtual void Dispatch(PacketHandler* handler) const;
|
|
||||||
|
|
||||||
game::TowerID GetTowerID() const { return m_TowerID; }
|
|
||||||
game::TowerLevel GetTowerLevel() const { return m_TowerLevel; }
|
|
||||||
|
|
||||||
virtual PacketType GetType() const { return PacketType::UpgradeTower; }
|
|
||||||
};
|
|
||||||
|
|
||||||
class MobState {
|
|
||||||
using Point = utils::shape::Point;
|
|
||||||
private:
|
|
||||||
game::MobID m_MobID;
|
|
||||||
Point m_MobPosition;
|
|
||||||
float m_MobLife;
|
|
||||||
game::Direction m_MobDirection;
|
|
||||||
public:
|
|
||||||
MobState() {}
|
|
||||||
MobState(game::MobID id, const Point& position, float life, game::Direction direction) :
|
|
||||||
m_MobID(id), m_MobPosition(position), m_MobLife(life), m_MobDirection(direction) {
|
|
||||||
}
|
|
||||||
|
|
||||||
game::MobID GetMobId() const { return m_MobID; }
|
|
||||||
Point GetMobPosition() const { return m_MobPosition; }
|
|
||||||
float GetMobLife() const { return m_MobLife; }
|
|
||||||
game::Direction GetMobDirection() const { return m_MobDirection; }
|
|
||||||
};
|
|
||||||
|
|
||||||
class UpdateMobStatesPacket : public Packet {
|
|
||||||
private:
|
|
||||||
std::vector<MobState> m_MobStates;
|
|
||||||
public:
|
|
||||||
UpdateMobStatesPacket() {}
|
|
||||||
virtual ~UpdateMobStatesPacket() {}
|
|
||||||
|
|
||||||
virtual DataBuffer Serialize(bool packetID = true) const;
|
|
||||||
virtual void Deserialize(DataBuffer& data);
|
|
||||||
virtual void Dispatch(PacketHandler* handler) const;
|
|
||||||
|
|
||||||
void addMobState(MobState mobState) { m_MobStates.push_back(mobState); }
|
|
||||||
|
|
||||||
const std::vector<MobState>& GetMobStates() const { return m_MobStates; }
|
|
||||||
|
|
||||||
virtual PacketType GetType() const { return PacketType::UpdateMobStates; }
|
|
||||||
};
|
|
||||||
|
|
||||||
class UpdateCastleLifePacket : public Packet {
|
|
||||||
private:
|
|
||||||
std::uint16_t m_CastleLife;
|
|
||||||
game::TeamColor m_Team;
|
|
||||||
public:
|
|
||||||
UpdateCastleLifePacket() {}
|
|
||||||
UpdateCastleLifePacket(std::uint16_t life, game::TeamColor team) : m_CastleLife(life), m_Team(team) {}
|
|
||||||
virtual ~UpdateCastleLifePacket() {}
|
|
||||||
|
|
||||||
virtual DataBuffer Serialize(bool packetID = true) const;
|
|
||||||
virtual void Deserialize(DataBuffer& data);
|
|
||||||
virtual void Dispatch(PacketHandler* handler) const;
|
|
||||||
|
|
||||||
std::uint16_t GetCastleLife() const { return m_CastleLife; }
|
|
||||||
game::TeamColor GetTeamColor() const { return m_Team; }
|
|
||||||
|
|
||||||
virtual PacketType GetType() const { return PacketType::UpdateCastleLife; }
|
|
||||||
};
|
|
||||||
|
|
||||||
enum class ItemType : std::uint8_t {
|
|
||||||
// Upgrades
|
|
||||||
ClickerUpgrade,
|
|
||||||
GoldPerSecUpgrade,
|
|
||||||
|
|
||||||
// Items
|
|
||||||
};
|
|
||||||
|
|
||||||
/** Packet used by the client to buy items or upgrades
|
|
||||||
Packet used by the server to confirm transaction */
|
|
||||||
class PlayerBuyItemPacket : public Packet {
|
|
||||||
private:
|
|
||||||
ItemType m_ItemType;
|
|
||||||
std::uint8_t m_Count;
|
|
||||||
public:
|
|
||||||
PlayerBuyItemPacket() {}
|
|
||||||
PlayerBuyItemPacket(ItemType itemType, std::uint8_t count) : m_ItemType(itemType), m_Count(count) {}
|
|
||||||
virtual ~PlayerBuyItemPacket() {}
|
|
||||||
|
|
||||||
virtual DataBuffer Serialize(bool packetID = true) const;
|
|
||||||
virtual void Deserialize(DataBuffer& data);
|
|
||||||
virtual void Dispatch(PacketHandler* handler) const;
|
|
||||||
|
|
||||||
ItemType GetItemType() const { return m_ItemType; }
|
|
||||||
std::uint8_t GetCount() const { return m_Count; }
|
|
||||||
|
|
||||||
virtual PacketType GetType() const { return PacketType::PlayerBuyItem; }
|
|
||||||
};
|
|
||||||
|
|
||||||
/** Packet used by the client to buy mob upgrades
|
|
||||||
Packet used by the server to confirm transaction */
|
|
||||||
class PlayerBuyMobUpgradePacket : public Packet {
|
|
||||||
private:
|
|
||||||
game::MobType m_MobType;
|
|
||||||
std::uint8_t m_MobLevel;
|
|
||||||
public:
|
|
||||||
PlayerBuyMobUpgradePacket() {}
|
|
||||||
PlayerBuyMobUpgradePacket(game::MobType mobType, std::uint8_t level) : m_MobType(mobType), m_MobLevel(level) {}
|
|
||||||
virtual ~PlayerBuyMobUpgradePacket() {}
|
|
||||||
|
|
||||||
virtual DataBuffer Serialize(bool packetID = true) const;
|
|
||||||
virtual void Deserialize(DataBuffer& data);
|
|
||||||
virtual void Dispatch(PacketHandler* handler) const;
|
|
||||||
|
|
||||||
game::MobType GetMobType() const { return m_MobType; }
|
|
||||||
std::uint8_t GetLevel() const { return m_MobLevel; }
|
|
||||||
|
|
||||||
virtual PacketType GetType() const { return PacketType::PlayerBuyMobUpgrade; }
|
|
||||||
};
|
|
||||||
|
|
||||||
} // namespace protocol
|
|
||||||
} // namespace td
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
#pragma once
|
|
||||||
|
|
||||||
#include "GLLoader.h"
|
|
||||||
#include "render/Renderer.h"
|
|
||||||
#include "game/Mobs.h"
|
|
||||||
|
|
||||||
namespace td {
|
|
||||||
namespace render {
|
|
||||||
|
|
||||||
namespace MobLoader {
|
|
||||||
|
|
||||||
TexturedModel LoadMobModel(game::MobType mobType);
|
|
||||||
|
|
||||||
} // namespace MobLoader
|
|
||||||
|
|
||||||
} // namespace render
|
|
||||||
} // namespace td
|
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
#include "misc/Time.h"
|
#include "td/misc/Time.h"
|
||||||
|
|
||||||
namespace td {
|
namespace td {
|
||||||
namespace server {
|
namespace server {
|
||||||
@@ -12,7 +12,7 @@ class Server;
|
|||||||
class Lobby {
|
class Lobby {
|
||||||
private:
|
private:
|
||||||
Server* m_Server;
|
Server* m_Server;
|
||||||
bool m_GameStarted = false;
|
bool m_LobbyOpened = false;
|
||||||
std::uint64_t m_StartTimerTime = 0;
|
std::uint64_t m_StartTimerTime = 0;
|
||||||
std::vector<std::uint8_t> m_Players;
|
std::vector<std::uint8_t> m_Players;
|
||||||
utils::AutoTimer m_Timer;
|
utils::AutoTimer m_Timer;
|
||||||
@@ -22,6 +22,8 @@ public:
|
|||||||
void OnPlayerJoin(std::uint8_t playerID);
|
void OnPlayerJoin(std::uint8_t playerID);
|
||||||
void OnPlayerLeave(std::uint8_t playerID);
|
void OnPlayerLeave(std::uint8_t playerID);
|
||||||
|
|
||||||
|
void OpenLobby();
|
||||||
|
|
||||||
void SendTimeRemaining();
|
void SendTimeRemaining();
|
||||||
|
|
||||||
void Tick();
|
void Tick();
|
||||||
@@ -3,13 +3,13 @@
|
|||||||
#include <map>
|
#include <map>
|
||||||
#include <thread>
|
#include <thread>
|
||||||
|
|
||||||
#include "network/TCPListener.h"
|
#include "td/network/TCPListener.h"
|
||||||
#include "protocol/Protocol.h"
|
#include "td/protocol/Protocol.h"
|
||||||
#include "protocol/PacketDispatcher.h"
|
#include "td/protocol/PacketDispatcher.h"
|
||||||
#include "protocol/PacketHandler.h"
|
#include "td/protocol/PacketHandler.h"
|
||||||
#include "ServerGame.h"
|
#include "server/game/ServerGame.h"
|
||||||
#include "ServerConnexion.h"
|
#include "server/ServerConnexion.h"
|
||||||
#include "Lobby.h"
|
#include "server/Lobby.h"
|
||||||
|
|
||||||
#define SERVER_TPS 20
|
#define SERVER_TPS 20
|
||||||
#define SERVER_TICK 1000 / SERVER_TPS
|
#define SERVER_TICK 1000 / SERVER_TPS
|
||||||
@@ -63,17 +63,23 @@ private:
|
|||||||
std::thread m_Thread;
|
std::thread m_Thread;
|
||||||
bool m_ServerRunning;
|
bool m_ServerRunning;
|
||||||
public:
|
public:
|
||||||
Server(const std::string& worldFilePath);
|
Server();
|
||||||
virtual ~Server();
|
virtual ~Server();
|
||||||
|
|
||||||
bool Start(std::uint16_t port);
|
bool Start(std::uint16_t port, bool blocking);
|
||||||
void Stop(); // force the server to stop
|
void Stop(); // force the server to stop
|
||||||
void Close(); // at the end of a game
|
void Close(); // at the end of a game
|
||||||
|
|
||||||
|
void Restart(); // go back to lobby state
|
||||||
|
|
||||||
|
bool LoadMap(const std::string& worldFilePath);
|
||||||
|
bool IsMapLoaded();
|
||||||
|
|
||||||
void RemoveConnexion(std::uint8_t connexionID);
|
void RemoveConnexion(std::uint8_t connexionID);
|
||||||
|
|
||||||
void BroadcastPacket(const protocol::Packet* packet);
|
void BroadcastPacket(const protocol::Packet* packet);
|
||||||
|
|
||||||
|
float GetMSPT() const { return m_TickCounter.GetMSPT(); }
|
||||||
float GetTPS() const { return m_TickCounter.GetTPS(); }
|
float GetTPS() const { return m_TickCounter.GetTPS(); }
|
||||||
|
|
||||||
bool IsRunning() { return m_ServerRunning; }
|
bool IsRunning() { return m_ServerRunning; }
|
||||||
@@ -95,6 +101,7 @@ private:
|
|||||||
void Clean();
|
void Clean();
|
||||||
void StartThread();
|
void StartThread();
|
||||||
void StopThread();
|
void StopThread();
|
||||||
|
void ServerLoop();
|
||||||
void Tick(std::uint64_t delta);
|
void Tick(std::uint64_t delta);
|
||||||
|
|
||||||
void OnPlayerJoin(std::uint8_t id);
|
void OnPlayerJoin(std::uint8_t id);
|
||||||
@@ -1,10 +1,10 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "network/TCPSocket.h"
|
#include "td/network/TCPSocket.h"
|
||||||
#include "protocol/PacketHandler.h"
|
#include "td/protocol/PacketHandler.h"
|
||||||
#include "protocol/PacketDispatcher.h"
|
#include "td/protocol/PacketDispatcher.h"
|
||||||
#include "game/Player.h"
|
#include "td/game/Player.h"
|
||||||
#include "game/Connexion.h"
|
#include "td/network/Connexion.h"
|
||||||
|
|
||||||
namespace td {
|
namespace td {
|
||||||
namespace server {
|
namespace server {
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "game/BaseGame.h"
|
#include "td/game/BaseGame.h"
|
||||||
#include "misc/Time.h"
|
#include "td/misc/Time.h"
|
||||||
#include "ServerWorld.h"
|
#include "ServerWorld.h"
|
||||||
|
|
||||||
namespace td {
|
namespace td {
|
||||||
@@ -23,6 +23,8 @@ public:
|
|||||||
ServerWorld* GetServerWorld() { return &m_ServerWorld; }
|
ServerWorld* GetServerWorld() { return &m_ServerWorld; }
|
||||||
|
|
||||||
virtual void Tick(std::uint64_t delta);
|
virtual void Tick(std::uint64_t delta);
|
||||||
|
virtual void Reset() override;
|
||||||
|
|
||||||
void StartGame();
|
void StartGame();
|
||||||
|
|
||||||
// GameListener
|
// GameListener
|
||||||
@@ -31,6 +33,9 @@ public:
|
|||||||
virtual void OnGameBegin() override;
|
virtual void OnGameBegin() override;
|
||||||
virtual void OnGameEnd() override;
|
virtual void OnGameEnd() override;
|
||||||
virtual void OnGameClose() override;
|
virtual void OnGameClose() override;
|
||||||
|
|
||||||
|
virtual void OnPlayerJoin(game::PlayerID id) override;
|
||||||
|
virtual void OnPlayerLeave(game::PlayerID id) override;
|
||||||
private:
|
private:
|
||||||
void BalanceTeams();
|
void BalanceTeams();
|
||||||
void InitPlayerStats();
|
void InitPlayerStats();
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "game/World.h"
|
#include "td/game/World.h"
|
||||||
|
|
||||||
namespace td {
|
namespace td {
|
||||||
namespace server {
|
namespace server {
|
||||||
@@ -2,6 +2,9 @@
|
|||||||
|
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
|
|
||||||
|
#define SAFE_CHECK(expr) if(!(expr)) return
|
||||||
|
|
||||||
|
|
||||||
namespace td {
|
namespace td {
|
||||||
|
|
||||||
static constexpr float PI = 3.141592653f;
|
static constexpr float PI = 3.141592653f;
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "game/Team.h"
|
#include "td/game/Team.h"
|
||||||
#include "game/World.h"
|
#include "td/game/World.h"
|
||||||
#include "game/Player.h"
|
#include "td/game/Player.h"
|
||||||
|
|
||||||
namespace td {
|
namespace td {
|
||||||
namespace game {
|
namespace game {
|
||||||
@@ -42,6 +42,8 @@ public:
|
|||||||
|
|
||||||
virtual void Tick(std::uint64_t delta);
|
virtual void Tick(std::uint64_t delta);
|
||||||
|
|
||||||
|
virtual void Reset();
|
||||||
|
|
||||||
Team& GetRedTeam() { return m_Teams[static_cast<std::uint8_t>(TeamColor::Red)]; }
|
Team& GetRedTeam() { return m_Teams[static_cast<std::uint8_t>(TeamColor::Red)]; }
|
||||||
const Team& GetRedTeam() const { return m_Teams[static_cast<std::uint8_t>(TeamColor::Red)]; }
|
const Team& GetRedTeam() const { return m_Teams[static_cast<std::uint8_t>(TeamColor::Red)]; }
|
||||||
|
|
||||||
@@ -65,6 +67,8 @@ public:
|
|||||||
|
|
||||||
const TeamList& GetTeams() const { return m_Teams; }
|
const TeamList& GetTeams() const { return m_Teams; }
|
||||||
|
|
||||||
|
void RemovePlayer(PlayerID pId);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace game
|
} // namespace game
|
||||||
@@ -1,11 +1,11 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "Defines.h"
|
#include "td/Defines.h"
|
||||||
#include "Towers.h"
|
#include "Towers.h"
|
||||||
#include "Types.h"
|
#include "Types.h"
|
||||||
#include "Team.h"
|
#include "Team.h"
|
||||||
|
|
||||||
#include "misc/ObjectNotifier.h"
|
#include "td/misc/ObjectNotifier.h"
|
||||||
|
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
@@ -99,7 +99,7 @@ private:
|
|||||||
utils::CooldownTimer m_AttackTimer;
|
utils::CooldownTimer m_AttackTimer;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Mob(MobID id, MobLevel level, PlayerID sender) : m_Sender(sender), m_Level(level),
|
Mob(MobID id, MobLevel level, PlayerID sender) : m_ID(id), m_Sender(sender), m_Level(level),
|
||||||
m_HitCooldown(0), m_EffectFireTimer(1000), m_EffectPoisonTimer(1000),
|
m_HitCooldown(0), m_EffectFireTimer(1000), m_EffectPoisonTimer(1000),
|
||||||
m_EffectHealTimer(1000), m_CastleTarget(nullptr), m_AttackTimer(1000) {
|
m_EffectHealTimer(1000), m_CastleTarget(nullptr), m_AttackTimer(1000) {
|
||||||
|
|
||||||
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
#include "game/Team.h"
|
#include "td/game/Team.h"
|
||||||
#include "game/PlayerUpgrades.h"
|
#include "td/game/PlayerUpgrades.h"
|
||||||
|
|
||||||
namespace td {
|
namespace td {
|
||||||
namespace game {
|
namespace game {
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
#include "Types.h"
|
#include "Types.h"
|
||||||
|
|
||||||
#include "misc/Shapes.h"
|
#include "td/misc/Shapes.h"
|
||||||
|
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
@@ -74,6 +74,7 @@ public:
|
|||||||
|
|
||||||
void AddPlayer(Player* newPlayer);
|
void AddPlayer(Player* newPlayer);
|
||||||
void RemovePlayer(const Player* player);
|
void RemovePlayer(const Player* player);
|
||||||
|
void ClearPlayers();
|
||||||
|
|
||||||
TeamColor GetColor() const;
|
TeamColor GetColor() const;
|
||||||
|
|
||||||
@@ -3,10 +3,10 @@
|
|||||||
#include <string>
|
#include <string>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
|
||||||
#include "misc/Time.h"
|
#include "td/misc/Time.h"
|
||||||
#include "misc/Shapes.h"
|
#include "td/misc/Shapes.h"
|
||||||
|
|
||||||
#include "game/Types.h"
|
#include "td/game/Types.h"
|
||||||
|
|
||||||
namespace td {
|
namespace td {
|
||||||
namespace game {
|
namespace game {
|
||||||
@@ -3,7 +3,7 @@
|
|||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
|
|
||||||
// include Log for every files
|
// include Log for every files
|
||||||
#include "misc/Log.h"
|
#include "td/misc/Log.h"
|
||||||
|
|
||||||
namespace td {
|
namespace td {
|
||||||
namespace game {
|
namespace game {
|
||||||
@@ -171,7 +171,10 @@ public:
|
|||||||
|
|
||||||
void Tick(std::uint64_t delta);
|
void Tick(std::uint64_t delta);
|
||||||
|
|
||||||
|
void Reset(); // clear mobs and towers
|
||||||
|
|
||||||
void SpawnMobAt(MobID id, MobType type, std::uint8_t level, PlayerID sender, float x, float y, Direction dir);
|
void SpawnMobAt(MobID id, MobType type, std::uint8_t level, PlayerID sender, float x, float y, Direction dir);
|
||||||
|
MobPtr RemoveMob(MobID id);
|
||||||
|
|
||||||
TowerPtr PlaceTowerAt(TowerID id, TowerType type, std::int32_t x, std::int32_t y, PlayerID builder);
|
TowerPtr PlaceTowerAt(TowerID id, TowerType type, std::int32_t x, std::int32_t y, PlayerID builder);
|
||||||
TowerPtr RemoveTower(TowerID id);
|
TowerPtr RemoveTower(TowerID id);
|
||||||
@@ -217,7 +220,9 @@ public:
|
|||||||
|
|
||||||
const TeamList& GetTeams() const;
|
const TeamList& GetTeams() const;
|
||||||
|
|
||||||
|
TowerList& GetTowers() { return m_Towers; }
|
||||||
const TowerList& GetTowers() const { return m_Towers; }
|
const TowerList& GetTowers() const { return m_Towers; }
|
||||||
|
|
||||||
TowerPtr GetTowerById(TowerID tower);
|
TowerPtr GetTowerById(TowerID tower);
|
||||||
|
|
||||||
const Player* GetPlayerById(PlayerID id) const;
|
const Player* GetPlayerById(PlayerID id) const;
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "Defines.h"
|
#include "td/Defines.h"
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
|
|
||||||
namespace td {
|
namespace td {
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "network/TCPSocket.h"
|
#include "td/network/TCPSocket.h"
|
||||||
#include "protocol/PacketHandler.h"
|
#include "td/protocol/PacketHandler.h"
|
||||||
#include "protocol/PacketDispatcher.h"
|
#include "td/protocol/PacketDispatcher.h"
|
||||||
#include "game/Player.h"
|
#include "td/game/Player.h"
|
||||||
|
|
||||||
namespace td {
|
namespace td {
|
||||||
namespace protocol {
|
namespace protocol {
|
||||||
@@ -12,10 +12,10 @@
|
|||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "network/Socket.h"
|
#include "td/network/Socket.h"
|
||||||
#include "network/IPAddress.h"
|
#include "td/network/IPAddress.h"
|
||||||
#include "network/UDPSocket.h"
|
#include "td/network/UDPSocket.h"
|
||||||
#include "network/TCPSocket.h"
|
#include "td/network/TCPSocket.h"
|
||||||
|
|
||||||
namespace td {
|
namespace td {
|
||||||
namespace network {
|
namespace network {
|
||||||
@@ -5,7 +5,7 @@
|
|||||||
#include <vector>
|
#include <vector>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
|
||||||
#include "misc/DataBuffer.h"
|
#include "td/misc/DataBuffer.h"
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
#include <ws2tcpip.h>
|
#include <ws2tcpip.h>
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
#ifndef NETWORK_TCP_SOCKET_H_
|
#ifndef NETWORK_TCP_SOCKET_H_
|
||||||
#define NETWORK_TCP_SOCKET_H_
|
#define NETWORK_TCP_SOCKET_H_
|
||||||
|
|
||||||
#include "network/IPAddress.h"
|
#include "td/network/IPAddress.h"
|
||||||
#include "network/Socket.h"
|
#include "td/network/Socket.h"
|
||||||
|
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
|
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
#ifndef NETWORK_UDP_SOCKET_H_
|
#ifndef NETWORK_UDP_SOCKET_H_
|
||||||
#define NETWORK_UDP_SOCKET_H_
|
#define NETWORK_UDP_SOCKET_H_
|
||||||
|
|
||||||
#include "network/IPAddress.h"
|
#include "td/network/IPAddress.h"
|
||||||
#include "network/Socket.h"
|
#include "td/network/Socket.h"
|
||||||
|
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
|
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "protocol/Protocol.h"
|
#include "td/protocol/Protocol.h"
|
||||||
|
|
||||||
#include <map>
|
#include <map>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "protocol/Protocol.h"
|
#include "td/protocol/Protocol.h"
|
||||||
|
|
||||||
namespace td {
|
namespace td {
|
||||||
namespace protocol {
|
namespace protocol {
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "protocol/Protocol.h"
|
#include "td/protocol/Protocol.h"
|
||||||
|
#include "td/protocol/PacketsForward.h"
|
||||||
|
|
||||||
namespace td {
|
namespace td {
|
||||||
namespace protocol {
|
namespace protocol {
|
||||||
@@ -26,6 +27,7 @@ public:
|
|||||||
virtual void HandlePacket(const PlayerLeavePacket* packet) {}
|
virtual void HandlePacket(const PlayerLeavePacket* packet) {}
|
||||||
virtual void HandlePacket(const PlayerListPacket* packet) {}
|
virtual void HandlePacket(const PlayerListPacket* packet) {}
|
||||||
virtual void HandlePacket(const PlayerLoginPacket* packet) {}
|
virtual void HandlePacket(const PlayerLoginPacket* packet) {}
|
||||||
|
virtual void HandlePacket(const RemoveMobPacket* packet) {}
|
||||||
virtual void HandlePacket(const RemoveTowerPacket* packet) {}
|
virtual void HandlePacket(const RemoveTowerPacket* packet) {}
|
||||||
virtual void HandlePacket(const SelectTeamPacket* packet) {}
|
virtual void HandlePacket(const SelectTeamPacket* packet) {}
|
||||||
virtual void HandlePacket(const SendMobsPacket* packet) {}
|
virtual void HandlePacket(const SendMobsPacket* packet) {}
|
||||||
28
include/td/protocol/Packets.h
Normal file
28
include/td/protocol/Packets.h
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
#include "packets/ConnectionInfoPacket.h"
|
||||||
|
#include "packets/DisconnectPacket.h"
|
||||||
|
#include "packets/KeepAlivePacket.h"
|
||||||
|
#include "packets/PlaceTowerPacket.h"
|
||||||
|
#include "packets/PlayerBuyItemPacket.h"
|
||||||
|
#include "packets/PlayerBuyMobUpgradePacket.h"
|
||||||
|
#include "packets/PlayerJoinPacket.h"
|
||||||
|
#include "packets/PlayerLeavePacket.h"
|
||||||
|
#include "packets/PlayerListPacket.h"
|
||||||
|
#include "packets/PlayerLoginPacket.h"
|
||||||
|
#include "packets/RemoveMobPacket.h"
|
||||||
|
#include "packets/RemoveTowerPacket.h"
|
||||||
|
#include "packets/SelectTeamPacket.h"
|
||||||
|
#include "packets/SendMobsPacket.h"
|
||||||
|
#include "packets/ServerTpsPacket.h"
|
||||||
|
#include "packets/SpawnMobPacket.h"
|
||||||
|
#include "packets/UpdateCastleLifePacket.h"
|
||||||
|
#include "packets/UpdateExpPacket.h"
|
||||||
|
#include "packets/UpdateGameStatePacket.h"
|
||||||
|
#include "packets/UpdateLobbyTimePacket.h"
|
||||||
|
#include "packets/UpdateMobStatesPacket.h"
|
||||||
|
#include "packets/UpdateMoneyPacket.h"
|
||||||
|
#include "packets/UpdatePlayerTeamPacket.h"
|
||||||
|
#include "packets/UpgradeTowerPacket.h"
|
||||||
|
#include "packets/WorldAddTowerPacket.h"
|
||||||
|
#include "packets/WorldAddTowerPacket.h"
|
||||||
|
#include "packets/WorldBeginDataPacket.h"
|
||||||
|
#include "packets/WorldDataPacket.h"
|
||||||
35
include/td/protocol/PacketsForward.h
Normal file
35
include/td/protocol/PacketsForward.h
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
namespace td {
|
||||||
|
namespace protocol {
|
||||||
|
|
||||||
|
class PlayerLoginPacket;
|
||||||
|
class WorldBeginDataPacket;
|
||||||
|
class WorldDataPacket;
|
||||||
|
class KeepAlivePacket;
|
||||||
|
class UpdateExpPacket;
|
||||||
|
class UpdateMoneyPacket;
|
||||||
|
class UpdateLobbyTimePacket;
|
||||||
|
class UpdateGameStatePacket;
|
||||||
|
class PlayerListPacket;
|
||||||
|
class PlayerJoinPacket;
|
||||||
|
class PlayerLeavePacket;
|
||||||
|
class ConnexionInfoPacket;
|
||||||
|
class SelectTeamPacket;
|
||||||
|
class UpdatePlayerTeamPacket;
|
||||||
|
class DisconnectPacket;
|
||||||
|
class ServerTpsPacket;
|
||||||
|
class SpawnMobPacket;
|
||||||
|
class PlaceTowerPacket;
|
||||||
|
class WorldAddTowerPacket;
|
||||||
|
class RemoveTowerPacket;
|
||||||
|
class SendMobsPacket;
|
||||||
|
class UpgradeTowerPacket;
|
||||||
|
class UpdateCastleLifePacket;
|
||||||
|
class UpdateMobStatesPacket;
|
||||||
|
class PlayerBuyItemPacket;
|
||||||
|
class PlayerBuyMobUpgradePacket;
|
||||||
|
class RemoveMobPacket;
|
||||||
|
|
||||||
|
} // namespace protocol
|
||||||
|
} // namespace td
|
||||||
67
include/td/protocol/Protocol.h
Normal file
67
include/td/protocol/Protocol.h
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "td/misc/DataBuffer.h"
|
||||||
|
|
||||||
|
#include <memory>
|
||||||
|
|
||||||
|
namespace td {
|
||||||
|
namespace protocol {
|
||||||
|
|
||||||
|
class PacketHandler;
|
||||||
|
|
||||||
|
enum class PacketType : std::uint8_t {
|
||||||
|
// client --> server
|
||||||
|
PlayerLogin = 0,
|
||||||
|
SelectTeam,
|
||||||
|
SendMobs,
|
||||||
|
PlaceTower,
|
||||||
|
|
||||||
|
// client <-- server
|
||||||
|
PlayerJoin,
|
||||||
|
PlayerLeave,
|
||||||
|
WorldBeginData,
|
||||||
|
WorldData,
|
||||||
|
UpdateMoney,
|
||||||
|
UpdateEXP,
|
||||||
|
UpdateLobbyTime,
|
||||||
|
UpdateGameState,
|
||||||
|
PlayerList,
|
||||||
|
ConnectionInfo,
|
||||||
|
UpdatePlayerTeam,
|
||||||
|
ServerTps,
|
||||||
|
WorldAddTower,
|
||||||
|
UpdateMobStates,
|
||||||
|
UpdateCastleLife,
|
||||||
|
SpawnMob,
|
||||||
|
RemoveMob,
|
||||||
|
|
||||||
|
// client <--> server
|
||||||
|
KeepAlive,
|
||||||
|
Disconnect,
|
||||||
|
UpgradeTower,
|
||||||
|
RemoveTower,
|
||||||
|
PlayerBuyItem,
|
||||||
|
PlayerBuyMobUpgrade,
|
||||||
|
|
||||||
|
PACKET_COUNT
|
||||||
|
};
|
||||||
|
|
||||||
|
class Packet {
|
||||||
|
public:
|
||||||
|
Packet() {}
|
||||||
|
virtual ~Packet() {}
|
||||||
|
|
||||||
|
virtual DataBuffer Serialize(bool packetID = true) const = 0;
|
||||||
|
virtual void Deserialize(DataBuffer& data) = 0;
|
||||||
|
virtual void Dispatch(PacketHandler* handler) const = 0;
|
||||||
|
|
||||||
|
void WritePacketID(DataBuffer& data, bool packetID) const;
|
||||||
|
|
||||||
|
virtual PacketType GetType() const = 0;
|
||||||
|
std::uint8_t GetID() const { return static_cast<std::uint8_t>(GetType()); }
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef std::unique_ptr<Packet> PacketPtr;
|
||||||
|
|
||||||
|
} // namespace protocol
|
||||||
|
} // namespace td
|
||||||
26
include/td/protocol/packets/ConnectionInfoPacket.h
Normal file
26
include/td/protocol/packets/ConnectionInfoPacket.h
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "td/protocol/Protocol.h"
|
||||||
|
|
||||||
|
namespace td {
|
||||||
|
namespace protocol {
|
||||||
|
|
||||||
|
class ConnexionInfoPacket : public Packet {
|
||||||
|
private:
|
||||||
|
std::uint8_t m_ConnectionID;
|
||||||
|
public:
|
||||||
|
ConnexionInfoPacket() {}
|
||||||
|
ConnexionInfoPacket(std::uint8_t connectionID) : m_ConnectionID(connectionID) {}
|
||||||
|
virtual ~ConnexionInfoPacket() {}
|
||||||
|
|
||||||
|
virtual DataBuffer Serialize(bool packetID = true) const;
|
||||||
|
virtual void Deserialize(DataBuffer& data);
|
||||||
|
virtual void Dispatch(PacketHandler* handler) const;
|
||||||
|
|
||||||
|
std::uint8_t GetConnectionID() const { return m_ConnectionID; }
|
||||||
|
|
||||||
|
virtual PacketType GetType() const { return PacketType::ConnectionInfo; }
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace protocol
|
||||||
|
} // namespace td
|
||||||
26
include/td/protocol/packets/DisconnectPacket.h
Normal file
26
include/td/protocol/packets/DisconnectPacket.h
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "td/protocol/Protocol.h"
|
||||||
|
|
||||||
|
namespace td {
|
||||||
|
namespace protocol {
|
||||||
|
|
||||||
|
class DisconnectPacket : public Packet {
|
||||||
|
private:
|
||||||
|
std::string m_Reason; // only when sent from server
|
||||||
|
public:
|
||||||
|
DisconnectPacket() {}
|
||||||
|
DisconnectPacket(std::string reason) : m_Reason(reason) {}
|
||||||
|
virtual ~DisconnectPacket() {}
|
||||||
|
|
||||||
|
virtual DataBuffer Serialize(bool packetID = true) const;
|
||||||
|
virtual void Deserialize(DataBuffer& data);
|
||||||
|
virtual void Dispatch(PacketHandler* handler) const;
|
||||||
|
|
||||||
|
const std::string& GetReason() const { return m_Reason; }
|
||||||
|
|
||||||
|
virtual PacketType GetType() const { return PacketType::Disconnect; }
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace protocol
|
||||||
|
} // namespace td
|
||||||
26
include/td/protocol/packets/KeepAlivePacket.h
Normal file
26
include/td/protocol/packets/KeepAlivePacket.h
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "td/protocol/Protocol.h"
|
||||||
|
|
||||||
|
namespace td {
|
||||||
|
namespace protocol {
|
||||||
|
|
||||||
|
class KeepAlivePacket : public Packet {
|
||||||
|
private:
|
||||||
|
std::uint64_t m_AliveID;
|
||||||
|
public:
|
||||||
|
KeepAlivePacket() {}
|
||||||
|
KeepAlivePacket(std::uint64_t aliveID) : m_AliveID(aliveID) {}
|
||||||
|
virtual ~KeepAlivePacket() {}
|
||||||
|
|
||||||
|
virtual DataBuffer Serialize(bool packetID = true) const;
|
||||||
|
virtual void Deserialize(DataBuffer& data);
|
||||||
|
virtual void Dispatch(PacketHandler* handler) const;
|
||||||
|
|
||||||
|
std::uint64_t GetAliveID() const { return m_AliveID; }
|
||||||
|
|
||||||
|
virtual PacketType GetType() const { return PacketType::KeepAlive; }
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace protocol
|
||||||
|
} // namespace td
|
||||||
32
include/td/protocol/packets/PlaceTowerPacket.h
Normal file
32
include/td/protocol/packets/PlaceTowerPacket.h
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "td/protocol/Protocol.h"
|
||||||
|
#include "td/game/BaseGame.h"
|
||||||
|
|
||||||
|
namespace td {
|
||||||
|
namespace protocol {
|
||||||
|
|
||||||
|
class PlaceTowerPacket : public Packet {
|
||||||
|
private:
|
||||||
|
std::int32_t m_TowerX, m_TowerY;
|
||||||
|
game::TowerType m_TowerType;
|
||||||
|
public:
|
||||||
|
PlaceTowerPacket() {}
|
||||||
|
PlaceTowerPacket(std::int32_t x, std::int32_t y, game::TowerType type) :
|
||||||
|
m_TowerX(x), m_TowerY(y), m_TowerType(type) {
|
||||||
|
}
|
||||||
|
virtual ~PlaceTowerPacket() {}
|
||||||
|
|
||||||
|
virtual DataBuffer Serialize(bool packetID = true) const;
|
||||||
|
virtual void Deserialize(DataBuffer& data);
|
||||||
|
virtual void Dispatch(PacketHandler* handler) const;
|
||||||
|
|
||||||
|
std::int32_t GetTowerX() const { return m_TowerX; }
|
||||||
|
std::int32_t GetTowerY() const { return m_TowerY; }
|
||||||
|
game::TowerType GetTowerType() const { return m_TowerType; }
|
||||||
|
|
||||||
|
virtual PacketType GetType() const { return PacketType::PlaceTower; }
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace protocol
|
||||||
|
} // namespace td
|
||||||
38
include/td/protocol/packets/PlayerBuyItemPacket.h
Normal file
38
include/td/protocol/packets/PlayerBuyItemPacket.h
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "td/protocol/Protocol.h"
|
||||||
|
|
||||||
|
namespace td {
|
||||||
|
namespace protocol {
|
||||||
|
|
||||||
|
enum class ItemType : std::uint8_t {
|
||||||
|
// Upgrades
|
||||||
|
ClickerUpgrade,
|
||||||
|
GoldPerSecUpgrade,
|
||||||
|
|
||||||
|
// Items
|
||||||
|
};
|
||||||
|
|
||||||
|
/** Packet used by the client to buy items or upgrades
|
||||||
|
Packet used by the server to confirm transaction */
|
||||||
|
class PlayerBuyItemPacket : public Packet {
|
||||||
|
private:
|
||||||
|
ItemType m_ItemType;
|
||||||
|
std::uint8_t m_Count;
|
||||||
|
public:
|
||||||
|
PlayerBuyItemPacket() {}
|
||||||
|
PlayerBuyItemPacket(ItemType itemType, std::uint8_t count) : m_ItemType(itemType), m_Count(count) {}
|
||||||
|
virtual ~PlayerBuyItemPacket() {}
|
||||||
|
|
||||||
|
virtual DataBuffer Serialize(bool packetID = true) const;
|
||||||
|
virtual void Deserialize(DataBuffer& data);
|
||||||
|
virtual void Dispatch(PacketHandler* handler) const;
|
||||||
|
|
||||||
|
ItemType GetItemType() const { return m_ItemType; }
|
||||||
|
std::uint8_t GetCount() const { return m_Count; }
|
||||||
|
|
||||||
|
virtual PacketType GetType() const { return PacketType::PlayerBuyItem; }
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace protocol
|
||||||
|
} // namespace td
|
||||||
31
include/td/protocol/packets/PlayerBuyMobUpgradePacket.h
Normal file
31
include/td/protocol/packets/PlayerBuyMobUpgradePacket.h
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "td/protocol/Protocol.h"
|
||||||
|
#include "td/game/BaseGame.h"
|
||||||
|
|
||||||
|
namespace td {
|
||||||
|
namespace protocol {
|
||||||
|
|
||||||
|
/** Packet used by the client to buy mob upgrades
|
||||||
|
Packet used by the server to confirm transaction */
|
||||||
|
class PlayerBuyMobUpgradePacket : public Packet {
|
||||||
|
private:
|
||||||
|
game::MobType m_MobType;
|
||||||
|
std::uint8_t m_MobLevel;
|
||||||
|
public:
|
||||||
|
PlayerBuyMobUpgradePacket() {}
|
||||||
|
PlayerBuyMobUpgradePacket(game::MobType mobType, std::uint8_t level) : m_MobType(mobType), m_MobLevel(level) {}
|
||||||
|
virtual ~PlayerBuyMobUpgradePacket() {}
|
||||||
|
|
||||||
|
virtual DataBuffer Serialize(bool packetID = true) const;
|
||||||
|
virtual void Deserialize(DataBuffer& data);
|
||||||
|
virtual void Dispatch(PacketHandler* handler) const;
|
||||||
|
|
||||||
|
game::MobType GetMobType() const { return m_MobType; }
|
||||||
|
std::uint8_t GetLevel() const { return m_MobLevel; }
|
||||||
|
|
||||||
|
virtual PacketType GetType() const { return PacketType::PlayerBuyMobUpgrade; }
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace protocol
|
||||||
|
} // namespace td
|
||||||
28
include/td/protocol/packets/PlayerJoinPacket.h
Normal file
28
include/td/protocol/packets/PlayerJoinPacket.h
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "td/protocol/Protocol.h"
|
||||||
|
|
||||||
|
namespace td {
|
||||||
|
namespace protocol {
|
||||||
|
|
||||||
|
class PlayerJoinPacket : public Packet {
|
||||||
|
private:
|
||||||
|
std::uint8_t m_PlayerID;
|
||||||
|
std::string m_PlayerName;
|
||||||
|
public:
|
||||||
|
PlayerJoinPacket() {}
|
||||||
|
PlayerJoinPacket(std::uint8_t playerID, const std::string& playerName) : m_PlayerID(playerID), m_PlayerName(playerName) {}
|
||||||
|
virtual ~PlayerJoinPacket() {}
|
||||||
|
|
||||||
|
virtual DataBuffer Serialize(bool packetID = true) const;
|
||||||
|
virtual void Deserialize(DataBuffer& data);
|
||||||
|
virtual void Dispatch(PacketHandler* handler) const;
|
||||||
|
|
||||||
|
std::uint8_t GetPlayerID() const { return m_PlayerID; }
|
||||||
|
const std::string& GetPlayerName() const { return m_PlayerName; }
|
||||||
|
|
||||||
|
virtual PacketType GetType() const { return PacketType::PlayerJoin; }
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace protocol
|
||||||
|
} // namespace td
|
||||||
26
include/td/protocol/packets/PlayerLeavePacket.h
Normal file
26
include/td/protocol/packets/PlayerLeavePacket.h
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "td/protocol/Protocol.h"
|
||||||
|
|
||||||
|
namespace td {
|
||||||
|
namespace protocol {
|
||||||
|
|
||||||
|
class PlayerLeavePacket : public Packet {
|
||||||
|
private:
|
||||||
|
std::uint8_t m_PlayerID;
|
||||||
|
public:
|
||||||
|
PlayerLeavePacket() {}
|
||||||
|
PlayerLeavePacket(std::uint8_t playerID) : m_PlayerID(playerID) {}
|
||||||
|
virtual ~PlayerLeavePacket() {}
|
||||||
|
|
||||||
|
virtual DataBuffer Serialize(bool packetID = true) const;
|
||||||
|
virtual void Deserialize(DataBuffer& data);
|
||||||
|
virtual void Dispatch(PacketHandler* handler) const;
|
||||||
|
|
||||||
|
std::uint8_t GetPlayerID() const { return m_PlayerID; }
|
||||||
|
|
||||||
|
virtual PacketType GetType() const { return PacketType::PlayerLeave; }
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace protocol
|
||||||
|
} // namespace td
|
||||||
32
include/td/protocol/packets/PlayerListPacket.h
Normal file
32
include/td/protocol/packets/PlayerListPacket.h
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "td/protocol/Protocol.h"
|
||||||
|
#include "td/game/BaseGame.h"
|
||||||
|
|
||||||
|
namespace td {
|
||||||
|
namespace protocol {
|
||||||
|
|
||||||
|
struct PlayerInfo {
|
||||||
|
std::string name;
|
||||||
|
game::TeamColor team;
|
||||||
|
};
|
||||||
|
|
||||||
|
class PlayerListPacket : public Packet {
|
||||||
|
private:
|
||||||
|
std::map<std::uint8_t, PlayerInfo> m_Players;
|
||||||
|
public:
|
||||||
|
PlayerListPacket() {}
|
||||||
|
PlayerListPacket(std::map<std::uint8_t, PlayerInfo> players) : m_Players(players) {}
|
||||||
|
virtual ~PlayerListPacket() {}
|
||||||
|
|
||||||
|
virtual DataBuffer Serialize(bool packetID = true) const;
|
||||||
|
virtual void Deserialize(DataBuffer& data);
|
||||||
|
virtual void Dispatch(PacketHandler* handler) const;
|
||||||
|
|
||||||
|
const std::map<std::uint8_t, PlayerInfo>& GetPlayers() const { return m_Players; }
|
||||||
|
|
||||||
|
virtual PacketType GetType() const { return PacketType::PlayerList; }
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace protocol
|
||||||
|
} // namespace td
|
||||||
26
include/td/protocol/packets/PlayerLoginPacket.h
Normal file
26
include/td/protocol/packets/PlayerLoginPacket.h
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "td/protocol/Protocol.h"
|
||||||
|
|
||||||
|
namespace td {
|
||||||
|
namespace protocol {
|
||||||
|
|
||||||
|
class PlayerLoginPacket : public Packet {
|
||||||
|
private:
|
||||||
|
std::string m_PlayerName;
|
||||||
|
public:
|
||||||
|
PlayerLoginPacket() {}
|
||||||
|
PlayerLoginPacket(std::string playerName) : m_PlayerName(playerName) {}
|
||||||
|
virtual ~PlayerLoginPacket() {}
|
||||||
|
|
||||||
|
virtual DataBuffer Serialize(bool packetID = true) const;
|
||||||
|
virtual void Deserialize(DataBuffer& data);
|
||||||
|
virtual void Dispatch(PacketHandler* handler) const;
|
||||||
|
|
||||||
|
virtual PacketType GetType() const { return PacketType::PlayerLogin; }
|
||||||
|
|
||||||
|
const std::string& GetPlayerName() const { return m_PlayerName; }
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace protocol
|
||||||
|
} // namespace td
|
||||||
27
include/td/protocol/packets/RemoveMobPacket.h
Normal file
27
include/td/protocol/packets/RemoveMobPacket.h
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "td/protocol/Protocol.h"
|
||||||
|
#include "td/game/BaseGame.h"
|
||||||
|
|
||||||
|
namespace td {
|
||||||
|
namespace protocol {
|
||||||
|
|
||||||
|
class RemoveMobPacket : public Packet {
|
||||||
|
private:
|
||||||
|
game::MobID m_MobID;
|
||||||
|
public:
|
||||||
|
RemoveMobPacket() {}
|
||||||
|
RemoveMobPacket(game::MobID id) : m_MobID(id) {}
|
||||||
|
virtual ~RemoveMobPacket() {}
|
||||||
|
|
||||||
|
virtual DataBuffer Serialize(bool packetID = true) const;
|
||||||
|
virtual void Deserialize(DataBuffer& data);
|
||||||
|
virtual void Dispatch(PacketHandler* handler) const;
|
||||||
|
|
||||||
|
game::MobID GetMobID() const { return m_MobID; }
|
||||||
|
|
||||||
|
virtual PacketType GetType() const { return PacketType::RemoveMob; }
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace protocol
|
||||||
|
} // namespace td
|
||||||
27
include/td/protocol/packets/RemoveTowerPacket.h
Normal file
27
include/td/protocol/packets/RemoveTowerPacket.h
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "td/protocol/Protocol.h"
|
||||||
|
#include "td/game/BaseGame.h"
|
||||||
|
|
||||||
|
namespace td {
|
||||||
|
namespace protocol {
|
||||||
|
|
||||||
|
class RemoveTowerPacket : public Packet {
|
||||||
|
private:
|
||||||
|
game::TowerID m_TowerID;
|
||||||
|
public:
|
||||||
|
RemoveTowerPacket() {}
|
||||||
|
RemoveTowerPacket(game::TowerID id) : m_TowerID(id) {}
|
||||||
|
virtual ~RemoveTowerPacket() {}
|
||||||
|
|
||||||
|
virtual DataBuffer Serialize(bool packetID = true) const;
|
||||||
|
virtual void Deserialize(DataBuffer& data);
|
||||||
|
virtual void Dispatch(PacketHandler* handler) const;
|
||||||
|
|
||||||
|
game::TowerID GetTowerID() const { return m_TowerID; }
|
||||||
|
|
||||||
|
virtual PacketType GetType() const { return PacketType::RemoveTower; }
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace protocol
|
||||||
|
} // namespace td
|
||||||
27
include/td/protocol/packets/SelectTeamPacket.h
Normal file
27
include/td/protocol/packets/SelectTeamPacket.h
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "td/protocol/Protocol.h"
|
||||||
|
#include "td/game/BaseGame.h"
|
||||||
|
|
||||||
|
namespace td {
|
||||||
|
namespace protocol {
|
||||||
|
|
||||||
|
class SelectTeamPacket : public Packet {
|
||||||
|
private:
|
||||||
|
game::TeamColor m_SelectedTeam;
|
||||||
|
public:
|
||||||
|
SelectTeamPacket() {}
|
||||||
|
SelectTeamPacket(game::TeamColor selectedTeam) : m_SelectedTeam(selectedTeam) {}
|
||||||
|
virtual ~SelectTeamPacket() {}
|
||||||
|
|
||||||
|
virtual DataBuffer Serialize(bool packetID = true) const;
|
||||||
|
virtual void Deserialize(DataBuffer& data);
|
||||||
|
virtual void Dispatch(PacketHandler* handler) const;
|
||||||
|
|
||||||
|
game::TeamColor GetSelectedTeam() const { return m_SelectedTeam; }
|
||||||
|
|
||||||
|
virtual PacketType GetType() const { return PacketType::SelectTeam; }
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace protocol
|
||||||
|
} // namespace td
|
||||||
33
include/td/protocol/packets/SendMobsPacket.h
Normal file
33
include/td/protocol/packets/SendMobsPacket.h
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "td/protocol/Protocol.h"
|
||||||
|
#include "td/game/BaseGame.h"
|
||||||
|
|
||||||
|
namespace td {
|
||||||
|
namespace protocol {
|
||||||
|
|
||||||
|
struct MobSend { // represents a mob send
|
||||||
|
game::MobType mobType : 4;
|
||||||
|
game::MobLevel mobLevel : 4;
|
||||||
|
std::uint8_t mobCount; // the max is 12
|
||||||
|
};
|
||||||
|
|
||||||
|
class SendMobsPacket : public Packet {
|
||||||
|
private:
|
||||||
|
std::vector<MobSend> m_MobSends;
|
||||||
|
public:
|
||||||
|
SendMobsPacket() {}
|
||||||
|
SendMobsPacket(const std::vector<MobSend>& mobSends) : m_MobSends(mobSends) {}
|
||||||
|
virtual ~SendMobsPacket() {}
|
||||||
|
|
||||||
|
virtual DataBuffer Serialize(bool packetID = true) const;
|
||||||
|
virtual void Deserialize(DataBuffer& data);
|
||||||
|
virtual void Dispatch(PacketHandler* handler) const;
|
||||||
|
|
||||||
|
const std::vector<MobSend>& GetMobSends() const { return m_MobSends; }
|
||||||
|
|
||||||
|
virtual PacketType GetType() const { return PacketType::SendMobs; }
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace protocol
|
||||||
|
} // namespace td
|
||||||
30
include/td/protocol/packets/ServerTpsPacket.h
Normal file
30
include/td/protocol/packets/ServerTpsPacket.h
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "td/protocol/Protocol.h"
|
||||||
|
|
||||||
|
namespace td {
|
||||||
|
namespace protocol {
|
||||||
|
|
||||||
|
class ServerTpsPacket : public Packet {
|
||||||
|
private:
|
||||||
|
float m_TPS;
|
||||||
|
float m_MSPT;
|
||||||
|
std::uint64_t m_PacketSendTime; // used to calculate ping
|
||||||
|
public:
|
||||||
|
ServerTpsPacket() {}
|
||||||
|
ServerTpsPacket(float tps, float mspt, std::uint64_t sendTime) : m_TPS(tps), m_MSPT(mspt), m_PacketSendTime(sendTime) {}
|
||||||
|
virtual ~ServerTpsPacket() {}
|
||||||
|
|
||||||
|
virtual DataBuffer Serialize(bool packetID = true) const;
|
||||||
|
virtual void Deserialize(DataBuffer& data);
|
||||||
|
virtual void Dispatch(PacketHandler* handler) const;
|
||||||
|
|
||||||
|
float GetTPS() const { return m_TPS; }
|
||||||
|
float GetMSPT() const { return m_MSPT; }
|
||||||
|
std::uint64_t GetPacketSendTime() const { return m_PacketSendTime; }
|
||||||
|
|
||||||
|
virtual PacketType GetType() const { return PacketType::ServerTps; }
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace protocol
|
||||||
|
} // namespace td
|
||||||
41
include/td/protocol/packets/SpawnMobPacket.h
Normal file
41
include/td/protocol/packets/SpawnMobPacket.h
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "td/protocol/Protocol.h"
|
||||||
|
#include "td/game/BaseGame.h"
|
||||||
|
|
||||||
|
namespace td {
|
||||||
|
namespace protocol {
|
||||||
|
|
||||||
|
class SpawnMobPacket : public Packet {
|
||||||
|
private:
|
||||||
|
game::MobID m_MobID;
|
||||||
|
game::MobType m_MobType;
|
||||||
|
game::MobLevel m_MobLevel;
|
||||||
|
game::Direction m_MobDirection;
|
||||||
|
game::PlayerID m_Sender;
|
||||||
|
float m_MobX, m_MobY;
|
||||||
|
public:
|
||||||
|
SpawnMobPacket() {}
|
||||||
|
SpawnMobPacket(game::MobID id, game::MobType type, std::uint8_t level, game::PlayerID sender,
|
||||||
|
float x, float y, game::Direction dir) : m_MobID(id), m_MobType(type), m_MobLevel(level),
|
||||||
|
m_MobDirection(dir), m_Sender(sender), m_MobX(x), m_MobY(y) {
|
||||||
|
}
|
||||||
|
virtual ~SpawnMobPacket() {}
|
||||||
|
|
||||||
|
virtual DataBuffer Serialize(bool packetID = true) const;
|
||||||
|
virtual void Deserialize(DataBuffer& data);
|
||||||
|
virtual void Dispatch(PacketHandler* handler) const;
|
||||||
|
|
||||||
|
game::MobID GetMobID() const { return m_MobID; }
|
||||||
|
game::MobType GetMobType() const { return m_MobType; }
|
||||||
|
game::MobLevel GetMobLevel() const { return m_MobLevel; }
|
||||||
|
game::Direction GetMobDirection() const { return m_MobDirection; }
|
||||||
|
game::PlayerID GetSender() const { return m_Sender; }
|
||||||
|
float GetMobX() const { return m_MobX; }
|
||||||
|
float GetMobY() const { return m_MobY; }
|
||||||
|
|
||||||
|
virtual PacketType GetType() const { return PacketType::SpawnMob; }
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace protocol
|
||||||
|
} // namespace td
|
||||||
29
include/td/protocol/packets/UpdateCastleLifePacket.h
Normal file
29
include/td/protocol/packets/UpdateCastleLifePacket.h
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "td/protocol/Protocol.h"
|
||||||
|
#include "td/game/BaseGame.h"
|
||||||
|
|
||||||
|
namespace td {
|
||||||
|
namespace protocol {
|
||||||
|
|
||||||
|
class UpdateCastleLifePacket : public Packet {
|
||||||
|
private:
|
||||||
|
std::uint16_t m_CastleLife;
|
||||||
|
game::TeamColor m_Team;
|
||||||
|
public:
|
||||||
|
UpdateCastleLifePacket() {}
|
||||||
|
UpdateCastleLifePacket(std::uint16_t life, game::TeamColor team) : m_CastleLife(life), m_Team(team) {}
|
||||||
|
virtual ~UpdateCastleLifePacket() {}
|
||||||
|
|
||||||
|
virtual DataBuffer Serialize(bool packetID = true) const;
|
||||||
|
virtual void Deserialize(DataBuffer& data);
|
||||||
|
virtual void Dispatch(PacketHandler* handler) const;
|
||||||
|
|
||||||
|
std::uint16_t GetCastleLife() const { return m_CastleLife; }
|
||||||
|
game::TeamColor GetTeamColor() const { return m_Team; }
|
||||||
|
|
||||||
|
virtual PacketType GetType() const { return PacketType::UpdateCastleLife; }
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace protocol
|
||||||
|
} // namespace td
|
||||||
26
include/td/protocol/packets/UpdateExpPacket.h
Normal file
26
include/td/protocol/packets/UpdateExpPacket.h
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "td/protocol/Protocol.h"
|
||||||
|
|
||||||
|
namespace td {
|
||||||
|
namespace protocol {
|
||||||
|
|
||||||
|
class UpdateExpPacket : public Packet {
|
||||||
|
private:
|
||||||
|
std::uint32_t m_NewAmount;
|
||||||
|
public:
|
||||||
|
UpdateExpPacket() {}
|
||||||
|
UpdateExpPacket(std::uint32_t newAmount) : m_NewAmount(newAmount) {}
|
||||||
|
virtual ~UpdateExpPacket() {}
|
||||||
|
|
||||||
|
std::uint32_t GetExp() const { return m_NewAmount; }
|
||||||
|
|
||||||
|
virtual DataBuffer Serialize(bool packetID = true) const;
|
||||||
|
virtual void Deserialize(DataBuffer& data);
|
||||||
|
virtual void Dispatch(PacketHandler* handler) const;
|
||||||
|
|
||||||
|
virtual PacketType GetType() const { return PacketType::UpdateEXP; }
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace protocol
|
||||||
|
} // namespace td
|
||||||
27
include/td/protocol/packets/UpdateGameStatePacket.h
Normal file
27
include/td/protocol/packets/UpdateGameStatePacket.h
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "td/protocol/Protocol.h"
|
||||||
|
#include "td/game/BaseGame.h"
|
||||||
|
|
||||||
|
namespace td {
|
||||||
|
namespace protocol {
|
||||||
|
|
||||||
|
class UpdateGameStatePacket : public Packet {
|
||||||
|
private:
|
||||||
|
game::GameState m_GameState;
|
||||||
|
public:
|
||||||
|
UpdateGameStatePacket() {}
|
||||||
|
UpdateGameStatePacket(game::GameState gameState) : m_GameState(gameState) {}
|
||||||
|
virtual ~UpdateGameStatePacket() {}
|
||||||
|
|
||||||
|
virtual DataBuffer Serialize(bool packetID = true) const;
|
||||||
|
virtual void Deserialize(DataBuffer& data);
|
||||||
|
virtual void Dispatch(PacketHandler* handler) const;
|
||||||
|
|
||||||
|
game::GameState GetGameState() const { return m_GameState; }
|
||||||
|
|
||||||
|
virtual PacketType GetType() const { return PacketType::UpdateGameState; }
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace protocol
|
||||||
|
} // namespace td
|
||||||
26
include/td/protocol/packets/UpdateLobbyTimePacket.h
Normal file
26
include/td/protocol/packets/UpdateLobbyTimePacket.h
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "td/protocol/Protocol.h"
|
||||||
|
|
||||||
|
namespace td {
|
||||||
|
namespace protocol {
|
||||||
|
|
||||||
|
class UpdateLobbyTimePacket : public Packet {
|
||||||
|
private:
|
||||||
|
std::uint32_t m_RemainingTime;
|
||||||
|
public:
|
||||||
|
UpdateLobbyTimePacket() {}
|
||||||
|
UpdateLobbyTimePacket(std::uint32_t remainingTime) : m_RemainingTime(remainingTime) {}
|
||||||
|
virtual ~UpdateLobbyTimePacket() {}
|
||||||
|
|
||||||
|
virtual DataBuffer Serialize(bool packetID = true) const;
|
||||||
|
virtual void Deserialize(DataBuffer& data);
|
||||||
|
virtual void Dispatch(PacketHandler* handler) const;
|
||||||
|
|
||||||
|
std::uint32_t GetRemainingTime() const { return m_RemainingTime; }
|
||||||
|
|
||||||
|
virtual PacketType GetType() const { return PacketType::UpdateLobbyTime; }
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace protocol
|
||||||
|
} // namespace td
|
||||||
47
include/td/protocol/packets/UpdateMobStatesPacket.h
Normal file
47
include/td/protocol/packets/UpdateMobStatesPacket.h
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "td/protocol/Protocol.h"
|
||||||
|
#include "td/game/BaseGame.h"
|
||||||
|
|
||||||
|
namespace td {
|
||||||
|
namespace protocol {
|
||||||
|
|
||||||
|
class MobState {
|
||||||
|
using Point = utils::shape::Point;
|
||||||
|
private:
|
||||||
|
game::MobID m_MobID;
|
||||||
|
Point m_MobPosition;
|
||||||
|
float m_MobLife;
|
||||||
|
game::Direction m_MobDirection;
|
||||||
|
public:
|
||||||
|
MobState() {}
|
||||||
|
MobState(game::MobID id, const Point& position, float life, game::Direction direction) :
|
||||||
|
m_MobID(id), m_MobPosition(position), m_MobLife(life), m_MobDirection(direction) {
|
||||||
|
}
|
||||||
|
|
||||||
|
game::MobID GetMobId() const { return m_MobID; }
|
||||||
|
Point GetMobPosition() const { return m_MobPosition; }
|
||||||
|
float GetMobLife() const { return m_MobLife; }
|
||||||
|
game::Direction GetMobDirection() const { return m_MobDirection; }
|
||||||
|
};
|
||||||
|
|
||||||
|
class UpdateMobStatesPacket : public Packet {
|
||||||
|
private:
|
||||||
|
std::vector<MobState> m_MobStates;
|
||||||
|
public:
|
||||||
|
UpdateMobStatesPacket() {}
|
||||||
|
virtual ~UpdateMobStatesPacket() {}
|
||||||
|
|
||||||
|
virtual DataBuffer Serialize(bool packetID = true) const;
|
||||||
|
virtual void Deserialize(DataBuffer& data);
|
||||||
|
virtual void Dispatch(PacketHandler* handler) const;
|
||||||
|
|
||||||
|
void addMobState(MobState mobState) { m_MobStates.push_back(mobState); }
|
||||||
|
|
||||||
|
const std::vector<MobState>& GetMobStates() const { return m_MobStates; }
|
||||||
|
|
||||||
|
virtual PacketType GetType() const { return PacketType::UpdateMobStates; }
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace protocol
|
||||||
|
} // namespace td
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user