EditorKarte.h 2.8 KB

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