Spieler.h 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. #ifndef Spieler_H
  2. #define Spieler_H
  3. #include <KSGNetwork.h>
  4. #include <Model2D.h>
  5. #include <TextFeld.h>
  6. #include <Animation.h>
  7. #include "../Team/Team.h"
  8. #include "../Karte/Strukturen.h"
  9. #include "DeadPlayer.h"
  10. class Team;
  11. class Laser;
  12. class Karte;
  13. class SpielerGUI;
  14. enum TastaturStatus
  15. {
  16. T_GAS,
  17. T_ROT_L,
  18. T_ROT_R,
  19. T_FEUER,
  20. T_MAX
  21. };
  22. class Spieler : public Model2DObject
  23. {
  24. friend class SpielerGUI;
  25. private:
  26. int accountId;
  27. int sNum;
  28. bool tastatur[ T_MAX ];
  29. Team *team;
  30. KSGClient::InformationServerClient *info;
  31. Text *name;
  32. Vertex stL;
  33. Vertex kL;
  34. Vertex stR;
  35. Vertex kR;
  36. Vertex stM;
  37. Vertex kM;
  38. double akkuLeistungStart;
  39. double beschleunigungStart;
  40. double wendigkeitStart;
  41. struct SpielerDataSave
  42. {
  43. float rSpeed;
  44. Vec2< double > pos;
  45. Vec2< double > speed;
  46. float rotation;
  47. int farbe;
  48. bool amLeben;
  49. double schussAbk;
  50. double energieAbk;
  51. double repAbk;
  52. double reinkAbk;
  53. int maxReinkAbk;
  54. int spielZeit;
  55. Punkt startPos;
  56. double beschleunigung;
  57. double energie;
  58. double stabilität;
  59. double reparatur;
  60. double laserIntensität;
  61. double laserEffizienz;
  62. double akkuLeistung;
  63. double maxEnergie;
  64. double maxStabilität;
  65. double laserTempo;
  66. double netzwerk;
  67. double wendigkeit;
  68. double antriebEffizienz;
  69. double energieSchild;
  70. double energieSchildEffizienz;
  71. double zeitAmLeben;
  72. double zeitTod;
  73. double schadenBekommen;
  74. double schadenGemacht;
  75. double treibstoffVerbraucht;
  76. int schüsse;
  77. int treffer;
  78. int punkte;
  79. int kills;
  80. int tode;
  81. };
  82. int farbe;
  83. bool amLeben;
  84. double schussAbk;
  85. double energieAbk;
  86. double repAbk;
  87. double reinkAbk;
  88. int maxReinkAbk;
  89. int spielZeit;
  90. Punkt startPos;
  91. double beschleunigung;
  92. double energie;
  93. double stabilität;
  94. double reparatur;
  95. double laserIntensität;
  96. double laserEffizienz;
  97. double akkuLeistung;
  98. double maxEnergie;
  99. double maxStabilität;
  100. double laserTempo;
  101. double netzwerk;
  102. double wendigkeit;
  103. double antriebEffizienz;
  104. double energieSchild;
  105. double energieSchildEffizienz;
  106. double zeitAmLeben;
  107. double zeitTod;
  108. double schadenBekommen;
  109. double schadenGemacht;
  110. double treibstoffVerbraucht;
  111. int schüsse;
  112. int treffer;
  113. int punkte;
  114. int kills;
  115. int tode;
  116. SpielerDataSave last;
  117. int skillPunkte;
  118. Textur2D *flammenM;
  119. Textur2D *flammenL;
  120. Textur2D *flammenR;
  121. TextFeld *nText;
  122. DeadPlayer *deadPlayer;
  123. double calculateLaserCost();
  124. void save();
  125. void load();
  126. public:
  127. // Konstruktor
  128. Spieler( KSGClient::InformationServerClient *zInfoK, Schrift *zSchrift, SpielerStr *zStr );
  129. // Destruktor
  130. ~Spieler();
  131. // nicht constant
  132. void setModelData( Model2DData *data, Animation2DData *zFStart, Animation2DData *zFBurn );
  133. void setAccountId( int accId );
  134. void setTeam( Team *team );
  135. void setSpielerFarbe( int fc, Bild *zTextur );
  136. void setTastataturStatus( TastaturStatus ts, bool aktiv, int sZ, const WeltInfo &info );
  137. bool tick( const WeltInfo &info, double zeit ) override;
  138. void render( Mat3< float > &kamMat, Bild &zRObj ) override;
  139. void renderLeben( Mat3< float > &kamMat, Bild &zRObj );
  140. void setSkill( int art );
  141. void nimmSchaden( double &intensität );
  142. void calcDeadPlayerObject( Laser *zSchuss );
  143. void machSchaden( double intensität );
  144. void addKill();
  145. DeadPlayer *sterben();
  146. void wiederbelebung();
  147. void resetToSaveTime( int t, const WeltInfo &info );
  148. void resetToGameTime( int t, const WeltInfo &info );
  149. void hatGeschossen();
  150. // constant
  151. int getAccountId() const;
  152. Text *getName() const;
  153. Text *zName() const;
  154. bool hatSkill() const;
  155. bool istAmLeben() const;
  156. // Statistik Werte
  157. int getSpielerNummer() const;
  158. Team *zTeam() const;
  159. int getSpielerFarbe() const;
  160. int getSchadenBekommen() const;
  161. int getSchadenGemacht() const;
  162. int getTreibstoffVerbraucht() const;
  163. int getSchüsse() const;
  164. int getTreffer() const;
  165. int getPunkte() const;
  166. int getKills() const;
  167. int getTode() const;
  168. int getZeitAmLeben() const;
  169. int getZeitTod() const;
  170. double getTeamMaxEnergieBonus() const;
  171. double getTeamMaxStabilitätBonus() const;
  172. double getTeamReparaturBonus() const;
  173. double getTeamLaserIntensitätBonus() const;
  174. double getTeamLaserEffizienzBonus() const;
  175. double getTeamAkkuLeistungBonus() const;
  176. double getTeamLaserTempoBonus() const;
  177. double getTeamBeschleunigungBonus() const;
  178. double getTeamWendigkeitBonus() const;
  179. double getTeamAntriebEffizienzBonus() const;
  180. double getTeamEnergieSchildBonus() const;
  181. double getTeamEnergieSchildEffizienzBonus() const;
  182. };
  183. #endif