StatistikRunde.cpp 4.7 KB

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