Animal.h 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. #pragma once
  2. #include "AnimalAI.h"
  3. #include "Entity.h"
  4. #include "EntityType.h"
  5. class Animal : public Entity
  6. {
  7. private:
  8. AnimalAI* ai;
  9. public:
  10. Animal(int typeId,
  11. Framework::Vec3<float> location,
  12. int dimensionId,
  13. int entityId);
  14. ~Animal();
  15. void setAI(AnimalAI* ai);
  16. bool interact(Item* zItem, Entity* zActor) override;
  17. void takeDamage(Entity* zSource,
  18. Item* zUsedItem,
  19. ItemSkill* zUsedSkill,
  20. float damage) override;
  21. void tick(const Dimension* zDimension, double seconds) override;
  22. };
  23. class AnimalEntityTypeFactory;
  24. class AnimalEntityType : public EntityType
  25. {
  26. private:
  27. Framework::JSON::JSONObject* ai;
  28. protected:
  29. virtual void loadSuperEntity(
  30. Entity* zEntity, Framework::StreamReader* zReader) const;
  31. virtual void saveSuperEntity(
  32. Entity* zEntity, Framework::StreamWriter* zWriter) const;
  33. public:
  34. AnimalEntityType();
  35. ~AnimalEntityType();
  36. Entity* createEntity(Framework::Vec3<float> position,
  37. int dimensionId,
  38. int entityId) const override;
  39. friend AnimalEntityTypeFactory;
  40. };
  41. class AnimalEntityTypeFactory : public EntityTypeFactoryBase<AnimalEntityType>
  42. {
  43. public:
  44. AnimalEntityTypeFactory();
  45. virtual AnimalEntityType* createValue(
  46. Framework::JSON::JSONObject* zJson) const override;
  47. virtual void addToJson(Framework::JSON::JSONObject* zJson,
  48. AnimalEntityType* zObject) const override;
  49. JSONObjectValidationBuilder* addToValidator(
  50. JSONObjectValidationBuilder* builder) const override;
  51. const char* getTypeToken() const override;
  52. };