EditorKarte.h 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  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. namespace Editor
  9. {
  10. struct ResourceDaten
  11. {
  12. int id;
  13. Text path;
  14. };
  15. struct SpielerDaten : public Model
  16. {
  17. int id;
  18. Punkt pos;
  19. double rot;
  20. double beschleunigung;
  21. int maxStabilität;
  22. int maxEnergie;
  23. double reparatur;
  24. double akkuLeistung;
  25. int laserIntensität;
  26. int laserEffizienz;
  27. int laserTempo;
  28. double wendigkeit;
  29. double antriebEffizienz;
  30. double energieSchild;
  31. double energieSchildEffizienz;
  32. int netzwerk;
  33. int skillPunkte;
  34. int m2d;
  35. int bild;
  36. };
  37. struct TeamDaten : public Model
  38. {
  39. int id;
  40. int maxPunkte;
  41. double beschleunigung;
  42. int maxStabilität;
  43. int maxEnergie;
  44. double reparatur;
  45. double akkuLeistung;
  46. int laserIntensität;
  47. int laserEffizienz;
  48. int laserTempo;
  49. double wendigkeit;
  50. double antriebEffizienz;
  51. double energieSchild;
  52. double energieSchildEffizienz;
  53. int punkte;
  54. };
  55. struct ObjektDaten : public Model
  56. {
  57. Punkt pos;
  58. int id;
  59. int m2d;
  60. int bild;
  61. int style;
  62. int maxStabilität;
  63. int maxEnergie;
  64. int energieRadius;
  65. double reparatur;
  66. double akkuLeistung;
  67. char team;
  68. };
  69. class KarteDaten : public Thread
  70. {
  71. private:
  72. EditorKlient * client;
  73. SpielerTeamStruktur *sts;
  74. Array< SpielerDaten* > spieler;
  75. Array< TeamDaten* > teams;
  76. Array< ObjektDaten* > objekte;
  77. Array< ResourceDaten * > resources;
  78. Text error;
  79. Array< std::function< void() > > aktionen;
  80. Critical cs;
  81. Welt2D *welt;
  82. Punkt size;
  83. bool exit;
  84. public:
  85. KarteDaten( EditorKlient *client, SpielerTeamStruktur *sts );
  86. ~KarteDaten();
  87. void addObjekt( ObjektDaten &daten );
  88. void removeObjekt( int index );
  89. void getObjekt( int index, std::function< bool( ObjektDaten* ) > callBack );
  90. void getSpieler( int index, std::function< bool( SpielerDaten* ) > callBack );
  91. void getTeam( int index, std::function< bool( TeamDaten* ) > callBack );
  92. void thread() override;
  93. const ObjektDaten *getObjekt( int index );
  94. const SpielerDaten *getSpieler( int index );
  95. const TeamDaten *getTeam( int index );
  96. int getSpielerIndexById( int id );
  97. int getSpielerAnzahl() const;
  98. int getTeamIndexById( int id );
  99. int getTeamAnzahl() const;
  100. int getObjektAnzahl() const;
  101. bool hasError() const;
  102. char *getError() const;
  103. bool hasAktions() const;
  104. Welt2D *getWelt() const;
  105. Welt2D *zWelt() const;
  106. // löscht das objekt wenn es nicht mehr gebraucht wird und beendet den Thread
  107. Thread *release() override;
  108. };
  109. }