Spieler.h 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. #pragma once
  2. #include "Team.h"
  3. #include "Gegenstand.h"
  4. #include "Effect.h"
  5. #include <Array.h>
  6. class Spiel;
  7. #define INVENTORY_SLOTS 8
  8. class Inventar
  9. {
  10. private:
  11. GegenstandTyp slots[ INVENTORY_SLOTS ];
  12. int anzahl[ INVENTORY_SLOTS ];
  13. float abklingzeit[ INVENTORY_SLOTS ];
  14. int selected;
  15. public:
  16. Inventar();
  17. void addItem( GegenstandTyp typ, int anzahl );
  18. void setSelected( int slot );
  19. bool hatAbklingzeit( GegenstandTyp typ ) const;
  20. GegenstandTyp useItem();
  21. void tick( double zeit );
  22. bool canAddItem( GegenstandTyp typ ) const;
  23. GegenstandTyp selectedItem() const;
  24. int getItemAnzahl() const;
  25. int getItemAnzahl( GegenstandTyp typ ) const;
  26. GegenstandTyp getItemTyp( int index ) const;
  27. void removeItem( GegenstandTyp typ, int anzahl );
  28. int getSelectedIndex() const;
  29. float getAbklingzeit( int index ) const;
  30. };
  31. class Spieler : public GameObject
  32. {
  33. private:
  34. RCArray< Effect > effekte;
  35. int accountId;
  36. int spielerNummer;
  37. Team *team;
  38. bool amLeben;
  39. int maxWiederbelebungsZeit;
  40. float wiederbelebungsZeit;
  41. GegenstandTyp zuletztAufgehoben;
  42. GegenstandTyp zuletztAktiviert;
  43. float leben;
  44. int maxLeben;
  45. int level;
  46. float erfahrung;
  47. int maxErfahrung;
  48. int spawnX;
  49. int spawnY;
  50. float laufTempo;
  51. float geschossTempo;
  52. float armor;
  53. float schadensBonus;
  54. float lebensraub;
  55. float lebensRegeneration;
  56. float abklingZeitVerringerung;
  57. int color;
  58. int kills;
  59. int tode;
  60. int treffer;
  61. int getroffen;
  62. float schadenGenommen;
  63. float schadenGemacht;
  64. float lebenGeheilt;
  65. float erhalteneErfahrung;
  66. int itemsAufgehoben;
  67. int itemsVerwendet;
  68. int tunnelBenutzt;
  69. int schalterAktiviert;
  70. int geschosseGeschossen;
  71. bool tastenStand[ 256 ];
  72. Text name;
  73. Richtung ausrichtung;
  74. Inventar inv;
  75. int currentImage;
  76. double currentNext;
  77. Resource *current;
  78. int heilungImage;
  79. double heilungNext;
  80. bool showHeilung;
  81. Resource *heilungR;
  82. int schadenImage;
  83. double schadenNext;
  84. bool showSchaden;
  85. Resource *schadenR;
  86. ResourceRegistry *resources;
  87. public:
  88. Spieler( ResourceRegistry *zResources, int id, Team *team, int spawnX, int spawnY, int farbe );
  89. ~Spieler();
  90. bool setTastenStand( unsigned char taste, bool pressed );
  91. void setTeam( Team *team );
  92. void setAccount( int id );
  93. void addEffekt( Effect *e );
  94. void setLaufTempo( float pps );
  95. void addErfahrung( float anz, Spiel *zSpiel );
  96. void levelUp( Spiel *zSpiel );
  97. void levelDown( Spiel *zSpiel );
  98. void addTunnelBenutzung( Spiel *zSpiel );
  99. void addSchalterBenutzung( Spiel *zSpiel );
  100. // aktualisiert auch die team statistik
  101. void addKill();
  102. void addTreffer( Spiel *zSpiel );
  103. void addGetroffen();
  104. void move( Richtung r, double zeit );
  105. void wiederbelebung( Spiel *zSpiel );
  106. void tick( double zeit, Spiel *zSpiel );
  107. void render( Bild &rObj ) override;
  108. void useItem( Spiel *zSpiel );
  109. bool addItem( GegenstandTyp typ, int anz, Spiel *zSpiel );
  110. // heilt auch um den lebensraub prozentsatz
  111. void addGemachterSchaden( float schaden, Spiel *zSpiel );
  112. // zieht die rüstung ab
  113. void nimmSchaden( float schaden, Spieler *zVerursacher, Richtung r, Spiel *zSpiel );
  114. void heilung( float heal, Spiel *zSpiel, bool show = 1 );
  115. void setSchadenBonus( float bonus );
  116. void setLebensRaub( float raub );
  117. void setGeschossTempo( float tempo );
  118. void setArmor( float armor );
  119. void setLebensRegeneration( float reg );
  120. void setName( const char *name );
  121. // setzt alle eigenschafften, die mit dem level gesetzt werden entsprechend
  122. void setLevel( int level, Spiel *zSpiel );
  123. void removeItem( GegenstandTyp typ, int anzahl );
  124. void setLeben( float leben );
  125. void setMaxLeben( int leben );
  126. // steuert auch level up oder level downs bei negativer erfahrung
  127. void setErfahrung( float erf, Spiel *zSpiel );
  128. void setMaxErfahrung( int erf );
  129. void setAbklingZeitVerringerung( float verringerung );
  130. float getLebensRegenneration() const;
  131. float getArmor() const;
  132. float getGeschossTempo() const;
  133. float getLebensRaub() const;
  134. float getSchadenBonus() const;
  135. Team *zTeam() const;
  136. Team *getTeam() const;
  137. int getFarbe() const;
  138. int getAccountId() const;
  139. int getPunkte() const;
  140. bool istAmLeben() const;
  141. float getLaufTempo() const;
  142. bool isVerwundbar( Richtung r ) const;
  143. bool istBeweglich( Richtung r ) const;
  144. bool istSichtbar( Team *zTeam ) const;
  145. bool istGegenstandErlaubt( GegenstandTyp typ ) const;
  146. Richtung getAusrichtung() const;
  147. float getAbklingZeitVerringerung() const;
  148. int getId() const;
  149. int getLevel() const;
  150. float getLeben() const;
  151. int getMaxLeben() const;
  152. float getErfahrung() const;
  153. int getMaxErfahrung() const;
  154. int getTode() const;
  155. int getKills() const;
  156. int getTreffer() const;
  157. int getGetroffen() const;
  158. float getErlittenerSchaden() const;
  159. float getGemachterSchaden() const;
  160. float getGeheiltesLeben() const;
  161. int getItemsAufgehoben() const;
  162. int getItemsVerwendet() const;
  163. int getItemsInInventory() const;
  164. int getItemsInInventory( GegenstandTyp typ ) const;
  165. int getTunnelBenutzt() const;
  166. int getSchalterAktiviert() const;
  167. int getGeschossen() const;
  168. GegenstandTyp getInventorySlot( int index ) const;
  169. const char *getName() const;
  170. const Inventar &getInventory() const;
  171. Iterator< Effect * > getEffects() const;
  172. };
  173. class DeadPlayer : public GameObject
  174. {
  175. public:
  176. bool isFinished() const;
  177. };