Team.cpp 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. #include "Team.h"
  2. #include "../Spieler/Spieler.h"
  3. // Inhalt der Team Klasse aus Team.h
  4. // Konstruktor
  5. Team::Team( int f, char *n, TeamStr *zStr )
  6. {
  7. id = zStr->id;
  8. farbe = f;
  9. name = n;
  10. spieler = new RCArray< Spieler >();
  11. punkte = zStr->punkte;
  12. maxPunkte = zStr->maxPunkte;
  13. maxEnergieS = zStr->maxEnergie;
  14. maxStabilitätS = zStr->maxStabilität;
  15. reparaturS = zStr->reparatur;
  16. laserIntensitätS = zStr->laserIntensität;
  17. laserEffizienzS = zStr->laserEffizienz;
  18. akkuLeistungS = zStr->akkuLeistung;
  19. laserTempoS = zStr->laserTempo;
  20. beschleunigungS = zStr->beschleunigung;
  21. wendigkeitS = zStr->wendigkeit;
  22. antriebEffizienzS = zStr->antriebEffizienz;
  23. energieSchildS = zStr->energieSchild;
  24. energieSchildEffizienzS = zStr->energieSchildEffizienz;
  25. reset();
  26. ref = 1;
  27. }
  28. // Destruktor
  29. Team::~Team()
  30. {
  31. spieler->release();
  32. }
  33. // nicht constant
  34. void Team::reset()
  35. {
  36. spieler->leeren();
  37. maxEnergie = maxEnergieS;
  38. maxStabilität = maxStabilitätS;
  39. reparatur = reparaturS;
  40. laserIntensität = laserIntensitätS;
  41. laserEffizienz = laserEffizienzS;
  42. akkuLeistung = akkuLeistungS;
  43. laserTempo = laserTempoS;
  44. beschleunigung = beschleunigungS;
  45. wendigkeit = wendigkeitS;
  46. antriebEffizienz = antriebEffizienzS;
  47. energieSchild = energieSchildS;
  48. energieSchildEffizienz = energieSchildEffizienzS;
  49. }
  50. // constant
  51. double Team::getMaxEnergieBonus() const
  52. {
  53. double ret = maxEnergieS;
  54. for( auto i = spieler->getIterator(); i && i; i++ )
  55. ret += i->getTeamMaxEnergieBonus();
  56. return ret;
  57. }
  58. double Team::getMaxStabilitätBonus() const
  59. {
  60. double ret = maxStabilitätS;
  61. for( auto i = spieler->getIterator(); i; i++ )
  62. ret += i->getTeamMaxStabilitätBonus();
  63. return ret;
  64. }
  65. double Team::getReperaturBonus() const
  66. {
  67. double ret = reparaturS;
  68. for( auto i = spieler->getIterator(); i; i++ )
  69. ret += i->getTeamReparaturBonus();
  70. return ret;
  71. }
  72. double Team::getLaserIntensitätBonus() const
  73. {
  74. double ret = laserIntensitätS;
  75. for( auto i = spieler->getIterator(); i; i++ )
  76. ret += i->getTeamLaserIntensitätBonus();
  77. return ret;
  78. }
  79. double Team::getLaserEffizienzBonus() const
  80. {
  81. double ret = laserEffizienzS;
  82. for( auto i = spieler->getIterator(); i; i++ )
  83. ret += i->getTeamLaserEffizienzBonus();
  84. return ret;
  85. }
  86. double Team::getAkkuLeistungBonus() const
  87. {
  88. double ret = akkuLeistungS;
  89. for( auto i = spieler->getIterator(); i; i++ )
  90. ret += i->getTeamAkkuLeistungBonus();
  91. return ret;
  92. }
  93. double Team::getLaserTempoBonus() const
  94. {
  95. double ret = laserTempoS;
  96. for( auto i = spieler->getIterator(); i; i++ )
  97. ret += i->getTeamLaserTempoBonus();
  98. return ret;
  99. }
  100. double Team::getBeschleunigungBonus() const
  101. {
  102. double ret = beschleunigungS;
  103. for( auto i = spieler->getIterator(); i; i++ )
  104. ret += i->getTeamBeschleunigungBonus();
  105. return ret;
  106. }
  107. double Team::getWendigkeitBonus() const
  108. {
  109. double ret = wendigkeitS;
  110. for( auto i = spieler->getIterator(); i; i++ )
  111. ret += i->getTeamWendigkeitBonus();
  112. return ret;
  113. }
  114. double Team::getAntriebEffizienzBonus() const
  115. {
  116. double ret = antriebEffizienzS;
  117. for( auto i = spieler->getIterator(); i; i++ )
  118. ret += i->getTeamAntriebEffizienzBonus();
  119. return ret;
  120. }
  121. double Team::getEnergieSchildBonus() const
  122. {
  123. double ret = energieSchildS;
  124. for( auto i = spieler->getIterator(); i; i++ )
  125. ret += i->getTeamEnergieSchildBonus();
  126. return ret;
  127. }
  128. double Team::getEnergieSchildEffizienzBonus() const
  129. {
  130. double ret = energieSchildEffizienzS;
  131. for( auto i = spieler->getIterator(); i; i++ )
  132. ret += i->getTeamEnergieSchildEffizienzBonus();
  133. return ret;
  134. }
  135. // Reference Counting
  136. Team *Team::getThis()
  137. {
  138. ref++;
  139. return this;
  140. }
  141. Team *Team::release()
  142. {
  143. ref--;
  144. if( !ref )
  145. delete this;
  146. return 0;
  147. }