HistorieStatistik.cpp 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  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. {
  13. schrift = 0;
  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. ref = 1;
  26. }
  27. // Destruktor
  28. HistorieStatistik::~HistorieStatistik()
  29. {
  30. if( schrift )
  31. schrift->release();
  32. if( screen )
  33. screen->release();
  34. if( !geladen )
  35. {
  36. gss->release();
  37. gts->release();
  38. }
  39. else
  40. {
  41. int anz = gss->getEintragAnzahl();
  42. for( int i = 0; i < anz; i++ )
  43. {
  44. if( gss->hat( i ) )
  45. delete gss->get( i );
  46. }
  47. gss->release();
  48. anz = gts->getEintragAnzahl();
  49. for( int i = 0; i < anz; i++ )
  50. {
  51. if( gts->hat( i ) )
  52. delete gts->get( i );
  53. }
  54. gts->release();
  55. }
  56. if( tabelle )
  57. tabelle->release();
  58. if( fertig )
  59. fertig->release();
  60. }
  61. // nicht constant
  62. void HistorieStatistik::setSchrift( Schrift *schrift )
  63. {
  64. if( this->schrift )
  65. this->schrift->release();
  66. this->schrift = schrift;
  67. }
  68. void HistorieStatistik::setBildschirm( Bildschirm *screen )
  69. {
  70. if( this->screen )
  71. this->screen->release();
  72. this->screen = screen;
  73. }
  74. void HistorieStatistik::ladeDaten( int spielId )
  75. {
  76. if( geladen )
  77. return;
  78. //StatistikLeser *reader = new StatistikLeser( spielId );
  79. //for( int i = 0; i < reader->getSpielerAnzahl(); i++ )
  80. // gss->set( reader->getSSDGS( i ), i );
  81. //for( int i = 0; i < reader->getTeamAnzahl(); i++ )
  82. // gts->set( reader->getSSDGT( i ), i );
  83. //reader->release();
  84. tabelle = new StatistikTabelle( gss->getThis(), gts->getThis(), schrift, screen, 1 );
  85. fertig = initKnopf( 600, 390, 100, 20, schrift, Knopf::Style::Sichtbar, "Zurück" );
  86. geladen = 1;
  87. }
  88. void HistorieStatistik::setSichtbar( bool sichtbar )
  89. {
  90. this->sichtbar = sichtbar;
  91. }
  92. void HistorieStatistik::doMausEreignis( MausEreignis &me )
  93. {
  94. if( !geladen )
  95. return;
  96. tabelle->doMausEreignis( me );
  97. bool vera = me.verarbeitet;
  98. fertig->doMausEreignis( me );
  99. if( !vera && me.verarbeitet && me.id == ME_RLinks )
  100. geschlossen = 1;
  101. }
  102. void HistorieStatistik::doTastaturEreignis( TastaturEreignis &te )
  103. {
  104. }
  105. bool HistorieStatistik::tick( double tickVal )
  106. {
  107. if( !geladen )
  108. return 0;
  109. rend |= tabelle->tick( tickVal );
  110. rend |= fertig->tick( tickVal );
  111. this->tickVal += tickVal * 150;
  112. int val = ( int )this->tickVal;
  113. this->tickVal -= val;
  114. if( val )
  115. {
  116. if( sichtbar && alpha != 255 )
  117. {
  118. if( alpha + val > 255 )
  119. alpha = 255;
  120. else
  121. alpha += val;
  122. rend = 1;
  123. }
  124. if( !sichtbar && alpha )
  125. {
  126. if( alpha - val < 0 )
  127. alpha = 0;
  128. else
  129. alpha -= val;
  130. rend = 1;
  131. }
  132. }
  133. bool ret = rend;
  134. rend = 0;
  135. return ret;
  136. }
  137. void HistorieStatistik::render( Bild &zRObj )
  138. {
  139. if( !geladen )
  140. return;
  141. zRObj.setAlpha( alpha );
  142. tabelle->render( zRObj );
  143. fertig->render( zRObj );
  144. zRObj.releaseAlpha();
  145. }
  146. // constant
  147. bool HistorieStatistik::istNochSichtbar() const
  148. {
  149. return alpha != 0 || sichtbar;
  150. }
  151. bool HistorieStatistik::wurdeGeschlossen() const
  152. {
  153. return geschlossen;
  154. }
  155. // Reference Counting
  156. AccountHistorieStatistikV *HistorieStatistik::getThis()
  157. {
  158. ref++;
  159. return this;
  160. }
  161. AccountHistorieStatistikV *HistorieStatistik::release()
  162. {
  163. ref--;
  164. if( !ref )
  165. delete this;
  166. return 0;
  167. }