StatistikRunde.cpp 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. #include "StatistikRunde.h"
  2. #include "../../Initialisierung/Initialisierung.h"
  3. #include <Punkt.h>
  4. // Inhalt der StatistikRunde Klasse aus StatistikRunde.h
  5. // Konstruktor
  6. StatistikRunde::StatistikRunde( Schrift *zSchrift, Array< SSDRunde* > *dat, bool historie )
  7. : rundenBild( initBildZ( 525, 40, 245, 245, BildZ::Style::normal, 0 ) ),
  8. rundenNummer( initTextFeld( 580, 295, 190, 20, zSchrift, TextFeld::Style::Text, "Runde: " ) ),
  9. rundenDauer( initTextFeld( 580, 325, 190, 20, zSchrift, TextFeld::Style::Text, "Dauer: " ) ),
  10. rundenSieger( initTextFeld( 580, 355, 190, 20, zSchrift, TextFeld::Style::Text, "Sieger: " ) ),
  11. spielfeldNutzung( initTextFeld( 580, 385, 190, 20, zSchrift, TextFeld::Style::Text, "Spielfeldnutzung: " ) ),
  12. verbleibend( initTextFeld( 580, 415, 190, 20, zSchrift, TextFeld::Style::Text, "Verbleibende Zeit: 300" ) ),
  13. daten( dat ),
  14. auswahl( -1 ),
  15. verb( 300 ),
  16. rend( 0 ),
  17. ref( 1 )
  18. {
  19. if( historie )
  20. {
  21. verbleibend->removeStyle( TextFeld::Style::Sichtbar );
  22. rundenBild->setPosition( 520, 10 );
  23. rundenBild->setSize( 250, 250 );
  24. rundenNummer->setPosition( 520, 270 );
  25. rundenDauer->setPosition( 520, 300 );
  26. rundenSieger->setPosition( 520, 330 );
  27. spielfeldNutzung->setPosition( 520, 360 );
  28. }
  29. }
  30. // Destruktor
  31. StatistikRunde::~StatistikRunde()
  32. {
  33. rundenBild;
  34. rundenNummer->release();
  35. rundenDauer->release();
  36. rundenSieger->release();
  37. spielfeldNutzung->release();
  38. verbleibend->release();
  39. daten->release();
  40. }
  41. // nicht constant
  42. void StatistikRunde::setRunde( int nummer )
  43. {
  44. if( nummer != auswahl )
  45. {
  46. Bild *b = new Bild();
  47. b->neuBild( 1, 1, 0 );
  48. rundenBild->setBildZ( b );
  49. rundenNummer->setText( "Runde: " );
  50. rundenDauer->setText( "Dauer: " );
  51. rundenSieger->setText( "Sieger: " );
  52. spielfeldNutzung->setText( "Spielfeldnutzung: " );
  53. int anz = daten->getEintragAnzahl();
  54. for( int i = 0; i < anz; i++ )
  55. {
  56. if( daten->hat( i ) && daten->get( i )->rundenNummer == nummer )
  57. {
  58. Bild *b = new Bild();
  59. b->neuBild( daten->get( i )->rundenBild.getBreite(), daten->get( i )->rundenBild.getHeight(), 0 );
  60. b->drawBild( 0, 0, b->getBreite(), b->getHeight(), daten->get( i )->rundenBild );
  61. rundenBild->setBildZ( b );
  62. *rundenNummer->zText() += nummer + 1;
  63. *rundenDauer->zText() += daten->get( i )->rundenDauer / 60;
  64. *rundenDauer->zText() += ":";
  65. *rundenDauer->zText() += daten->get( i )->rundenDauer % 60;
  66. int anz2 = daten->get( i )->teams.getEintragAnzahl();
  67. for( int j = 0; j < anz; j++ )
  68. {
  69. if( daten->get( i )->teams.hat( j ) && daten->get( i )->teams.get( j )->teamNummer == daten->get( i )->rundenSieger )
  70. {
  71. *rundenSieger->zText() += daten->get( i )->teams.get( j )->teamName.getText();
  72. break;
  73. }
  74. }
  75. *spielfeldNutzung->zText() += daten->get( i )->spielfeldNutzung;
  76. *spielfeldNutzung->zText() += "%";
  77. auswahl = nummer;
  78. rend = 1;
  79. return;
  80. }
  81. }
  82. auswahl = -1;
  83. rend = 1;
  84. }
  85. }
  86. void StatistikRunde::doMausEreignis( MausEreignis &me )
  87. {
  88. rundenBild->doMausEreignis( me );
  89. }
  90. bool StatistikRunde::tick( double tickVal )
  91. {
  92. int verbl = (int)verb;
  93. verb -= tickVal;
  94. if( verb < 0 )
  95. verb = 0;
  96. if( verbl != (int)verb )
  97. {
  98. verbleibend->setText( "Verbleibende Zeit: " );
  99. *verbleibend->zText() += (int)verb;
  100. rend = 1;
  101. }
  102. rend |= rundenBild->tick( tickVal );
  103. bool ret = rend;
  104. rend = 0;
  105. return ret;
  106. }
  107. void StatistikRunde::render( Bild &zRObj )
  108. {
  109. rundenBild->render( zRObj );
  110. rundenNummer->render( zRObj );
  111. rundenDauer->render( zRObj );
  112. rundenSieger->render( zRObj );
  113. spielfeldNutzung->render( zRObj );
  114. verbleibend->render( zRObj );
  115. }
  116. // constant
  117. bool StatistikRunde::mussVerlassen() const
  118. {
  119. return verb == 0;
  120. }
  121. // Reference Counting
  122. StatistikRunde *StatistikRunde::getThis()
  123. {
  124. ref++;
  125. return this;
  126. }
  127. StatistikRunde *StatistikRunde::release()
  128. {
  129. ref--;
  130. if( !ref )
  131. delete this;
  132. return 0;
  133. }