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(); };