From 76bf747451121375afa7d2dfe9e79c632fa4fb71 Mon Sep 17 00:00:00 2001 From: devZoGok Date: Wed, 29 May 2024 20:09:35 +0300 Subject: [PATCH] extractors can only be built on unoccupied deposits --- extractor.cpp | 4 ++++ gameObjectFrameController.cpp | 2 +- resourceDeposit.h | 5 +++++ 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/extractor.cpp b/extractor.cpp index 23fcb6a..412d4f8 100644 --- a/extractor.cpp +++ b/extractor.cpp @@ -23,6 +23,7 @@ namespace battleship{ for(ResourceDeposit *dep : deposits) if(dep->getPos().getDistanceFrom(pos) < .001){ deposit = dep; + deposit->setExtractor(this); break; } } @@ -33,6 +34,9 @@ namespace battleship{ } Extractor::~Extractor(){ + if(deposit) + deposit->setExtractor(nullptr); + removeBar(ammountForeground); removeBar(ammountBackground); } diff --git a/gameObjectFrameController.cpp b/gameObjectFrameController.cpp index ae2d361..a9307f9 100644 --- a/gameObjectFrameController.cpp +++ b/gameObjectFrameController.cpp @@ -68,7 +68,7 @@ namespace battleship{ for(ResourceDeposit *dep : deposits){ Vector3 depPos = dep->getPos(); - if(s.getPos().getDistanceFrom(depPos) < maxDist){ + if(!dep->getExtractor() && s.getPos().getDistanceFrom(depPos) < maxDist){ s.status = GameObjectFrame::PLACEABLE; s.placeAt(depPos); break; diff --git a/resourceDeposit.h b/resourceDeposit.h index ff6e425..2d8527e 100644 --- a/resourceDeposit.h +++ b/resourceDeposit.h @@ -4,6 +4,8 @@ #include "gameObject.h" namespace battleship{ + class Extractor; + class ResourceDeposit : public GameObject{ public: ResourceDeposit(Player*, int, vb01::Vector3, vb01::Quaternion, int); @@ -11,8 +13,11 @@ namespace battleship{ inline int getAmmount(){return ammount;} inline int getInitAmmount(){return initAmmount;} inline void decreaseAmmount(int amnt){ammount -= amnt;} + inline Extractor* getExtractor(){return extractor;} + inline void setExtractor(Extractor *e){this->extractor = e;} private: int ammount, initAmmount; + Extractor *extractor = nullptr; void reinit(); };