Team.cpp 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  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. reset();
  23. ref = 1;
  24. }
  25. // Destruktor
  26. Team::~Team()
  27. {
  28. spieler->release();
  29. }
  30. // nicht constant
  31. void Team::reset()
  32. {
  33. spieler->leeren();
  34. maxEnergie = maxEnergieS;
  35. maxStabilität = maxStabilitätS;
  36. reparatur = reparaturS;
  37. laserIntensität = laserIntensitätS;
  38. laserEffizienz = laserEffizienzS;
  39. akkuLeistung = akkuLeistungS;
  40. laserTempo = laserTempoS;
  41. beschleunigung = beschleunigungS;
  42. wendigkeit = wendigkeitS;
  43. }
  44. // constant
  45. double Team::getMaxEnergieBonus() const
  46. {
  47. double ret = maxEnergieS;
  48. for( auto *i = &spieler->getArray(); i && i->set; i = i->next )
  49. ret += i->var->getTeamMaxEnergieBonus();
  50. return ret;
  51. }
  52. double Team::getMaxStabilitätBonus() const
  53. {
  54. double ret = maxStabilitätS;
  55. for( auto *i = &spieler->getArray(); i && i->set; i = i->next )
  56. ret += i->var->getTeamMaxStabilitätBonus();
  57. return ret;
  58. }
  59. double Team::getReperaturBonus() const
  60. {
  61. double ret = reparaturS;
  62. for( auto *i = &spieler->getArray(); i && i->set; i = i->next )
  63. ret += i->var->getTeamReparaturBonus();
  64. return ret;
  65. }
  66. double Team::getLaserIntensitätBonus() const
  67. {
  68. double ret = laserIntensitätS;
  69. for( auto *i = &spieler->getArray(); i && i->set; i = i->next )
  70. ret += i->var->getTeamLaserIntensitätBonus();
  71. return ret;
  72. }
  73. double Team::getLaserEffizienzBonus() const
  74. {
  75. double ret = laserEffizienzS;
  76. for( auto *i = &spieler->getArray(); i && i->set; i = i->next )
  77. ret += i->var->getTeamLaserEffizienzBonus();
  78. return ret;
  79. }
  80. double Team::getAkkuLeistungBonus() const
  81. {
  82. double ret = akkuLeistungS;
  83. for( auto *i = &spieler->getArray(); i && i->set; i = i->next )
  84. ret += i->var->getTeamAkkuLeistungBonus();
  85. return ret;
  86. }
  87. double Team::getLaserTempoBonus() const
  88. {
  89. double ret = laserTempoS;
  90. for( auto *i = &spieler->getArray(); i && i->set; i = i->next )
  91. ret += i->var->getTeamLaserTempoBonus();
  92. return ret;
  93. }
  94. double Team::getBeschleunigungBonus() const
  95. {
  96. double ret = beschleunigungS;
  97. for( auto *i = &spieler->getArray(); i && i->set; i = i->next )
  98. ret += i->var->getTeamBeschleunigungBonus();
  99. return ret;
  100. }
  101. double Team::getWendigkeitBonus() const
  102. {
  103. double ret = wendigkeitS;
  104. for( auto *i = &spieler->getArray(); i && i->set; i = i->next )
  105. ret += i->var->getTeamWendigkeitBonus();
  106. return ret;
  107. }
  108. // Reference Counting
  109. Team *Team::getThis()
  110. {
  111. ref++;
  112. return this;
  113. }
  114. Team *Team::release()
  115. {
  116. ref--;
  117. if( !ref )
  118. delete this;
  119. return 0;
  120. }