EditorKarte.h 2.7 KB

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