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