From 0c68512cafcbd383a7bcfb5288644670f701f1da Mon Sep 17 00:00:00 2001 From: Persson-dev Date: Mon, 1 Nov 2021 15:24:33 +0100 Subject: [PATCH] feat: add android support --- include/game/World.h | 1 + include/game/client/WorldClient.h | 6 +++--- include/render/GL.h | 7 ++++++- include/render/shaders/ShaderProgram.h | 9 +++------ src/{Tower Defense.cpp => TowerDefense.cpp} | 0 src/misc/DataBuffer.cpp | 1 + src/render/Renderer.cpp | 8 +++++--- src/render/WorldRenderer.cpp | 2 +- src/render/gui/TowerGui.cpp | 12 ++++++++++-- src/render/gui/imgui/imconfig.h | 4 ++++ src/render/loader/GLLoader.cpp | 2 -- src/render/loader/TextureLoader.cpp | 4 +--- src/render/shaders/ShaderProgram.cpp | 3 --- src/window/Display.cpp | 4 +--- xmake.lua | 4 ++-- 15 files changed, 38 insertions(+), 29 deletions(-) rename src/{Tower Defense.cpp => TowerDefense.cpp} (100%) diff --git a/include/game/World.h b/include/game/World.h index 684267c..11489b0 100644 --- a/include/game/World.h +++ b/include/game/World.h @@ -5,6 +5,7 @@ #include #include #include +#include #include "Mobs.h" #include "Team.h" diff --git a/include/game/client/WorldClient.h b/include/game/client/WorldClient.h index c51b456..a583209 100644 --- a/include/game/client/WorldClient.h +++ b/include/game/client/WorldClient.h @@ -14,9 +14,9 @@ private: public: WorldClient(ClientGame* game); - virtual void HandlePacket(protocol::WorldBeginDataPacket* packet); - virtual void HandlePacket(protocol::WorldDataPacket* packet); - virtual void HandlePacket(protocol::SpawnMobPacket* packet); + virtual void HandlePacket(protocol::WorldBeginDataPacket* packet) override; + virtual void HandlePacket(protocol::WorldDataPacket* packet) override; + virtual void HandlePacket(protocol::SpawnMobPacket* packet) override; virtual void OnArrowShot(game::MobPtr target, game::Tower* shooter) override; }; diff --git a/include/render/GL.h b/include/render/GL.h index 063e023..9927b6d 100644 --- a/include/render/GL.h +++ b/include/render/GL.h @@ -1,3 +1,8 @@ #pragma once -#include "glbinding/gl/gl.h" \ No newline at end of file +#ifdef ANDROID +#include +#else +#include "glbinding/gl/gl.h" +using namespace gl; +#endif \ No newline at end of file diff --git a/include/render/shaders/ShaderProgram.h b/include/render/shaders/ShaderProgram.h index 72de021..dda7a4f 100755 --- a/include/render/shaders/ShaderProgram.h +++ b/include/render/shaders/ShaderProgram.h @@ -10,10 +10,7 @@ #include #include - -namespace gl { -enum class GLenum : unsigned int; -} +#include "render/GL.h" class ShaderProgram { public: @@ -40,8 +37,8 @@ private: unsigned int programID; unsigned int vertexShaderID; unsigned int fragmentShaderID; - int loadShaderFromFile(const std::string& file, gl::GLenum type); - int loadShader(const std::string& source, gl::GLenum type); + int loadShaderFromFile(const std::string& file, GLenum type); + int loadShader(const std::string& source, GLenum type); }; #endif /* RENDER_SHADERS_SHADERPROGRAM_H_ */ diff --git a/src/Tower Defense.cpp b/src/TowerDefense.cpp similarity index 100% rename from src/Tower Defense.cpp rename to src/TowerDefense.cpp diff --git a/src/misc/DataBuffer.cpp b/src/misc/DataBuffer.cpp index 2bc13fa..3782926 100644 --- a/src/misc/DataBuffer.cpp +++ b/src/misc/DataBuffer.cpp @@ -3,6 +3,7 @@ #include #include #include +#include namespace td { diff --git a/src/render/Renderer.cpp b/src/render/Renderer.cpp index fc7b45c..0edb79e 100644 --- a/src/render/Renderer.cpp +++ b/src/render/Renderer.cpp @@ -5,15 +5,15 @@ * Author: simon */ +#ifndef ANDROID +#include +#endif #include "render/Renderer.h" #include "render/GL.h" -#include #include #include "misc/Time.h" #include "misc/Easing.h" -using namespace gl; - namespace td { namespace render { @@ -43,7 +43,9 @@ void Renderer::initShader() { } bool Renderer::init() { + #ifndef ANDROID glbinding::Binding::initialize(); + #endif glEnable(GL_TEXTURE_2D); glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); diff --git a/src/render/WorldRenderer.cpp b/src/render/WorldRenderer.cpp index 5dbdde2..dbc545c 100644 --- a/src/render/WorldRenderer.cpp +++ b/src/render/WorldRenderer.cpp @@ -134,7 +134,7 @@ void WorldRenderer::renderPopups() const { break; } if (ImGui::IsItemHovered()) { - ImGui::SetTooltip(game::getTowerInfo(towerType).getDescription().c_str()); + ImGui::SetTooltip(game::getTowerInfo(towerType).getDescription().c_str(), "%s"); } } } diff --git a/src/render/gui/TowerGui.cpp b/src/render/gui/TowerGui.cpp index ef21fa0..7ad508e 100644 --- a/src/render/gui/TowerGui.cpp +++ b/src/render/gui/TowerGui.cpp @@ -136,7 +136,7 @@ void renderMainMenu() { static std::string worldFilePath; ImGui::InputInt("Server Port", &port, -1); - ImGui::Text(std::string("Fichier de monde sélectionné : " + (worldFilePath.empty() ? std::string("Aucun") : worldFilePath)).c_str()); + ImGui::Text("%s", std::string("Fichier de monde sélectionné : " + (worldFilePath.empty() ? std::string("Aucun") : worldFilePath)).c_str()); ImGui::SameLine(); if (ImGui::Button("Ouvrir un fichier")) { ImGui::OpenPopup("WorldFileDialog"); @@ -178,7 +178,7 @@ void showPlayers() { for (auto pair : client->getGame().getPlayers()) { const td::game::Player& player = pair.second; ImGui::PushStyleColor(ImGuiCol_Text, getImGuiTeamColor(player.getTeamColor())); - ImGui::Text(player.getName().c_str()); + ImGui::Text("%s", player.getName().c_str()); ImGui::PopStyleColor(); } ImGui::TreePop(); @@ -321,8 +321,16 @@ void tick() { lastTime = td::utils::getTime(); } +void pollEvents(){ + SDL_Event event; + while(SDL_PollEvent(&event)){ + ImGui_ImplSDL2_ProcessEvent(&event); + } +} + void render() { tick(); + pollEvents(); beginFrame(); client->render(); if (client->isConnected()) diff --git a/src/render/gui/imgui/imconfig.h b/src/render/gui/imgui/imconfig.h index c56cf42..9504348 100755 --- a/src/render/gui/imgui/imconfig.h +++ b/src/render/gui/imgui/imconfig.h @@ -107,4 +107,8 @@ namespace ImGui } */ +#ifdef ANDROID +#define IMGUI_IMPL_OPENGL_ES3 +#else #define IMGUI_IMPL_OPENGL_LOADER_GLBINDING2 +#endif \ No newline at end of file diff --git a/src/render/loader/GLLoader.cpp b/src/render/loader/GLLoader.cpp index 66fb556..d74c4ca 100644 --- a/src/render/loader/GLLoader.cpp +++ b/src/render/loader/GLLoader.cpp @@ -9,8 +9,6 @@ #include "render/loader/GLLoader.h" #include "render/GL.h" -using namespace gl; - namespace GL { VertexArray::~VertexArray() { diff --git a/src/render/loader/TextureLoader.cpp b/src/render/loader/TextureLoader.cpp index b738358..ef611a7 100644 --- a/src/render/loader/TextureLoader.cpp +++ b/src/render/loader/TextureLoader.cpp @@ -9,9 +9,7 @@ #define STB_IMAGE_IMPLEMENTATION #include "render/loader/stb_image.h" #include -#include - -using namespace gl; +#include "render/GL.h" namespace TextureLoader { const unsigned int loadGLTexture(const char* fileName) { diff --git a/src/render/shaders/ShaderProgram.cpp b/src/render/shaders/ShaderProgram.cpp index 192881f..472c5bf 100755 --- a/src/render/shaders/ShaderProgram.cpp +++ b/src/render/shaders/ShaderProgram.cpp @@ -7,14 +7,11 @@ #include "render/shaders/ShaderProgram.h" -#include #include #include #include -using namespace gl; - ShaderProgram::ShaderProgram() : programID(0), vertexShaderID(0), fragmentShaderID(0) { } diff --git a/src/window/Display.cpp b/src/window/Display.cpp index 7257ea5..cc46be5 100644 --- a/src/window/Display.cpp +++ b/src/window/Display.cpp @@ -12,9 +12,9 @@ #include #include #include "game/GameManager.h" -#include "imgui/imgui_impl_sdl.h" #include "render/Renderer.h" #include "render/WorldRenderer.h" +#include "../render/gui/imgui/imgui.h" #define WINDOW_NAME "Tower Defense" #define WINDOW_WIDTH 800 @@ -138,7 +138,6 @@ void destroy() { void pollEvents() { SDL_Event event; while(SDL_PollEvent(&event)){ - if(event.type == SDL_WINDOWEVENT){ switch(event.window.event){ case SDL_WINDOWEVENT_CLOSE:{ @@ -155,7 +154,6 @@ void pollEvents() { break; } } - ImGui_ImplSDL2_ProcessEvent(&event); } } diff --git a/xmake.lua b/xmake.lua index df26e99..e0599bc 100644 --- a/xmake.lua +++ b/xmake.lua @@ -1,8 +1,8 @@ add_rules("mode.debug", "mode.release") ---add_requires("glbinding", "glfw", "zlib", "glm") +--add_requires("SDL2", "glfw", "zlib", "glm") -target("Tower Defense") +target("TowerDefense") set_kind("binary") add_includedirs("include", "src/render/gui") add_files("src/*.cpp", "src/*/*.cpp", "src/*/*/*.cpp", "src/*/*/*/*.cpp")