HistorieStatistik.cpp 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. #include "HistorieStatistik.h"
  2. #include <Knopf.h>
  3. #include <MausEreignis.h>
  4. #include <Bildschirm.h>
  5. #include "../Initialisierung/Initialisierung.h"
  6. #include <InitDatei.h>
  7. #include <DateiSystem.h>
  8. //#include "StatistikLeser.h"
  9. // Inhalt der HistorieStatistik Klasse aus HistorieStatistik.h
  10. // Konstruktor
  11. HistorieStatistik::HistorieStatistik()
  12. : ReferenceCounter()
  13. {
  14. screen = 0;
  15. gss = new Array< SSDSpieler * >();
  16. gts = new Array< SSDTeam * >();
  17. tabelle = 0;
  18. fertig = 0;
  19. geladen = 0;
  20. geschlossen = 0;
  21. alpha = 0;
  22. sichtbar = 0;
  23. tickVal = 0;
  24. rend = 0;
  25. }
  26. // Destruktor
  27. HistorieStatistik::~HistorieStatistik()
  28. {
  29. if( !geladen )
  30. {
  31. gss->release();
  32. gts->release();
  33. }
  34. else
  35. {
  36. int anz = gss->getEintragAnzahl();
  37. for( int i = 0; i < anz; i++ )
  38. {
  39. if( gss->hat( i ) )
  40. delete gss->get( i );
  41. }
  42. gss->release();
  43. anz = gts->getEintragAnzahl();
  44. for( int i = 0; i < anz; i++ )
  45. {
  46. if( gts->hat( i ) )
  47. delete gts->get( i );
  48. }
  49. gts->release();
  50. }
  51. if( tabelle )
  52. tabelle->release();
  53. if( fertig )
  54. fertig->release();
  55. }
  56. // nicht constant
  57. void HistorieStatistik::setUIFactory( UIInit &uiFactory )
  58. {
  59. this->uiFactory = uiFactory;
  60. }
  61. void HistorieStatistik::ladeDaten( int spielId )
  62. {
  63. if( geladen )
  64. return;
  65. //StatistikLeser *reader = new StatistikLeser( spielId );
  66. //for( int i = 0; i < reader->getSpielerAnzahl(); i++ )
  67. // gss->set( reader->getSSDGS( i ), i );
  68. //for( int i = 0; i < reader->getTeamAnzahl(); i++ )
  69. // gts->set( reader->getSSDGT( i ), i );
  70. //reader->release();
  71. tabelle = new StatistikTabelle( dynamic_cast<Array<SSDSpieler *> *>( gss->getThis() ), dynamic_cast<Array<SSDTeam *> *>( gts->getThis() ), uiFactory, 1 );
  72. fertig = initKnopf( 600, 390, 100, 20, uiFactory, Knopf::Style::Sichtbar, "Zurück" );
  73. geladen = 1;
  74. }
  75. void HistorieStatistik::setSichtbar( bool sichtbar )
  76. {
  77. this->sichtbar = sichtbar;
  78. }
  79. void HistorieStatistik::doPublicMausEreignis( MausEreignis &me )
  80. {
  81. if( !geladen )
  82. return;
  83. bool vera = me.verarbeitet;
  84. fertig->doPublicMausEreignis( me );
  85. if( !vera && me.verarbeitet && me.id == ME_RLinks )
  86. geschlossen = 1;
  87. tabelle->doPublicMausEreignis( me );
  88. }
  89. void HistorieStatistik::doTastaturEreignis( TastaturEreignis &te )
  90. {}
  91. bool HistorieStatistik::tick( double tickVal )
  92. {
  93. if( !geladen )
  94. return 0;
  95. rend |= tabelle->tick( tickVal );
  96. rend |= fertig->tick( tickVal );
  97. this->tickVal += tickVal * 150;
  98. int val = (int)this->tickVal;
  99. this->tickVal -= val;
  100. if( val )
  101. {
  102. if( sichtbar && alpha != 255 )
  103. {
  104. if( alpha + val > 255 )
  105. alpha = 255;
  106. else
  107. alpha += val;
  108. rend = 1;
  109. }
  110. if( !sichtbar && alpha )
  111. {
  112. if( alpha - val < 0 )
  113. alpha = 0;
  114. else
  115. alpha -= val;
  116. rend = 1;
  117. }
  118. }
  119. bool ret = rend;
  120. rend = 0;
  121. return ret;
  122. }
  123. void HistorieStatistik::render( Bild &zRObj )
  124. {
  125. if( !geladen )
  126. return;
  127. zRObj.setAlpha( alpha );
  128. tabelle->render( zRObj );
  129. fertig->render( zRObj );
  130. zRObj.releaseAlpha();
  131. }
  132. // constant
  133. bool HistorieStatistik::istNochSichtbar() const
  134. {
  135. return alpha != 0 || sichtbar;
  136. }
  137. bool HistorieStatistik::wurdeGeschlossen() const
  138. {
  139. return geschlossen;
  140. }