Team.cpp 3.6 KB

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