EntityType.cpp 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. #include "EntityType.h"
  2. #include "Entity.h"
  3. #include "Game.h"
  4. EntityType::EntityType(int id, ModelInfo model)
  5. : ReferenceCounter(),
  6. id(id),
  7. model(model)
  8. {
  9. StaticRegistry<EntityType>::INSTANCE.registerT(this, id);
  10. }
  11. void EntityType::loadSuperEntity(Entity* zEntity, Framework::StreamReader* zReader) const
  12. {
  13. zEntity->loadInventory(zReader);
  14. zReader->lese((char*)&zEntity->id, 4);
  15. zReader->lese((char*)&zEntity->maxHP, 4);
  16. zReader->lese((char*)&zEntity->currentHP, 4);
  17. zReader->lese((char*)&zEntity->stamina, 4);
  18. zReader->lese((char*)&zEntity->maxStamina, 4);
  19. zReader->lese((char*)&zEntity->hunger, 4);
  20. zReader->lese((char*)&zEntity->maxHunger, 4);
  21. zReader->lese((char*)&zEntity->thirst, 4);
  22. zReader->lese((char*)&zEntity->maxThirst, 4);
  23. zReader->lese((char*)&zEntity->speed.x, 4);
  24. zReader->lese((char*)&zEntity->speed.y, 4);
  25. zReader->lese((char*)&zEntity->speed.z, 4);
  26. zReader->lese((char*)&zEntity->faceDir.x, 4);
  27. zReader->lese((char*)&zEntity->faceDir.y, 4);
  28. zReader->lese((char*)&zEntity->currentDimensionId, 4);
  29. zReader->lese((char*)&zEntity->location.x, 4);
  30. zReader->lese((char*)&zEntity->location.y, 4);
  31. zReader->lese((char*)&zEntity->location.z, 4);
  32. if (zEntity->target)
  33. delete zEntity->target;
  34. zEntity->target = ActionTarget::load(zReader);
  35. }
  36. void EntityType::saveSuperEntity(Entity* zEntity, Framework::StreamWriter* zWriter) const
  37. {
  38. zEntity->saveInventory(zWriter);
  39. zWriter->schreibe((char*)&zEntity->id, 4);
  40. zWriter->schreibe((char*)&zEntity->maxHP, 4);
  41. zWriter->schreibe((char*)&zEntity->currentHP, 4);
  42. zWriter->schreibe((char*)&zEntity->stamina, 4);
  43. zWriter->schreibe((char*)&zEntity->maxStamina, 4);
  44. zWriter->schreibe((char*)&zEntity->hunger, 4);
  45. zWriter->schreibe((char*)&zEntity->maxHunger, 4);
  46. zWriter->schreibe((char*)&zEntity->thirst, 4);
  47. zWriter->schreibe((char*)&zEntity->maxThirst, 4);
  48. zWriter->schreibe((char*)&zEntity->speed.x, 4);
  49. zWriter->schreibe((char*)&zEntity->speed.y, 4);
  50. zWriter->schreibe((char*)&zEntity->speed.z, 4);
  51. zWriter->schreibe((char*)&zEntity->faceDir.x, 4);
  52. zWriter->schreibe((char*)&zEntity->faceDir.y, 4);
  53. zWriter->schreibe((char*)&zEntity->currentDimensionId, 4);
  54. zWriter->schreibe((char*)&zEntity->location.x, 4);
  55. zWriter->schreibe((char*)&zEntity->location.y, 4);
  56. zWriter->schreibe((char*)&zEntity->location.z, 4);
  57. ActionTarget::save(zEntity->target, zWriter);
  58. }
  59. void EntityType::createSuperEntity(Entity* zEntity) const
  60. {}
  61. Entity* EntityType::loadEntity(Framework::StreamReader* zReader) const
  62. {
  63. Entity* entity = createEntity(Framework::Vec3<float>(0, 0, 0), 0, 0);
  64. loadSuperEntity(entity, zReader);
  65. return entity;
  66. }
  67. void EntityType::saveEntity(Entity* zEntity, Framework::StreamWriter* zWriter) const
  68. {
  69. saveSuperEntity(zEntity, zWriter);
  70. }
  71. Entity* EntityType::createEntityAt(Framework::Vec3<float> position, int dimensionId) const
  72. {
  73. Entity* entity = createEntity(position, dimensionId, Game::INSTANCE->getNextEntityId());
  74. createSuperEntity(entity);
  75. return entity;
  76. }
  77. int EntityType::getId() const
  78. {
  79. return id;
  80. }
  81. const ModelInfo& EntityType::getModel() const
  82. {
  83. return model;
  84. }