Animal.h 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  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, float damage) override;
  18. void tick(const Dimension* zDimension) override;
  19. };
  20. class AnimalEntityTypeFactory;
  21. class AnimalEntityType : public EntityType
  22. {
  23. private:
  24. Framework::JSON::JSONObject* ai;
  25. protected:
  26. virtual void loadSuperEntity(
  27. Entity* zEntity, Framework::StreamReader* zReader) const;
  28. virtual void saveSuperEntity(
  29. Entity* zEntity, Framework::StreamWriter* zWriter) const;
  30. public:
  31. AnimalEntityType();
  32. ~AnimalEntityType();
  33. Entity* createEntity(Framework::Vec3<float> position,
  34. int dimensionId,
  35. int entityId) const override;
  36. friend AnimalEntityTypeFactory;
  37. };
  38. class AnimalEntityTypeFactory : public EntityTypeFactoryBase<AnimalEntityType>
  39. {
  40. public:
  41. AnimalEntityTypeFactory();
  42. virtual AnimalEntityType* createValue(
  43. Framework::JSON::JSONObject* zJson) const override;
  44. virtual void addToJson(Framework::JSON::JSONObject* zJson,
  45. AnimalEntityType* zObject) const override;
  46. JSONObjectValidationBuilder* addToValidator(
  47. JSONObjectValidationBuilder* builder) const override;
  48. const char* getTypeToken() const override;
  49. };