#ifndef COLLECTABLE_SERVICE_H #define COLLECTABLE_SERVICE_H #include "raylib.h" #include "services/Service.h" #include "entities/Vector2i.h" #include "entities/Crate.h" #include "entities/Jelly.h" #include "entities/AmmoPack.h" #include "entities/HealthPack.h" #include "entities/Powerup.h" #include "entities/Flag.h" #include /** * Service that manages the collectables (jellies), consumables (Ammo, health, powerups), and the finish flag */ class CollectableService : public Service { public: void initCollectables() { initCrates(); initJellies(); initAmmoPacks(); initHealthPacks(); initPowerups(); initFlag(); } void collectableLogic() { crateLogic(); jellyLogic(); ammoPackLogic(); healthPackLogic(); powerupLogic(); flag.logic(); } void drawCollectables() { drawCrates(); drawJellies(); drawAmmoPacks(); drawHealthpacks(); drawPowerups(); flag.draw(); } std::vector &getCrates() { return this->crates; } std::vector &getAmmoPacks() { return this->ammoPacks; } std::vector &getHealthPacks() { return this->healthPacks; } std::vector &getPowerups() { return this->powerUps; } Flag& getFlag() { return this->flag; } int getMaxAmountOfJellies() { return this->amountOfCrates; } int getAmountOfJelliesFreed() { return this->jellies.size(); } private: int amountOfCrates = 3; int amountOfAmmoPacks = 4; int amountOfHealthPacks = 4; int amountOfPowerups = 1; std::vector crates; std::vector ammoPacks; std::vector healthPacks; std::vector jellies; std::vector powerUps; Flag flag; void initCrates(); void initJellies(); void initAmmoPacks(); void initHealthPacks(); void initPowerups(); void initFlag(); void crateLogic(); void jellyLogic(); void ammoPackLogic(); void healthPackLogic(); void powerupLogic(); void drawCrates(); void drawJellies(); void drawAmmoPacks(); void drawHealthpacks(); void drawPowerups(); }; #endif