#pragma once #include #include #include #include "Effect.h" #include "Inventory.h" #include "NetworkResponse.h" class EntityType; class Dimension; class Game; class Entity : public Inventory { protected: float maxHP; float currentHP; float stamina; float maxStamina; float hunger; float maxHunger; float thirst; float maxThirst; Framework::Vec3 speed; Framework::Vec2 faceDir; const EntityType* zEntityType; int currentDimensionId; bool removed; int id; virtual void onDeath(); Entity( const EntityType* zType, Framework::Vec3 location, int dimensionId, int entityId ); public: virtual void tick( const Dimension* zDimension, Game* zGame ); virtual void api( Framework::StreamReader* zRequest, NetworkResponse* zResponse ); void setPosition( Framework::Vec3 pos ); float getMaxHP() const; float getCurrentHP() const; float getStamina() const; float getMaxStamina() const; float getHunger() const; float getMaxHunger() const; float getThirst() const; float getMaxThirst() const; Framework::Vec3 getSpeed() const; Framework::Vec2 getFaceDir() const; Framework::Vec3 getPosition() const; int getCurrentDimensionId() const; bool isRemoved() const; const EntityType* zType() const; int getId() const; friend Effect; friend EntityType; };