From c090992547520e2650ca0a900d8c12bf800adda6 Mon Sep 17 00:00:00 2001 From: devZoGok Date: Sat, 10 Feb 2024 14:34:25 +0200 Subject: [PATCH] variable resource collection speed --- Assets/Scripts/GameObjects/Units/unitData.lua | 2 ++ extractor.cpp | 3 ++- extractor.h | 2 +- resourceDeposit.h | 2 +- resourceRover.cpp | 5 +++-- resourceRover.h | 2 +- 6 files changed, 10 insertions(+), 6 deletions(-) diff --git a/Assets/Scripts/GameObjects/Units/unitData.lua b/Assets/Scripts/GameObjects/Units/unitData.lua index 1ab03c5..7ff03c8 100644 --- a/Assets/Scripts/GameObjects/Units/unitData.lua +++ b/Assets/Scripts/GameObjects/Units/unitData.lua @@ -198,6 +198,7 @@ units = { armor = {ArmorType.CAST}, capacity = 3000, loadRate = 1, + loadSpeed = 5, isVehicle = true, health = 500, buildTime = 1000, @@ -519,6 +520,7 @@ units = { health = 500, buildTime = 1000, drawRate = 1, + drawSpeed = 5, cost = 500, size = {x = 4, y = 1.15, z = 4}, hitboxOffset = {x = 0, y = 0, z = 0}, diff --git a/extractor.cpp b/extractor.cpp index 170991d..fb5b8c4 100644 --- a/extractor.cpp +++ b/extractor.cpp @@ -29,6 +29,7 @@ namespace battleship{ sol::table unitTable = generateView()["units"][id + 1]; drawRate = unitTable["drawRate"]; + drawSpeed = unitTable["drawSpeed"]; Vector2 size = Vector2(lenHpBar, 10); ammountBackground = Unit::createBar(Vector2::VEC_ZERO, size, Vector4(0, 0, 0, 1)); @@ -59,7 +60,7 @@ namespace battleship{ } void Extractor::draw(){ - deposit->decrementAmmount(); + deposit->decreaseAmmount(drawSpeed); lastDrawTime = getTime(); } } diff --git a/extractor.h b/extractor.h index 3540f30..120e331 100644 --- a/extractor.h +++ b/extractor.h @@ -17,7 +17,7 @@ namespace battleship{ bool canDraw(){return vb01::getTime() - lastDrawTime > drawRate;} inline ResourceDeposit* getDeposit(){return deposit;} private: - int drawRate; + int drawSpeed, drawRate; vb01::s64 lastDrawTime = 0; vb01::Node *ammountBackground = nullptr, *ammountForeground = nullptr; ResourceDeposit *deposit = nullptr; diff --git a/resourceDeposit.h b/resourceDeposit.h index f1e5f8d..ff6e425 100644 --- a/resourceDeposit.h +++ b/resourceDeposit.h @@ -10,7 +10,7 @@ namespace battleship{ ~ResourceDeposit(); inline int getAmmount(){return ammount;} inline int getInitAmmount(){return initAmmount;} - inline void decrementAmmount(){ammount--;} + inline void decreaseAmmount(int amnt){ammount -= amnt;} private: int ammount, initAmmount; diff --git a/resourceRover.cpp b/resourceRover.cpp index 9c33d70..696a66f 100644 --- a/resourceRover.cpp +++ b/resourceRover.cpp @@ -16,6 +16,7 @@ namespace battleship{ ResourceRover::ResourceRover(Player *player, int id, Vector3 pos, Quaternion rot) : Vehicle(player, id, pos, rot) { sol::table unitTable = generateView()["units"][id + 1]; capacity = unitTable["capacity"]; + loadSpeed = unitTable["loadSpeed"]; loadRate = unitTable["loadRate"]; Vector2 size = Vector2(lenHpBar, 10); @@ -53,7 +54,7 @@ namespace battleship{ if(canLoad() && deposit->getAmmount() > 0){ if(nearestExtractor->canDraw()){ nearestExtractor->draw(); - load++; + load += loadSpeed; lastLoadTime = getTime(); } } @@ -69,7 +70,7 @@ namespace battleship{ if(nearestRefinery && nearestRefinery->getPos().getDistanceFrom(pos) <= minDist){ if(canUnload()){ - load--; + load -= loadSpeed; player->addRefineds(1); lastLoadTime = getTime(); } diff --git a/resourceRover.h b/resourceRover.h index c795f3e..5e06627 100644 --- a/resourceRover.h +++ b/resourceRover.h @@ -21,7 +21,7 @@ namespace battleship{ inline bool canUnload(){return vb01::getTime() - lastLoadTime > loadRate && load > 0;} vb01::s64 lastLoadTime = 0; - int load = 0, capacity, loadRate; + int load = 0, capacity, loadRate, loadSpeed; Extractor *nearestExtractor = nullptr; Unit *nearestRefinery = nullptr; vb01::Node *loadBackground = nullptr, *loadForeground = nullptr;