From b9f01da8441d3750facf66d9424c2f9c51c02274 Mon Sep 17 00:00:00 2001 From: devZoGok Date: Sun, 25 Feb 2024 17:21:22 +0200 Subject: [PATCH] tech researching --- researchStruct.cpp | 21 ++++++++++++++++----- researchStruct.h | 9 +++++---- 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/researchStruct.cpp b/researchStruct.cpp index a7da75c..8a725f4 100644 --- a/researchStruct.cpp +++ b/researchStruct.cpp @@ -18,13 +18,24 @@ namespace battleship{ if(!isComplete()) return; - if(health > .3 * maxHealth && player->getRefineds() >= researchCost && canGenerateResearch()){ + if(researchQueue.empty() && health > .3 * maxHealth && player->getRefineds() >= researchCost && canUpdateResearch()){ player->addResearch(generationSpeed); player->subtractRefineds(researchCost); - lastGenTime = getTime(); + lastUpdateTime = getTime(); + } + else if(!researchQueue.empty()){ + int techCost = Game::getSingleton()->getTechnology(researchQueue[0]).cost; + int playerResearch = player->getResearch(); + + if(techCost > playerResearch && canUpdateResearch()){ + researchStatus += (int)((float)playerResearch / techCost); + lastUpdateTime = getTime(); + } + else if(researchStatus >= 100 || techCost <= playerResearch){ + player->addTechnology(researchQueue[0]); + researchQueue.erase(researchQueue.begin()); + researchStatus = 0; + } } } - - void ResearchStruct::researchTechnology(int techId){ - } } diff --git a/researchStruct.h b/researchStruct.h index d102e8e..21e085f 100644 --- a/researchStruct.h +++ b/researchStruct.h @@ -8,13 +8,14 @@ namespace battleship{ public: ResearchStruct(Player*, int, vb01::Vector3, vb01::Quaternion, int = 0, Unit::State = Unit::State::STAND_GROUND); void update(); + inline void appendToQueue(int tid){researchQueue.push_back(tid);} private: - vb01::s64 lastGenTime = 0; - int researchCost, generationRate, generationSpeed; + vb01::s64 lastUpdateTime = 0; + int researchCost, generationRate, generationSpeed, researchStatus = 0; + std::vector researchQueue; - bool canGenerateResearch(){return vb01::getTime() - lastGenTime > generationRate;} + bool canUpdateResearch(){return vb01::getTime() - lastGenTime > generationRate;} void generateResearch(); - void researchTechnology(int); }; }