mirror of
https://github.com/devZoGok/PlanetFleet.git
synced 2026-08-26 19:43:29 +00:00
42 lines
1.3 KiB
C++
42 lines
1.3 KiB
C++
#include "researchStruct.h"
|
|
#include "player.h"
|
|
|
|
namespace battleship{
|
|
using namespace std;
|
|
using namespace vb01;
|
|
using namespace gameBase;
|
|
|
|
ResearchStruct::ResearchStruct(Player *player, int id, Vector3 pos, Quaternion rot, int buildStatus, Unit::State state) : Structure(player, id, pos, rot, buildStatus, state){
|
|
sol::table unitTable = generateView()["units"][id + 1];
|
|
generationRate = unitTable["generationRate"];
|
|
generationSpeed = unitTable["generationSpeed"];
|
|
researchCost = unitTable["researchCost"];
|
|
}
|
|
|
|
void ResearchStruct::update(){
|
|
Structure::update();
|
|
|
|
if(!isComplete()) return;
|
|
|
|
if(researchQueue.empty() && health > .3 * maxHealth && player->getRefineds() >= researchCost && canUpdateResearch()){
|
|
player->addResearch(generationSpeed);
|
|
player->subtractRefineds(researchCost);
|
|
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;
|
|
}
|
|
}
|
|
}
|
|
}
|