#pragma once #include "Item.h" class Player; class Level; class FoodItem : public Item { public: static const int EAT_DURATION = (int) (20 * 1.6); private: const int nutrition; const float saturationModifier; const bool m_isMeat; bool canAlwaysEat; int effectId; int effectDurationSeconds; int effectAmplifier; float effectProbability; void _init(); public: FoodItem(int id, int nutrition, float saturationMod, bool isMeat); FoodItem(int id, int nutrition, bool isMeat); virtual std::shared_ptr useTimeDepleted(std::shared_ptr instance, Level *level, std::shared_ptr player); protected: virtual void addEatEffect(std::shared_ptr instance, Level *level, std::shared_ptr player); public: virtual int getUseDuration(std::shared_ptr itemInstance); virtual UseAnim getUseAnimation(std::shared_ptr itemInstance); virtual std::shared_ptr use(std::shared_ptr instance, Level *level, std::shared_ptr player); int getNutrition(); float getSaturationModifier(); bool isMeat(); FoodItem *setEatEffect(int id, int durationInSecods, int amplifier, float effectProbability); FoodItem *setCanAlwaysEat(); // 4J Added bool canEat(std::shared_ptr player); };