EditorKarte.h 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. #pragma once
  2. #include "../Netzwerk/EditorKlient.h"
  3. #include "../Abstract/Model.h"
  4. #include <Punkt.h>
  5. #include <Critical.h>
  6. #include <functional>
  7. #include <Welt2D.h>
  8. #include <Model2D.h>
  9. namespace Editor
  10. {
  11. struct ResourceDaten
  12. {
  13. int id;
  14. Text path;
  15. };
  16. struct SpielerDaten : public Model
  17. {
  18. int id;
  19. Punkt pos;
  20. double rot;
  21. double beschleunigung;
  22. int maxStabilität;
  23. int maxEnergie;
  24. double reparatur;
  25. double akkuLeistung;
  26. int laserIntensität;
  27. int laserEffizienz;
  28. int laserTempo;
  29. double wendigkeit;
  30. double antriebEffizienz;
  31. double energieSchild;
  32. double energieSchildEffizienz;
  33. int netzwerk;
  34. int skillPunkte;
  35. int m2d;
  36. int bild;
  37. };
  38. struct TeamDaten : public Model
  39. {
  40. int id;
  41. int maxPunkte;
  42. double beschleunigung;
  43. int maxStabilität;
  44. int maxEnergie;
  45. double reparatur;
  46. double akkuLeistung;
  47. int laserIntensität;
  48. int laserEffizienz;
  49. int laserTempo;
  50. double wendigkeit;
  51. double antriebEffizienz;
  52. double energieSchild;
  53. double energieSchildEffizienz;
  54. int punkte;
  55. };
  56. struct ObjektDaten : public Model
  57. {
  58. Punkt pos;
  59. int id;
  60. int m2d;
  61. int bild;
  62. int style;
  63. int maxStabilität;
  64. int maxEnergie;
  65. int energieRadius;
  66. double reparatur;
  67. double akkuLeistung;
  68. char team;
  69. };
  70. class EditorObject : public Model2DObject
  71. {
  72. public:
  73. EditorObject();
  74. virtual ~EditorObject();
  75. virtual void update() = 0;
  76. };
  77. class EdSpieler : public EditorObject
  78. {
  79. private:
  80. SpielerDaten *mdl;
  81. public:
  82. EdSpieler( SpielerDaten *model );
  83. ~EdSpieler();
  84. void update();
  85. };
  86. class UpdateObserver : public View
  87. {
  88. private:
  89. std::function< void() > f;
  90. public:
  91. UpdateObserver( std::function< void() > f );
  92. void update( Model *m ) override;
  93. };
  94. class KarteDaten : public Thread
  95. {
  96. private:
  97. EditorKlient * client;
  98. SpielerTeamStruktur *sts;
  99. Array< SpielerDaten* > spieler;
  100. Array< TeamDaten* > teams;
  101. Array< ObjektDaten* > objekte;
  102. Array< ResourceDaten * > resources;
  103. Text error;
  104. Array< std::function< void() > > aktionen;
  105. Critical cs;
  106. Welt2D *welt;
  107. RCArray< View > views;
  108. Punkt size;
  109. bool exit;
  110. public:
  111. KarteDaten( EditorKlient *client, SpielerTeamStruktur *sts );
  112. ~KarteDaten();
  113. void addObjekt( ObjektDaten &daten );
  114. void removeObjekt( int index );
  115. void thread() override;
  116. const ObjektDaten *getObjekt( int index );
  117. const SpielerDaten *getSpieler( int index );
  118. const TeamDaten *getTeam( int index );
  119. int getSpielerIndexById( int id );
  120. int getSpielerAnzahl() const;
  121. int getTeamIndexById( int id );
  122. int getTeamAnzahl() const;
  123. int getObjektAnzahl() const;
  124. bool hasError() const;
  125. char *getError() const;
  126. bool hasAktions() const;
  127. Welt2D *getWelt() const;
  128. Welt2D *zWelt() const;
  129. // löscht das objekt wenn es nicht mehr gebraucht wird und beendet den Thread
  130. Thread *release() override;
  131. };
  132. }