Animal.h 1.5 KB

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