From 0d9782e5604ab29f3843abbb488162c932500779 Mon Sep 17 00:00:00 2001 From: jonylu7 Date: Wed, 20 Mar 2024 01:36:46 +0800 Subject: [PATCH] cd time showing on UI initial version, UI text, font --- assets/.DS_Store | Bin 10244 -> 10244 bytes assets/fonts/sackersgothicstd-heavy.otf | Bin 0 -> 32128 bytes assets/fonts/sackersgothicstd-light.otf | Bin 0 -> 31876 bytes assets/fonts/sackersgothicstd-medium.otf | Bin 0 -> 32732 bytes assets/sprites/p05.png | Bin 0 -> 370 bytes include/Map.hpp | 10 +- include/UI/UI.hpp | 25 +- include/UI/UIScriptProcess.hpp | 33 +- src/Core/Context.cpp | 1 + src/Scene/DefaultScene.cpp | 19 +- src/UI/UI.cpp | 522 ++++++++++++----------- src/UI/UIScriptProcess.cpp | 72 ++-- 12 files changed, 370 insertions(+), 312 deletions(-) create mode 100644 assets/fonts/sackersgothicstd-heavy.otf create mode 100644 assets/fonts/sackersgothicstd-light.otf create mode 100644 assets/fonts/sackersgothicstd-medium.otf create mode 100644 assets/sprites/p05.png diff --git a/assets/.DS_Store b/assets/.DS_Store index a00aa5a442bd762658da0200e9fe982e3fc4428b..f6c19055a8d3823912730bd542b2ba8b7ba0abf9 100644 GIT binary patch delta 1553 zcmeH{U2F_d6vyX(+v*(*cU#45TU|D#M59UwrCRm1t$w7o?RE*Koy$&aXW5y4(8N~M z*Nb2&At880& zn_KZRb@GUy*5l_r_9|l=kKfA4N%K~e#MQC2v20fsQ{8GFWnLQSY%{iW8ur$qgsK#% z6J>UVuF*x2+K6s!Fu0z~s0C^vrK=NqRg{ajBP&JfG?{7CZ;2*OiDG4j%q-cz$uLt_ zOO@G_>2gz8YvbXe>{z1xTxA|*HF8TAk6K2=bb2gM%Bc&})2>_GL*?8Z$F;$d$rPL#PE2cR|zo~WbG2ism7ZQ~Uq#|j)v{-7ELQ=2PFAYei zrE~GuXNV z49jQ>bC#I^O@~x>Zr&uX;$a!WAx=1@NQA?LIh=5MvB$%RFr^dDEcGZXO;}D&-knn{ zLZpKEWs1Vmh56*6ymjteRjE)G%Ps_ECMADfvQ(5xSm|#de&NoKm7!7qU4V!Z delta 1647 zcmeH{O>9(E6vxm1w$S%tAHAg%8J-yjWvy?5>XW#ErN$5)~s}ezg9be8u#-{O$S$4Kdl9 zayG~vVhiUPSG*^ZmM61fjpYe96mHB1rblwTc4}Q*>bBCHou_hMNg=~G~f3PT1oJ%JwJ@snp9o3R?wNThTO#U~mD4z<1CjO(2H6TLaS4+B18Z}TOwa^-h z(KgD_M|6me( z!EgATRm52}GuRY1n=N9E>=m|xtz_@A9+qHzY_N0zhVsQWOTRE;IU*L8&{uPCX_!KJ#!QBsx} z%XI}TuPg*|DzFhY-qvdo*Ey9!wFcK}3OcU++c1pN_w*zELQeq2LLFux7eo`@z;dic z1RD@l?T;ajUf9^GAn*}zkwF$C*oj>VgWcGJeb|pY4&ZZz!eIr2kHSfu#u=Q$*SLhs zxPogK#|_-XE!s@aiA|IeTQ!u*-@kMrj* D)g6hb diff --git a/assets/fonts/sackersgothicstd-heavy.otf b/assets/fonts/sackersgothicstd-heavy.otf new file mode 100644 index 0000000000000000000000000000000000000000..89573d5d80ebac2ea1121fd698e5a813c3d52fc6 GIT binary patch literal 32128 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 literal 0 HcmV?d00001 diff --git a/assets/fonts/sackersgothicstd-light.otf b/assets/fonts/sackersgothicstd-light.otf new file mode 100644 index 0000000000000000000000000000000000000000..358c9433c17b068c7b145504b3ecee754d8b064d GIT binary patch literal 31876 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 literal 0 HcmV?d00001 diff --git a/assets/fonts/sackersgothicstd-medium.otf b/assets/fonts/sackersgothicstd-medium.otf new file mode 100644 index 0000000000000000000000000000000000000000..ec470352e9424ae0b8a4deca5d2be03774500907 GIT binary patch literal 32732 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 literal 0 HcmV?d00001 diff --git a/include/Map.hpp b/include/Map.hpp index 1b0bcb42..c733faea 100644 --- a/include/Map.hpp +++ b/include/Map.hpp @@ -79,21 +79,17 @@ class MapClass : public Core::Drawable { int(cellCoord[1] * CELL_SIZE.y) + 0.5 * CELL_SIZE.y); } - static std::shared_ptr getTileByCellPosition(glm::vec2 position) { - /* + std::shared_ptr getTileByCellPosition(glm::vec2 position) { + if (position.x > m_MapWdith - 1 || position.y > m_MapHeight - 1 || position.x < 0 || position.y < 0) { - LOG_DEBUG("False Position Getting"); return std::make_shared("null", 0, 0, 0, 0); } return m_Map[position.x][position.y]; - */ - return std::make_shared("null", 0, 0, 0, 0); - } static void setTileByCellPosition(glm::vec2 position, - std::shared_ptr tile) { + std::shared_ptr tile) { /* if (position.x > m_MapWdith - 1 || position.y > m_MapHeight - 1 || position.x < 0 || position.y < 0) { diff --git a/include/UI/UI.hpp b/include/UI/UI.hpp index bcb2ca94..258771d7 100644 --- a/include/UI/UI.hpp +++ b/include/UI/UI.hpp @@ -26,11 +26,12 @@ class UIClass { s_unitConstructCount[type] += value; } static void resetUnitConstructCount(unitType type) { - s_unitConstructCount[type] =0; + s_unitConstructCount[type] = 0; } std::unique_ptr getSelectedBuilding(); - bool getIfAnythingCanSelectToBuild();//避免Scene收到空的getSelectedBuilding + bool + getIfAnythingCanSelectToBuild(); // 避免Scene收到空的getSelectedBuilding private: UIScriptProcess ButtonScript; @@ -38,10 +39,18 @@ class UIClass { void ShowCursorSelectionRegion(ImVec2 *start_pos, ImVec2 *end_pos, ImGuiMouseButton mouse_button); void ShowPlayerConstructionMenu(); + void ShowHeaderSection(); + void ShowBuildingTab(); + void ShowInfantryTab(); + void ShowDefTab(); + void ShowVehTab(); std::vector getSpriteSheetCoordByIndex(std::shared_ptr spritesheet, int index); + + std::shared_ptr m_image = + std::make_shared("../assets/sprites/p05.png"); bool getImageButtonBySpriteSheetIndex(std::shared_ptr spritesheet, int index); @@ -57,12 +66,20 @@ class UIClass { Grid m_Grid; glm::vec2 m_GridSize = {100, 100}; - - //0318 + // 0318 bool getIfSelectToBuild(unitType type); void setSelectToBuild(unitType type); bool selectLock(); + ImGuiIO &io = ImGui::GetIO(); + + ImFont *sacker_med = io.Fonts->AddFontFromFileTTF( + "../assets/fonts/sackersgothicstd-medium.otf", 100); + ImFont *sacker_heav = io.Fonts->AddFontFromFileTTF( + "../assets/fonts/sackersgothicstd-heavy.otf", 100); + ImFont *sacker_light = io.Fonts->AddFontFromFileTTF( + "../assets/fonts/sackersgothicstd-light.otf", 100); + bool b_Baracks = false; bool b_OreRefinery = false; bool b_PowerPlants = false; diff --git a/include/UI/UIScriptProcess.hpp b/include/UI/UIScriptProcess.hpp index 9959402e..aca25370 100644 --- a/include/UI/UIScriptProcess.hpp +++ b/include/UI/UIScriptProcess.hpp @@ -4,32 +4,33 @@ #ifndef PRACTICALTOOLSFORSIMPLEDESIGN_UISCRIPTPROCESS_HPP #define PRACTICALTOOLSFORSIMPLEDESIGN_UISCRIPTPROCESS_HPP -#include "Structure/Structure.hpp" +#include "GameObjectID.hpp" +#include "Structure/AdvencePowerPlants.hpp" #include "Structure/Barracks.hpp" #include "Structure/OreRefinery.hpp" #include "Structure/PowerPlants.hpp" +#include "Structure/Structure.hpp" #include "Structure/WarFactory.hpp" -#include "Structure/AdvencePowerPlants.hpp" -#include "GameObjectID.hpp" -#include -#include -#include #include "Util/GameObject.hpp" +#include +#include +#include - -class UIScriptProcess{ +class UIScriptProcess { private: bool b_Baracks = false; bool b_OreRefinery = false; bool b_PowerPlants = false; bool b_WarFactory = false; bool b_ADVPowerPlant = false; - float TargetTime=0.F; - float m_CDLeft=0.f; + float TargetTime = 0.F; unitType m_currentStructure; - bool b_STALL=false; + bool b_STALL = false; std::deque buildQueue; std::chrono::time_point m_StartTime; + std::chrono::time_point + m_CountDownCurrentTime; + public: UIScriptProcess(){}; ~UIScriptProcess(){}; @@ -37,16 +38,18 @@ class UIScriptProcess{ bool GetIfFinished(unitType type); void SetFinished(unitType type); void SetUsed(unitType type); - float GetCDLeft(){ return m_CDLeft;} - //Event + float GetCDLeft(); + std::string GetFormattedCD(); + // Event void buttonEvent(unitType type); void Update(); - //CountDown + // CountDown void SetCoolDown(float time); void CountDown(); - //transform to ptr + // transform to ptr float GetStructureTime(unitType type); + private: std::shared_ptr barracks = std::make_shared(); std::shared_ptr oreRefinery = std::make_shared(); diff --git a/src/Core/Context.cpp b/src/Core/Context.cpp index 3a65403d..658e153a 100644 --- a/src/Core/Context.cpp +++ b/src/Core/Context.cpp @@ -71,6 +71,7 @@ Context::Context() { // init Imgui ImGui::CreateContext(); ImGuiIO &io = ImGui::GetIO(); + (void)io; io.ConfigFlags |= ImGuiConfigFlags_NavEnableKeyboard; diff --git a/src/Scene/DefaultScene.cpp b/src/Scene/DefaultScene.cpp index e819f1e2..75a26fce 100644 --- a/src/Scene/DefaultScene.cpp +++ b/src/Scene/DefaultScene.cpp @@ -13,8 +13,6 @@ void DefaultScene::Start() { m_TileSetSpriteSheet->Start("../assets/sprites/TILESET_Field.png", 24, 24, 20, 0); - m_OgMap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; - m_OgMap = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; std::vector> maps; for (unsigned int i = 0; i < 10; i++) { maps.push_back(std::make_shared("rock-" + std::to_string(i), @@ -31,20 +29,18 @@ void DefaultScene::Start() { DrawOverlays::OverlayShapes::R_CROSS); // m_GameObjectManager.Start(); - - //m_dummy.Start(); - m_waypointUnit.setCurrentCell({glm::vec2(0,0)}); - m_waypointUnit.setNextCell({glm::vec2(0,0)}); - m_waypointUnit.findPath(15,10); - + // m_dummy.Start(); + m_waypointUnit.setCurrentCell({glm::vec2(0, 0)}); + m_waypointUnit.setNextCell({glm::vec2(0, 0)}); + m_waypointUnit.findPath(15, 10); } void DefaultScene::Update() { - //m_dummy.Update(); + // m_dummy.Update(); m_waypointUnit.Update(); - for(auto i :m_BuiltStructure){ + for (auto i : m_BuiltStructure) { i->Update(); } @@ -70,8 +66,7 @@ void DefaultScene::Update() { m_testdraw.DrawUsingCamera(trans2, 1); // m_GameObjectManager.Update(); - - if(m_UI.getIfAnythingCanSelectToBuild()){ + if (m_UI.getIfAnythingCanSelectToBuild()) { m_BuiltStructure.push_back(m_UI.getSelectedBuilding()); m_BuiltStructure.back()->Start(); printf("(Scene) Structure Started\n"); diff --git a/src/UI/UI.cpp b/src/UI/UI.cpp index 874dfe24..9fb33587 100644 --- a/src/UI/UI.cpp +++ b/src/UI/UI.cpp @@ -17,6 +17,8 @@ void UIClass::Start() { "../assets/sprites/ICON_Allied_Infantry.png", 64, 48, 8, 0); m_VehiclesIconSpriteSheet->Start( "../assets/sprites/ICON_Allied_Vehicles.png", 64, 48, 12, 0); + + io.FontGlobalScale *= 0.115f; // Adjust as needed } void UIClass::Update() { @@ -31,7 +33,8 @@ void UIClass::Update() { ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData()); ButtonScript.Update(); - printf("(UI)Button Lock : %s,%s\n",selectLock()?"Unlock":"Lock",b_SelectToBuild?"True":"False"); + // printf("(UI)Button Lock : + // %s,%s\n",selectLock()?"Unlock":"Lock",b_SelectToBuild?"True":"False"); } void UIClass::ShowCursorSelectionRegion(ImVec2 *start_pos, ImVec2 *end_pos, @@ -52,13 +55,7 @@ void UIClass::ShowCursorSelectionRegion(ImVec2 *start_pos, ImVec2 *end_pos, } } -void UIClass::ShowPlayerConstructionMenu() { - auto windowSettings = ImGuiWindowFlags_NoMove | - ImGuiWindowFlags_NoScrollbar | - ImGuiWindowFlags_NoResize; - - // put the stuff in here - ImGui::Begin("Structure Selection Menu", nullptr, windowSettings); +void UIClass::ShowHeaderSection() { glm::vec2 CursorGlobalPosition = MapClass::ScreenToGlobalCoord( glm::vec2(Util::Input::GetCursorPosition())); @@ -73,206 +70,30 @@ void UIClass::ShowPlayerConstructionMenu() { // m_SceneCamera.getCameraZoom()).c_str()); ImGui::Text(fmt::format("$ {}", 1000).c_str()); ImGui::Text(fmt::format("Power {}", 50).c_str()); - ImGui::SetWindowSize(ImVec2(250, 580)); - ImGui::SetWindowPos(ImVec2(992, 48)); + ImGui::PushFont(sacker_med); if (ImGui::Button("Grid")) { } - if (ImGui::BeginTabBar("", ImGuiTabBarFlags_None)) { - - if (ImGui::BeginTabItem("Build")) { - if (getImageButtonBySpriteSheetIndex(m_StructureIconSpriteSheet, - 7)) { - // power plants - if(selectLock()&&ButtonScript.GetIfFinished(unitType::POWER_PLANT)){ - setSelectToBuild(unitType::POWER_PLANT); - }else{ - ButtonScript.buttonEvent(unitType::POWER_PLANT); - } - - LOG_DEBUG("TEST"); - } - ImGui::SameLine(); - if (getImageButtonBySpriteSheetIndex(m_StructureIconSpriteSheet, - 22)) { - // barracks - if(selectLock()&&ButtonScript.GetIfFinished(unitType::BARRACKS)) { - setSelectToBuild(unitType::BARRACKS); - }else { - ButtonScript.buttonEvent(unitType::BARRACKS); - } - LOG_DEBUG("TEST"); - } - ImGui::SameLine(); - if (getImageButtonBySpriteSheetIndex(m_StructureIconSpriteSheet, - 8)) { - // ore - if(selectLock()&&ButtonScript.GetIfFinished(unitType::ORE_REF)) { - setSelectToBuild(unitType::ORE_REF); - }else { - ButtonScript.buttonEvent(unitType::ORE_REF); - } - LOG_DEBUG("TEST"); - } + ImGui::PopFont(); +} +void UIClass::ShowPlayerConstructionMenu() { + auto windowSettings = ImGuiWindowFlags_NoMove | + ImGuiWindowFlags_NoScrollbar | + ImGuiWindowFlags_NoResize; - ImGui::NewLine(); - if (getImageButtonBySpriteSheetIndex(m_StructureIconSpriteSheet, - 20)) { - // war factory - if(selectLock()&&ButtonScript.GetIfFinished(unitType::WAR_FACT)) { - setSelectToBuild(unitType::WAR_FACT); - }else { - ButtonScript.buttonEvent(unitType::WAR_FACT); - } - LOG_DEBUG("TEST"); - } - ImGui::SameLine(); - if (getImageButtonBySpriteSheetIndex(m_StructureIconSpriteSheet, - 1)) { - // advance power - if(selectLock()&&ButtonScript.GetIfFinished(unitType::ADV_POWER_PLANT)) { - setSelectToBuild(unitType::ADV_POWER_PLANT); - }else { - ButtonScript.buttonEvent(unitType::ADV_POWER_PLANT); - } - LOG_DEBUG("TEST"); - } - if (ImGui::Button("Radar Dome")) { - LOG_DEBUG("TEST"); - } - if (ImGui::Button("Service Depot")) { - LOG_DEBUG("TEST"); - } - if (ImGui::Button("Tech Center")) { - LOG_DEBUG("TEST"); - } - ImGui::EndTabItem(); - } - if (ImGui::BeginTabItem("Def")) { - if (getImageButtonBySpriteSheetIndex(m_StructureIconSpriteSheet, - 18)) { - // sandbags - setUnitConstructCount(unitType::SANDBAGS, 1); - LOG_DEBUG("TEST"); - } - ImGui::SameLine(); - if (getImageButtonBySpriteSheetIndex(m_StructureIconSpriteSheet, - 16)) { - // pillbox - setUnitConstructCount(unitType::PILLBOX, 1); - LOG_DEBUG("TEST"); - } - ImGui::SameLine(); - if (getImageButtonBySpriteSheetIndex(m_StructureIconSpriteSheet, - 14)) { - // turret - setUnitConstructCount(unitType::TURRET, 1); - LOG_DEBUG("TEST"); - } - ImGui::EndTabItem(); - } + // put the stuff in here + ImGui::Begin("Structure Selection Menu", nullptr, windowSettings); + ShowHeaderSection(); + ImGui::SetWindowSize(ImVec2(250, 580)); + ImGui::SetWindowPos(ImVec2(992, 48)); - if (ImGui::BeginTabItem("Inf")) { - if (getImageButtonBySpriteSheetIndex(m_InfantryIconSpriteSheet, - 0)) { - // rifle - setUnitConstructCount(unitType::INFANTRY, 1); - LOG_DEBUG("TEST"); - } - ImGui::SameLine(); - if (getImageButtonBySpriteSheetIndex(m_InfantryIconSpriteSheet, - 1)) { - // rocket - // setUnitConstructCount(unitType::, 1); - LOG_DEBUG("TEST"); - } - ImGui::SameLine(); - if (getImageButtonBySpriteSheetIndex(m_InfantryIconSpriteSheet, - 2)) { - // engineer - // setUnitConstructCount(unitType::, 1); - LOG_DEBUG("TEST"); - } - ImGui::NewLine(); - if (getImageButtonBySpriteSheetIndex(m_InfantryIconSpriteSheet, - 3)) { - // medic - // setUnitConstructCount(unitType::, 1); - LOG_DEBUG("TEST"); - } - ImGui::SameLine(); - if (getImageButtonBySpriteSheetIndex(m_InfantryIconSpriteSheet, - 6)) { - // tanya - // setUnitConstructCount(unitType::, 1); - LOG_DEBUG("TEST"); - } - ImGui::EndTabItem(); - } + // Adjust font texture size if necessary + // Larger font texture size may improve text clarity on high DPI displays - if (ImGui::BeginTabItem("Veh")) { - if (getImageButtonBySpriteSheetIndex(m_VehiclesIconSpriteSheet, - 0)) { - // lightTank - // setUnitConstructCount(unitType::, 1); - LOG_DEBUG("TEST"); - } - ImGui::SameLine(); - if (getImageButtonBySpriteSheetIndex(m_VehiclesIconSpriteSheet, - 1)) { - // mediumTank - // setUnitConstructCount(unitType::, 1); - LOG_DEBUG("TEST"); - } - ImGui::SameLine(); - if (getImageButtonBySpriteSheetIndex(m_VehiclesIconSpriteSheet, - 4)) { - // Art - // setUnitConstructCount(unitType::, 1); - LOG_DEBUG("TEST"); - } - ImGui::NewLine(); - if (getImageButtonBySpriteSheetIndex(m_VehiclesIconSpriteSheet, - 4)) { - // Art - // setUnitConstructCount(unitType::, 1); - LOG_DEBUG("TEST"); - } - ImGui::SameLine(); - if (getImageButtonBySpriteSheetIndex(m_VehiclesIconSpriteSheet, - 8)) { - // OreTruck - // setUnitConstructCount(unitType::, 1); - LOG_DEBUG("TEST"); - } - ImGui::SameLine(); - if (getImageButtonBySpriteSheetIndex(m_VehiclesIconSpriteSheet, - 4)) { - // Art - // setUnitConstructCount(unitType::, 1); - LOG_DEBUG("TEST"); - } - ImGui::NewLine(); - if (getImageButtonBySpriteSheetIndex(m_VehiclesIconSpriteSheet, - 9)) { - // MCV - // setUnitConstructCount(unitType::, 1); - LOG_DEBUG("TEST"); - } - ImGui::SameLine(); - if (getImageButtonBySpriteSheetIndex(m_VehiclesIconSpriteSheet, - 11)) { - // DemoTruck - // setUnitConstructCount(unitType::, 1); - LOG_DEBUG("TEST"); - } - ImGui::SameLine(); - if (ImGui::Button("Truck")) { - // truck - setUnitConstructCount(unitType::TRUCK, 1); - LOG_DEBUG("TEST"); - } - ImGui::EndTabItem(); - } + if (ImGui::BeginTabBar("", ImGuiTabBarFlags_None)) { + ShowBuildingTab(); + ShowDefTab(); + ShowInfantryTab(); + ShowVehTab(); ImGui::EndTabBar(); } @@ -293,11 +114,216 @@ UIClass::getSpriteSheetCoordByIndex(std::shared_ptr spritesheet, .y)}); } +void UIClass::ShowBuildingTab() { + if (ImGui::BeginTabItem("Build")) { + if (getImageButtonBySpriteSheetIndex(m_StructureIconSpriteSheet, 7)) { + // power plants + if (selectLock() && + ButtonScript.GetIfFinished(unitType::POWER_PLANT)) { + setSelectToBuild(unitType::POWER_PLANT); + } else { + ButtonScript.buttonEvent(unitType::POWER_PLANT); + } + } + + ImDrawList *dl = ImGui::GetWindowDrawList(); + ImVec2 p = ImGui::GetCursorScreenPos(); + p.x += 5.F; + p.y -= 38.F; + ImGui::PushFont(sacker_heav); + + std::string s = + std::string(fmt::format("00:{:.0f}", ButtonScript.GetCDLeft())); + dl->AddText(p, IM_COL32(2, 255, 2, 255), s.c_str()); + + ImGui::SameLine(); + if (getImageButtonBySpriteSheetIndex(m_StructureIconSpriteSheet, 22)) { + // barracks + if (selectLock() && + ButtonScript.GetIfFinished(unitType::BARRACKS)) { + setSelectToBuild(unitType::BARRACKS); + } else { + ButtonScript.buttonEvent(unitType::BARRACKS); + } + } + p.x += 80.F; + dl->AddText(p, IM_COL32(2, 255, 2, 255), "sometext"); + ImGui::SameLine(); + if (getImageButtonBySpriteSheetIndex(m_StructureIconSpriteSheet, 8)) { + // ore + if (selectLock() && ButtonScript.GetIfFinished(unitType::ORE_REF)) { + setSelectToBuild(unitType::ORE_REF); + } else { + ButtonScript.buttonEvent(unitType::ORE_REF); + } + } + p.x += 80.F; + dl->AddText(p, IM_COL32(2, 255, 2, 255), "sometext"); + ImGui::NewLine(); + if (getImageButtonBySpriteSheetIndex(m_StructureIconSpriteSheet, 20)) { + + // war factory + if (selectLock() && + ButtonScript.GetIfFinished(unitType::WAR_FACT)) { + setSelectToBuild(unitType::WAR_FACT); + } else { + ButtonScript.buttonEvent(unitType::WAR_FACT); + } + } + dl = ImGui::GetWindowDrawList(); + p = ImGui::GetCursorScreenPos(); + p.x += 5.F; + p.y -= 38.F; + dl->AddText(p, IM_COL32(2, 255, 2, 255), "sometext"); + ImGui::SameLine(); + if (getImageButtonBySpriteSheetIndex(m_StructureIconSpriteSheet, 1)) { + // advance power + if (selectLock() && + ButtonScript.GetIfFinished(unitType::ADV_POWER_PLANT)) { + setSelectToBuild(unitType::ADV_POWER_PLANT); + } else { + ButtonScript.buttonEvent(unitType::ADV_POWER_PLANT); + } + LOG_DEBUG("TEST"); + } + p.x += 80.F; + dl->AddText(p, IM_COL32(2, 255, 2, 255), "sometext"); + + ImGui::NewLine(); + if (ImGui::Button("Radar Dome")) { + LOG_DEBUG("TEST"); + } + if (ImGui::Button("Service Depot")) { + LOG_DEBUG("TEST"); + } + if (ImGui::Button("Tech Center")) { + LOG_DEBUG("TEST"); + } + ImGui::PopFont(); + ImGui::EndTabItem(); + } +}; + +void UIClass::ShowInfantryTab() { + if (ImGui::BeginTabItem("Inf")) { + if (getImageButtonBySpriteSheetIndex(m_InfantryIconSpriteSheet, 0)) { + // rifle + setUnitConstructCount(unitType::INFANTRY, 1); + LOG_DEBUG("TEST"); + } + ImGui::SameLine(); + if (getImageButtonBySpriteSheetIndex(m_InfantryIconSpriteSheet, 1)) { + // rocket + // setUnitConstructCount(unitType::, 1); + LOG_DEBUG("TEST"); + } + ImGui::SameLine(); + if (getImageButtonBySpriteSheetIndex(m_InfantryIconSpriteSheet, 2)) { + // engineer + // setUnitConstructCount(unitType::, 1); + LOG_DEBUG("TEST"); + } + ImGui::NewLine(); + if (getImageButtonBySpriteSheetIndex(m_InfantryIconSpriteSheet, 3)) { + // medic + // setUnitConstructCount(unitType::, 1); + LOG_DEBUG("TEST"); + } + ImGui::SameLine(); + if (getImageButtonBySpriteSheetIndex(m_InfantryIconSpriteSheet, 6)) { + // tanya + // setUnitConstructCount(unitType::, 1); + LOG_DEBUG("TEST"); + } + ImGui::EndTabItem(); + } +}; +void UIClass::ShowDefTab() { + if (ImGui::BeginTabItem("Def")) { + if (getImageButtonBySpriteSheetIndex(m_StructureIconSpriteSheet, 18)) { + // sandbags + setUnitConstructCount(unitType::SANDBAGS, 1); + LOG_DEBUG("TEST"); + } + ImGui::SameLine(); + if (getImageButtonBySpriteSheetIndex(m_StructureIconSpriteSheet, 16)) { + // pillbox + setUnitConstructCount(unitType::PILLBOX, 1); + LOG_DEBUG("TEST"); + } + ImGui::SameLine(); + if (getImageButtonBySpriteSheetIndex(m_StructureIconSpriteSheet, 14)) { + // turret + setUnitConstructCount(unitType::TURRET, 1); + LOG_DEBUG("TEST"); + } + ImGui::EndTabItem(); + } +}; +void UIClass::ShowVehTab() { + if (ImGui::BeginTabItem("Veh")) { + if (getImageButtonBySpriteSheetIndex(m_VehiclesIconSpriteSheet, 0)) { + // lightTank + // setUnitConstructCount(unitType::, 1); + LOG_DEBUG("TEST"); + } + ImGui::SameLine(); + if (getImageButtonBySpriteSheetIndex(m_VehiclesIconSpriteSheet, 1)) { + // mediumTank + // setUnitConstructCount(unitType::, 1); + LOG_DEBUG("TEST"); + } + ImGui::SameLine(); + if (getImageButtonBySpriteSheetIndex(m_VehiclesIconSpriteSheet, 4)) { + // Art + // setUnitConstructCount(unitType::, 1); + LOG_DEBUG("TEST"); + } + ImGui::NewLine(); + if (getImageButtonBySpriteSheetIndex(m_VehiclesIconSpriteSheet, 4)) { + // Art + // setUnitConstructCount(unitType::, 1); + LOG_DEBUG("TEST"); + } + ImGui::SameLine(); + if (getImageButtonBySpriteSheetIndex(m_VehiclesIconSpriteSheet, 8)) { + + // OreTruck + // setUnitConstructCount(unitType::, 1); + LOG_DEBUG("TEST"); + } + ImGui::SameLine(); + if (getImageButtonBySpriteSheetIndex(m_VehiclesIconSpriteSheet, 4)) { + // Art + // setUnitConstructCount(unitType::, 1); + LOG_DEBUG("TEST"); + } + ImGui::NewLine(); + if (getImageButtonBySpriteSheetIndex(m_VehiclesIconSpriteSheet, 9)) { + // MCV + // setUnitConstructCount(unitType::, 1); + LOG_DEBUG("TEST"); + } + ImGui::SameLine(); + if (getImageButtonBySpriteSheetIndex(m_VehiclesIconSpriteSheet, 11)) { + // DemoTruck + // setUnitConstructCount(unitType::, 1); + LOG_DEBUG("TEST"); + } + ImGui::SameLine(); + if (ImGui::Button("Truck")) { + // truck + setUnitConstructCount(unitType::TRUCK, 1); + LOG_DEBUG("TEST"); + } + ImGui::EndTabItem(); + } +}; + bool UIClass::getImageButtonBySpriteSheetIndex( std::shared_ptr spritesheet, int index) { std::string Text = "test"; - ImDrawList *dl = ImGui::GetWindowDrawList(); - dl->AddText(ImVec2(100.f, 100.f), IM_COL32(255, 255, 255, 100), "TEST"); + auto uvcoord = getSpriteSheetCoordByIndex(spritesheet, index); return ImGui::ImageButton( (void *)(intptr_t)spritesheet->getGlunitByIndex(index), @@ -317,69 +343,75 @@ void UIClass::InitUnitQueue() { UIClass::s_unitConstructCount[unitType::INFANTRY] = 0; UIClass::s_unitConstructCount[unitType::TRUCK] = 0; } -std::unique_ptr UIClass::getSelectedBuilding(){ - b_SelectToBuild = false; - if(getIfSelectToBuild(unitType::BARRACKS)){ - setUnitConstructCount(unitType::BARRACKS,1); - b_Baracks= false; +std::unique_ptr UIClass::getSelectedBuilding() { + b_SelectToBuild = false; + if (getIfSelectToBuild(unitType::BARRACKS)) { + setUnitConstructCount(unitType::BARRACKS, 1); + b_Baracks = false; ButtonScript.SetUsed(unitType::BARRACKS); return std::make_unique(); } - if(getIfSelectToBuild(unitType::ORE_REF)){ - setUnitConstructCount(unitType::ORE_REF,1); - b_OreRefinery= false; + if (getIfSelectToBuild(unitType::ORE_REF)) { + setUnitConstructCount(unitType::ORE_REF, 1); + b_OreRefinery = false; ButtonScript.SetUsed(unitType::ORE_REF); return std::make_unique(); } - if(getIfSelectToBuild(unitType::POWER_PLANT)){ - setUnitConstructCount(unitType::POWER_PLANT,1); - b_PowerPlants= false; + if (getIfSelectToBuild(unitType::POWER_PLANT)) { + setUnitConstructCount(unitType::POWER_PLANT, 1); + b_PowerPlants = false; ButtonScript.SetUsed(unitType::POWER_PLANT); return std::make_unique(); } - if(getIfSelectToBuild(unitType::WAR_FACT)){ - setUnitConstructCount(unitType::WAR_FACT,1); - b_WarFactory= false; + if (getIfSelectToBuild(unitType::WAR_FACT)) { + setUnitConstructCount(unitType::WAR_FACT, 1); + b_WarFactory = false; ButtonScript.SetUsed(unitType::WAR_FACT); return std::make_unique(); } - if(getIfSelectToBuild(unitType::ADV_POWER_PLANT)){ - setUnitConstructCount(unitType::ADV_POWER_PLANT,1); - b_ADVPowerPlant= false; + if (getIfSelectToBuild(unitType::ADV_POWER_PLANT)) { + setUnitConstructCount(unitType::ADV_POWER_PLANT, 1); + b_ADVPowerPlant = false; ButtonScript.SetUsed(unitType::ADV_POWER_PLANT); return std::make_unique(); } } -bool UIClass::getIfSelectToBuild(unitType type){ - if (type==unitType::BARRACKS) { +bool UIClass::getIfSelectToBuild(unitType type) { + if (type == unitType::BARRACKS) { return b_Baracks; - } else if (type==unitType::ORE_REF) { + } else if (type == unitType::ORE_REF) { return b_OreRefinery; - } else if (type==unitType::POWER_PLANT) { + } else if (type == unitType::POWER_PLANT) { return b_PowerPlants; - } else if (type==unitType::WAR_FACT) { + } else if (type == unitType::WAR_FACT) { return b_WarFactory; - } else if (type==unitType::ADV_POWER_PLANT) { + } else if (type == unitType::ADV_POWER_PLANT) { return b_ADVPowerPlant; } } -void UIClass::setSelectToBuild(unitType type){ - b_SelectToBuild = true; - if (type==unitType::BARRACKS) { - b_Baracks= true; - } else if (type==unitType::ORE_REF) { - b_OreRefinery= true; - } else if (type==unitType::POWER_PLANT) { - b_PowerPlants= true; - } else if (type==unitType::WAR_FACT) { - b_WarFactory= true; - } else if (type==unitType::ADV_POWER_PLANT) { - b_ADVPowerPlant= true; +void UIClass::setSelectToBuild(unitType type) { + b_SelectToBuild = true; + if (type == unitType::BARRACKS) { + b_Baracks = true; + } else if (type == unitType::ORE_REF) { + b_OreRefinery = true; + } else if (type == unitType::POWER_PLANT) { + b_PowerPlants = true; + } else if (type == unitType::WAR_FACT) { + b_WarFactory = true; + } else if (type == unitType::ADV_POWER_PLANT) { + b_ADVPowerPlant = true; } } -bool UIClass::selectLock(){ - return !(b_Baracks|b_OreRefinery|b_PowerPlants|b_WarFactory|b_ADVPowerPlant); +bool UIClass::selectLock() { + return !(b_Baracks | b_OreRefinery | b_PowerPlants | b_WarFactory | + b_ADVPowerPlant); +} +bool UIClass::getIfAnythingCanSelectToBuild() { + return b_SelectToBuild && + (ButtonScript.GetIfFinished(unitType::BARRACKS) || + ButtonScript.GetIfFinished(unitType::POWER_PLANT) || + ButtonScript.GetIfFinished(unitType::ORE_REF) || + ButtonScript.GetIfFinished(unitType::WAR_FACT) || + ButtonScript.GetIfFinished(unitType::ADV_POWER_PLANT)); } -bool UIClass::getIfAnythingCanSelectToBuild(){ - return b_SelectToBuild&&(ButtonScript.GetIfFinished(unitType::BARRACKS)||ButtonScript.GetIfFinished(unitType::POWER_PLANT)||ButtonScript.GetIfFinished(unitType::ORE_REF)||ButtonScript.GetIfFinished(unitType::WAR_FACT)||ButtonScript.GetIfFinished(unitType::ADV_POWER_PLANT)); -} \ No newline at end of file diff --git a/src/UI/UIScriptProcess.cpp b/src/UI/UIScriptProcess.cpp index 0a8d8b88..f696522d 100644 --- a/src/UI/UIScriptProcess.cpp +++ b/src/UI/UIScriptProcess.cpp @@ -4,41 +4,55 @@ #include "UI/UIScriptProcess.hpp" bool UIScriptProcess::GetIfFinished(unitType type) { - if (type==unitType::BARRACKS) { + if (type == unitType::BARRACKS) { return b_Baracks; - } else if (type==unitType::ORE_REF) { + } else if (type == unitType::ORE_REF) { return b_OreRefinery; - } else if (type==unitType::POWER_PLANT) { + } else if (type == unitType::POWER_PLANT) { return b_PowerPlants; - } else if (type==unitType::WAR_FACT) { + } else if (type == unitType::WAR_FACT) { return b_WarFactory; - } else if (type==unitType::ADV_POWER_PLANT) { + } else if (type == unitType::ADV_POWER_PLANT) { return b_ADVPowerPlant; } } void UIScriptProcess::SetFinished(unitType type) { - if (type==unitType::BARRACKS) { + if (type == unitType::BARRACKS) { b_Baracks = true; - } else if (type==unitType::ORE_REF) { + } else if (type == unitType::ORE_REF) { b_OreRefinery = true; - } else if (type==unitType::POWER_PLANT) { + } else if (type == unitType::POWER_PLANT) { b_PowerPlants = true; - } else if (type==unitType::WAR_FACT) { + } else if (type == unitType::WAR_FACT) { b_WarFactory = true; - } else if (type==unitType::ADV_POWER_PLANT) { + } else if (type == unitType::ADV_POWER_PLANT) { b_ADVPowerPlant = true; } } +float UIScriptProcess::GetCDLeft() { + if (b_STALL) { + std::chrono::duration elapsed = + m_CountDownCurrentTime - m_StartTime; + return TargetTime - elapsed.count(); + } else { + return -1.F; + } +} +std::string UIScriptProcess::GetFormattedCD() { + // TODO:TBD + return ""; +} void UIScriptProcess::CountDown() { - auto current = std::chrono::high_resolution_clock::now(); - std::chrono::duration elapsed = current - m_StartTime; - if(b_STALL){ - m_CDLeft=elapsed.count(); - printf("(Button) %.0f CD: %.2f,%s\n",TargetTime,elapsed.count(),elapsed.count()>=TargetTime?"True":"False"); + m_CountDownCurrentTime = std::chrono::high_resolution_clock::now(); + std::chrono::duration elapsed = + m_CountDownCurrentTime - m_StartTime; + if (b_STALL) { + printf("(Button) CD: %.2f,%s\n", TargetTime - elapsed.count(), + elapsed.count() >= TargetTime ? "True" : "False"); } - if (elapsed.count()>=TargetTime&&b_STALL) { + if (elapsed.count() >= TargetTime && b_STALL) { printf("(Button) Construction Finished\n"); SetFinished(m_currentStructure); b_STALL = false; @@ -67,33 +81,33 @@ void UIScriptProcess::Update() { CountDown(); } -float UIScriptProcess::GetStructureTime(unitType type){ - if(type==unitType::POWER_PLANT){ +float UIScriptProcess::GetStructureTime(unitType type) { + if (type == unitType::POWER_PLANT) { return powerPlant->GetBuildingTime(); } - if(type==unitType::BARRACKS){ + if (type == unitType::BARRACKS) { return barracks->GetBuildingTime(); } - if(type==unitType::ORE_REF){ + if (type == unitType::ORE_REF) { return oreRefinery->GetBuildingTime(); } - if(type==unitType::WAR_FACT){ + if (type == unitType::WAR_FACT) { return warFactory->GetBuildingTime(); } - if(type==unitType::ADV_POWER_PLANT){ + if (type == unitType::ADV_POWER_PLANT) { return advPowerPlant->GetBuildingTime(); } } -void UIScriptProcess::SetUsed(unitType type){ - if (type==unitType::BARRACKS) { +void UIScriptProcess::SetUsed(unitType type) { + if (type == unitType::BARRACKS) { b_Baracks = false; - } else if (type==unitType::ORE_REF) { + } else if (type == unitType::ORE_REF) { b_OreRefinery = false; - } else if (type==unitType::POWER_PLANT) { + } else if (type == unitType::POWER_PLANT) { b_PowerPlants = false; - } else if (type==unitType::WAR_FACT) { + } else if (type == unitType::WAR_FACT) { b_WarFactory = false; - } else if (type==unitType::ADV_POWER_PLANT) { + } else if (type == unitType::ADV_POWER_PLANT) { b_ADVPowerPlant = false; } -} \ No newline at end of file +}