Files
PlanetFleet/trader.cpp
devZoGok 38d1bba585 Added in-game tooltips
More tooltip parameters
2026-08-08 16:46:12 +03:00

65 lines
1.6 KiB
C++

#include "trader.h"
#include "player.h"
#include <algorithm>
#include <solUtil.h>
namespace battleship{
using namespace std;
using namespace vb01;
using namespace gameBase;
Trader::Trader(){
initProperties();
}
void Trader::initProperties(){
sol::table traderTable = generateView()["trading"];
fluctuationRate = traderTable["fluctuationRate"];
fluctuationAmmount = traderTable["fluctuationAmmount"];
refinedsRate = traderTable["refinedsRate"];
researchRate = traderTable["researchRate"];
}
void Trader::update(){
if(getTime() - lastUpdateTime > fluctuationRate){
int flucFact = rand() % 3;
int flSpd;
switch(flucFact){
case 0:
flSpd = -fluctuationAmmount;
break;
case 1:
flSpd = 0;
break;
case 2:
flSpd = fluctuationAmmount;
break;
}
refinedsRate += fluctuationAmmount;
researchRate += fluctuationAmmount;
lastUpdateTime = getTime();
}
}
int Trader::getResourceRate(int rt){
return (ResourceType)rt == ResourceType::REFINEDS ? refinedsRate : researchRate;
}
void Trader::trade(Player *tradingPlayer, int rt, int ammount, bool buying){
int tradeResRate = getResourceRate(rt);
if(buying && ammount * tradeResRate <= tradingPlayer->getResource(ResourceType::WEALTH)){
tradingPlayer->updateResource((ResourceType)rt, ammount, true);
tradingPlayer->updateResource(ResourceType::WEALTH, -ammount * tradeResRate, true);
}
else if(!buying && tradingPlayer->getResource((ResourceType)rt) >= ammount){
tradingPlayer->updateResource((ResourceType)rt, -ammount, true);
tradingPlayer->updateResource(ResourceType::WEALTH, ammount * tradeResRate, true);
}
}
}