StatistikTabelle.cpp 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368
  1. #include "StatistikTabelle.h"
  2. #include "Initialisierung.h"
  3. #define ABSTYLE AuswahlBox::Style::Sichtbar | AuswahlBox::Style::Erlaubt | AuswahlBox::Style::Rahmen | AuswahlBox::Style::AuswahlBuffer | AuswahlBox::Style::MausBuffer | AuswahlBox::Style::MaxHeight | AuswahlBox::Style::Hintergrund | AuswahlBox::Style::VScroll
  4. #define OTSTYLE ObjTabelle::Style::Sichtbar | ObjTabelle::Style::Erlaubt | ObjTabelle::Style::Rahmen | ObjTabelle::Style::Raster | ObjTabelle::Style::scroll | ObjTabelle::Style::SpaltenBreiteMax | ObjTabelle::Style::SpaltenBreiteMin | ObjTabelle::Style::SpaltenBreiteChangeable | ObjTabelle::Style::SpaltenBeweglich
  5. // Inhalt der StatistikTabelle Klasse aus StatistikTabelle.h
  6. // Konstruktor
  7. StatistikTabelle::StatistikTabelle( Array< SSDSpieler * > *ssdgs, Array< SSDTeam * > *ssdgt,
  8. UIInit &uiFactory, bool historie )
  9. : ReferenceCounter(),
  10. uiFactory( uiFactory ),
  11. ssdgs( ssdgs ),
  12. ssdgt( ssdgt ),
  13. stAuswahl( initAuswahlBox( 10, 10, 120, 20, uiFactory, ABSTYLE, { "Spieler", "Teams" } ) ),
  14. sortAuswahlGS( initAuswahlBox( 270, 10, 120, 20, uiFactory, ABSTYLE, { "Spielername", "Teamname",
  15. "Spielerfarbe", "Teamfarbe", "Schaden bekommen", "Schaden gemacht", "Leben geheilt",
  16. "Präzision", "Punkte", "Kills", "Tode", "Items aufgehoben", "Items benutzt" } ) ),
  17. sortAuswahlGT( initAuswahlBox( 270, 10, 120, 20, uiFactory, ABSTYLE, { "Teamname", "Teamfarbe",
  18. "Punkte", "Kills", "Tode" } ) ),
  19. sortRichtungGS( initAuswahlBox( 400, 10, 120, 20, uiFactory, ABSTYLE, { "Aufwärts", "Abwärts" } ) ),
  20. sortRichtungGT( initAuswahlBox( 400, 10, 120, 20, uiFactory, ABSTYLE, { "Aufwärts", "Abwärts" } ) ),
  21. gesamtSpieler( initObjTabelle( 10, 40, 760, 245, uiFactory, OTSTYLE, { { "Spielername", 120, 20, 200 },
  22. { "Teamname", 120, 20, 120 }, { "Spielerfarbe", 100, 20, 100 }, { "Teamfarbe", 100, 20, 100 },
  23. { "Schaden bekommen", 130, 20, 130 }, { "Schaden gemacht", 130, 20, 130 },
  24. { "Leben geheilt", 120, 20, 140 }, { "Präzision", 60, 20, 60 }, { "Punkte", 50, 20, 50 },
  25. { "Kills", 40, 20, 40 }, { "Tode", 40, 20, 40 }, { "Items aufgehoben", 120, 20, 120 },
  26. { "Items benutzt", 80, 20, 60 } }, 20 ) ),
  27. gesamtTeam( initObjTabelle( 10, 40, 760, 245, uiFactory, OTSTYLE, { { "Teamname", 120, 20, 120 },
  28. { "Teamfarbe", 100, 20, 100 }, { "Punkte", 50, 20, 50 }, { "Kills", 40, 20, 40 }, { "Tode", 40, 20, 40 } }, 20 ) ),
  29. teamS( 0 ),
  30. rend( 0 )
  31. {
  32. tabelleFüllen( gesamtSpieler );
  33. tabelleFüllen( gesamtTeam );
  34. if( historie )
  35. {
  36. sortRichtungGS->setSize( 110, 20 );
  37. sortRichtungGT->setSize( 110, 20 );
  38. gesamtSpieler->setSize( 760, 380 );
  39. gesamtTeam->setSize( 760, 380 );
  40. }
  41. }
  42. // Destruktor
  43. StatistikTabelle::~StatistikTabelle()
  44. {
  45. ssdgs->release();
  46. ssdgt->release();
  47. stAuswahl->release();
  48. sortAuswahlGS->release();
  49. sortAuswahlGT->release();
  50. sortRichtungGS->release();
  51. sortRichtungGT->release();
  52. gesamtSpieler->release();
  53. gesamtTeam->release();
  54. }
  55. // privat
  56. void StatistikTabelle::tabelleLehren( ObjTabelle *zT, bool überschrift )
  57. {
  58. int zAnz = zT->getZeilenAnzahl();
  59. for( int i = !überschrift; i < zAnz; i++ )
  60. zT->removeZeile( !überschrift );
  61. }
  62. void StatistikTabelle::tabelleFüllen( ObjTabelle *zT )
  63. {
  64. if( zT == gesamtSpieler )
  65. {
  66. if( !sortAuswahlGS->zEintragText( sortAuswahlGS->getAuswahl() ) )
  67. return;
  68. if( !sortRichtungGS->zEintragText( sortRichtungGS->getAuswahl() ) )
  69. return;
  70. Array< int > reihenfolge;
  71. bool aufsteigend = sortRichtungGS->zEintragText( sortRichtungGS->getAuswahl() )->istGleich( "Aufwärts" );
  72. int anz = ssdgs->getEintragAnzahl();
  73. bool *fertig = new bool[ anz ];
  74. ZeroMemory( fertig, anz );
  75. bool spielername = sortAuswahlGS->zEintragText( sortAuswahlGS->getAuswahl() )->istGleich( "Spielername" );
  76. bool teamname = sortAuswahlGS->zEintragText( sortAuswahlGS->getAuswahl() )->istGleich( "Teamname" );
  77. bool spielerfarbe = sortAuswahlGS->zEintragText( sortAuswahlGS->getAuswahl() )->istGleich( "Spielerfarbe" );
  78. bool teamfarbe = sortAuswahlGS->zEintragText( sortAuswahlGS->getAuswahl() )->istGleich( "Teamfarbe" );
  79. bool schadenBekommen = sortAuswahlGS->zEintragText( sortAuswahlGS->getAuswahl() )->istGleich( "Schaden bekommen" );
  80. bool schadenGemacht = sortAuswahlGS->zEintragText( sortAuswahlGS->getAuswahl() )->istGleich( "Schaden gemacht" );
  81. bool lebenGeheilt = sortAuswahlGS->zEintragText( sortAuswahlGS->getAuswahl() )->istGleich( "Leben geheilt" );
  82. bool präzision = sortAuswahlGS->zEintragText( sortAuswahlGS->getAuswahl() )->istGleich( "Präzision" );
  83. bool punkte = sortAuswahlGS->zEintragText( sortAuswahlGS->getAuswahl() )->istGleich( "Punkte" );
  84. bool kills = sortAuswahlGS->zEintragText( sortAuswahlGS->getAuswahl() )->istGleich( "Kills" );
  85. bool tode = sortAuswahlGS->zEintragText( sortAuswahlGS->getAuswahl() )->istGleich( "Tode" );
  86. bool itemsAufgehoben = sortAuswahlGS->zEintragText( sortAuswahlGS->getAuswahl() )->istGleich( "Items aufgehoben" );
  87. bool itemsBenutzt = sortAuswahlGS->zEintragText( sortAuswahlGS->getAuswahl() )->istGleich( "Items benutzt" );
  88. for( int i = 0; i < anz; i++ )
  89. {
  90. Text minMaxT;
  91. int minMax;
  92. int pos = -1;
  93. for( int j = 0; j < anz; j++ )
  94. {
  95. if( !ssdgs->hat( j ) || fertig[ j ] )
  96. continue;
  97. if( spielername && ( pos < 0 || ( aufsteigend && ssdgs->get( j )->spielerName < minMaxT ) || ( !aufsteigend && ssdgs->get( j )->spielerName > minMaxT ) ) )
  98. { // Sortiert nach Spieler Name
  99. minMaxT = ssdgs->get( j )->spielerName.getText();
  100. pos = j;
  101. }
  102. if( teamname && ( pos < 0 || ( aufsteigend && ssdgs->get( j )->teamName < minMaxT ) || ( !aufsteigend && ssdgs->get( j )->teamName > minMaxT ) ) )
  103. { // Sortiert nach Team Name
  104. minMaxT = ssdgs->get( j )->teamName.getText();
  105. pos = j;
  106. }
  107. if( spielerfarbe && ( pos < 0 || ( aufsteigend && ssdgs->get( j )->spielerFarbe < minMax ) || ( !aufsteigend && ssdgs->get( j )->spielerFarbe > minMax ) ) )
  108. { // Sortiert nach Spieler Farbe
  109. minMax = ssdgs->get( j )->spielerFarbe;
  110. pos = j;
  111. }
  112. if( teamfarbe && ( pos < 0 || ( aufsteigend && ssdgs->get( j )->teamFarbe < minMax ) || ( !aufsteigend && ssdgs->get( j )->teamFarbe > minMax ) ) )
  113. { // Sortiert nach Team Farbe
  114. minMax = ssdgs->get( j )->teamFarbe;
  115. pos = j;
  116. }
  117. if( schadenBekommen && ( pos < 0 || ( aufsteigend && ssdgs->get( j )->schadenBekommen < minMax ) || ( !aufsteigend && ssdgs->get( j )->schadenBekommen > minMax ) ) )
  118. { // Sortiert nach Schaden bekommen
  119. minMax = ssdgs->get( j )->schadenBekommen;
  120. pos = j;
  121. }
  122. if( schadenGemacht && ( pos < 0 || ( aufsteigend && ssdgs->get( j )->schadenGemacht < minMax ) || ( !aufsteigend && ssdgs->get( j )->schadenGemacht > minMax ) ) )
  123. { // Sortiert nach Schaden gemacht
  124. minMax = ssdgs->get( j )->schadenGemacht;
  125. pos = j;
  126. }
  127. if( lebenGeheilt && ( pos < 0 || ( aufsteigend && ssdgs->get( j )->lebenGeheilt < minMax ) || ( !aufsteigend && ssdgs->get( j )->lebenGeheilt > minMax ) ) )
  128. { // Sortiert nach Leben geheilt
  129. minMax = ssdgs->get( j )->lebenGeheilt;
  130. pos = j;
  131. }
  132. if( präzision && ( pos < 0 || ( aufsteigend && ( ssdgs->get( j )->treffer ? (int)( 100 / ( (double)ssdgs->get( j )->schüsse / ssdgs->get( j )->treffer ) ) : 0 ) < minMax ) || ( !aufsteigend && ( 100 / ( ssdgs->get( j )->schüsse / ssdgs->get( j )->treffer ) ) > minMax ) ) )
  133. { // Sortiert nach Treibstoff verbraucht
  134. minMax = (int)( 100 / ( (double)ssdgs->get( j )->schüsse / ssdgs->get( j )->treffer ) );
  135. pos = j;
  136. }
  137. if( punkte && ( pos < 0 || ( aufsteigend && ssdgs->get( j )->punkte < minMax ) || ( !aufsteigend && ssdgs->get( j )->punkte > minMax ) ) )
  138. { // Sortiert nach Punkten
  139. minMax = ssdgs->get( j )->punkte;
  140. pos = j;
  141. }
  142. if( kills && ( pos < 0 || ( aufsteigend && ssdgs->get( j )->kills < minMax ) || ( !aufsteigend && ssdgs->get( j )->kills > minMax ) ) )
  143. { // Sortiert nach Kills
  144. minMax = ssdgs->get( j )->kills;
  145. pos = j;
  146. }
  147. if( tode && ( pos < 0 || ( aufsteigend && ssdgs->get( j )->tode < minMax ) || ( !aufsteigend && ssdgs->get( j )->tode > minMax ) ) )
  148. { // Sortiert nach Toden
  149. minMax = ssdgs->get( j )->tode;
  150. pos = j;
  151. }
  152. if( itemsAufgehoben && ( pos < 0 || ( aufsteigend && ssdgs->get( j )->itemsAufgehoben < minMax ) || ( !aufsteigend && ssdgs->get( j )->itemsAufgehoben > minMax ) ) )
  153. { // Sortiert nach Items aufgehoben
  154. minMax = ssdgs->get( j )->itemsAufgehoben;
  155. pos = j;
  156. }
  157. if( itemsBenutzt && ( pos < 0 || ( aufsteigend && ssdgs->get( j )->itemsVerwendet < minMax ) || ( !aufsteigend && ssdgs->get( j )->itemsVerwendet > minMax ) ) )
  158. { // Sortiert nach Items benutzt
  159. minMax = ssdgs->get( j )->itemsVerwendet;
  160. pos = j;
  161. }
  162. }
  163. if( pos >= 0 )
  164. {
  165. reihenfolge.add( pos );
  166. fertig[ pos ] = 1;
  167. }
  168. else
  169. break;
  170. }
  171. delete[] fertig;
  172. anz = reihenfolge.getEintragAnzahl();
  173. for( int j = 0; j < anz; j++ )
  174. {
  175. int i = reihenfolge.get( j );
  176. zT->addZeile( Text( "Spieler " ) += ssdgs->get( i )->spielerNummer );
  177. int zNum = zT->getZeilenNummer( Text( "Spieler " ) += ssdgs->get( i )->spielerNummer );
  178. zT->setZeichnungZ( zT->getSpaltenNummer( "Spielername" ), zNum, initTextFeld( 0, 0, 0, 0, uiFactory, TextFeld::Style::Text, ssdgs->get( i )->spielerName ) );
  179. zT->setZeichnungZ( zT->getSpaltenNummer( "Teamname" ), zNum, initTextFeld( 0, 0, 0, 0, uiFactory, TextFeld::Style::Text, ssdgs->get( i )->teamName ) );
  180. zT->setZeichnungZ( zT->getSpaltenNummer( "Spielerfarbe" ), zNum, initTextFeld( 0, 0, 0, 0, uiFactory, TextFeld::Style::Sichtbar | TextFeld::Style::Hintergrund, 0 ) );
  181. ( (TextFeld *)zT->zZeichnung( zT->getSpaltenNummer( "Spielerfarbe" ), zNum ) )->setHintergrundFarbe( ssdgs->get( i )->spielerFarbe );
  182. zT->setZeichnungZ( zT->getSpaltenNummer( "Teamfarbe" ), zNum, initTextFeld( 0, 0, 0, 0, uiFactory, TextFeld::Style::Sichtbar | TextFeld::Style::Hintergrund, 0 ) );
  183. ( (TextFeld *)zT->zZeichnung( zT->getSpaltenNummer( "Teamfarbe" ), zNum ) )->setHintergrundFarbe( ssdgs->get( i )->teamFarbe );
  184. zT->setZeichnungZ( zT->getSpaltenNummer( "Schaden bekommen" ), zNum, initTextFeld( 0, 0, 0, 0, uiFactory, TextFeld::Style::Text, Text() += ssdgs->get( i )->schadenBekommen ) );
  185. zT->setZeichnungZ( zT->getSpaltenNummer( "Schaden gemacht" ), zNum, initTextFeld( 0, 0, 0, 0, uiFactory, TextFeld::Style::Text, Text() += ssdgs->get( i )->schadenGemacht ) );
  186. zT->setZeichnungZ( zT->getSpaltenNummer( "Leben geheilt" ), zNum, initTextFeld( 0, 0, 0, 0, uiFactory, TextFeld::Style::Text, Text() += ssdgs->get( i )->lebenGeheilt ) );
  187. zT->setZeichnungZ( zT->getSpaltenNummer( "Präzision" ), zNum, initTextFeld( 0, 0, 0, 0, uiFactory, TextFeld::Style::Text, Text() += ( ssdgs->get( i )->schüsse ? ( 100 * ssdgs->get( i )->treffer / ssdgs->get( i )->schüsse ) : 0 ) ) );
  188. zT->setZeichnungZ( zT->getSpaltenNummer( "Punkte" ), zNum, initTextFeld( 0, 0, 0, 0, uiFactory, TextFeld::Style::Text, Text() += ssdgs->get( i )->punkte ) );
  189. zT->setZeichnungZ( zT->getSpaltenNummer( "Kills" ), zNum, initTextFeld( 0, 0, 0, 0, uiFactory, TextFeld::Style::Text, Text() += ssdgs->get( i )->kills ) );
  190. zT->setZeichnungZ( zT->getSpaltenNummer( "Tode" ), zNum, initTextFeld( 0, 0, 0, 0, uiFactory, TextFeld::Style::Text, Text() += ssdgs->get( i )->tode ) );
  191. zT->setZeichnungZ( zT->getSpaltenNummer( "Items aufgehoben" ), zNum, initTextFeld( 0, 0, 0, 0, uiFactory, TextFeld::Style::Text, Text( ssdgs->get( i )->itemsAufgehoben ) ) );
  192. zT->setZeichnungZ( zT->getSpaltenNummer( "Items benutzt" ), zNum, initTextFeld( 0, 0, 0, 0, uiFactory, TextFeld::Style::Text, Text( ssdgs->get( i )->itemsVerwendet ) ) );
  193. }
  194. return;
  195. }
  196. if( zT == gesamtTeam )
  197. {
  198. if( !sortAuswahlGT->zEintragText( sortAuswahlGT->getAuswahl() ) )
  199. return;
  200. if( !sortRichtungGS->zEintragText( sortRichtungGS->getAuswahl() ) )
  201. return;
  202. Array< int > reihenfolge;
  203. bool aufsteigend = sortRichtungGT->zEintragText( sortRichtungGT->getAuswahl() )->istGleich( "Aufwärts" );
  204. int anz = ssdgt->getEintragAnzahl();
  205. bool *fertig = new bool[ anz ];
  206. ZeroMemory( fertig, anz );
  207. bool teamname = sortAuswahlGT->zEintragText( sortAuswahlGT->getAuswahl() )->istGleich( "Teamname" );
  208. bool teamfarbe = sortAuswahlGT->zEintragText( sortAuswahlGT->getAuswahl() )->istGleich( "Teamfarbe" );
  209. bool punkte = sortAuswahlGT->zEintragText( sortAuswahlGT->getAuswahl() )->istGleich( "Punkte" );
  210. bool kills = sortAuswahlGT->zEintragText( sortAuswahlGT->getAuswahl() )->istGleich( "Kills" );
  211. bool tode = sortAuswahlGT->zEintragText( sortAuswahlGT->getAuswahl() )->istGleich( "Tode" );
  212. for( int i = 0; i < anz; i++ )
  213. {
  214. Text minMaxT;
  215. int minMax;
  216. int pos = -1;
  217. for( int j = 0; j < anz; j++ )
  218. {
  219. if( !ssdgt->hat( j ) || fertig[ j ] )
  220. continue;
  221. if( teamname && ( pos < 0 || ( aufsteigend && ssdgt->get( j )->teamName < minMaxT ) || ( !aufsteigend && ssdgt->get( j )->teamName > minMaxT ) ) )
  222. { // Sortiert nach Team Name
  223. minMaxT = ssdgt->get( j )->teamName.getText();
  224. pos = j;
  225. }
  226. if( teamfarbe && ( pos < 0 || ( aufsteigend && ssdgt->get( j )->teamFarbe < minMax ) || ( !aufsteigend && ssdgt->get( j )->teamFarbe > minMax ) ) )
  227. { // Sortiert nach Team Farbe
  228. minMax = ssdgt->get( j )->teamFarbe;
  229. pos = j;
  230. }
  231. if( punkte && ( pos < 0 || ( aufsteigend && ssdgt->get( j )->punkte < minMax ) || ( !aufsteigend && ssdgt->get( j )->punkte > minMax ) ) )
  232. { // Sortiert nach Punkten
  233. minMax = ssdgt->get( j )->punkte;
  234. pos = j;
  235. }
  236. if( kills && ( pos < 0 || ( aufsteigend && ssdgt->get( j )->kills < minMax ) || ( !aufsteigend && ssdgt->get( j )->kills > minMax ) ) )
  237. { // Sortiert nach Kills
  238. minMax = ssdgt->get( j )->kills;
  239. pos = j;
  240. }
  241. if( tode && ( pos < 0 || ( aufsteigend && ssdgt->get( j )->tode < minMax ) || ( !aufsteigend && ssdgt->get( j )->tode > minMax ) ) )
  242. { // Sortiert nach Toden
  243. minMax = ssdgt->get( j )->tode;
  244. pos = j;
  245. }
  246. }
  247. if( pos >= 0 )
  248. {
  249. reihenfolge.add( pos );
  250. fertig[ pos ] = 1;
  251. }
  252. else
  253. break;
  254. }
  255. delete[] fertig;
  256. anz = reihenfolge.getEintragAnzahl();
  257. for( int j = 0; j < anz; j++ )
  258. {
  259. int i = reihenfolge.get( j );
  260. zT->addZeile( Text( "Team " ) += ssdgt->get( i )->teamNummer );
  261. int zNum = zT->getZeilenNummer( Text( "Team " ) += ssdgt->get( i )->teamNummer );
  262. zT->setZeichnungZ( zT->getSpaltenNummer( "Teamname" ), zNum, initTextFeld( 0, 0, 0, 0, uiFactory, TextFeld::Style::Text, ssdgt->get( i )->teamName ) );
  263. zT->setZeichnungZ( zT->getSpaltenNummer( "Teamfarbe" ), zNum, initTextFeld( 0, 0, 0, 0, uiFactory, TextFeld::Style::Sichtbar | TextFeld::Style::Hintergrund, 0 ) );
  264. ( (TextFeld *)zT->zZeichnung( zT->getSpaltenNummer( "Teamfarbe" ), zNum ) )->setHintergrundFarbe( ssdgt->get( i )->teamFarbe );
  265. zT->setZeichnungZ( zT->getSpaltenNummer( "Punkte" ), zNum, initTextFeld( 0, 0, 0, 0, uiFactory, TextFeld::Style::Text, Text() += ssdgt->get( i )->punkte ) );
  266. zT->setZeichnungZ( zT->getSpaltenNummer( "Kills" ), zNum, initTextFeld( 0, 0, 0, 0, uiFactory, TextFeld::Style::Text, Text() += ssdgt->get( i )->kills ) );
  267. zT->setZeichnungZ( zT->getSpaltenNummer( "Tode" ), zNum, initTextFeld( 0, 0, 0, 0, uiFactory, TextFeld::Style::Text, Text() += ssdgt->get( i )->tode ) );
  268. }
  269. return;
  270. }
  271. }
  272. // nicht constant
  273. void StatistikTabelle::doPublicMausEreignis( MausEreignis &me )
  274. {
  275. // Auswahl Boxen
  276. int ausw = stAuswahl->getAuswahl();
  277. stAuswahl->doPublicMausEreignis( me );
  278. if( ausw != stAuswahl->getAuswahl() )
  279. {
  280. teamS = stAuswahl->zEintragText( stAuswahl->getAuswahl() )->istGleich( "Teams" );
  281. stAuswahl->einklappen();
  282. }
  283. if( teamS )
  284. { // Team Statistik
  285. int ausw = sortAuswahlGT->getAuswahl();
  286. sortAuswahlGT->doPublicMausEreignis( me );
  287. if( ausw != sortAuswahlGT->getAuswahl() )
  288. { // Sortierungs Spalte ändert sich
  289. tabelleLehren( gesamtTeam, 0 );
  290. tabelleFüllen( gesamtTeam );
  291. sortAuswahlGT->einklappen();
  292. }
  293. ausw = sortRichtungGT->getAuswahl();
  294. sortRichtungGT->doPublicMausEreignis( me );
  295. if( ausw != sortRichtungGT->getAuswahl() )
  296. { // Sortierungs Richtung ändert sich
  297. tabelleLehren( gesamtTeam, 0 );
  298. tabelleFüllen( gesamtTeam );
  299. sortRichtungGT->einklappen();
  300. }
  301. gesamtTeam->doPublicMausEreignis( me );
  302. }
  303. else
  304. { // Spieler Statistik
  305. int ausw = sortAuswahlGS->getAuswahl();
  306. sortAuswahlGS->doPublicMausEreignis( me );
  307. if( ausw != sortAuswahlGS->getAuswahl() )
  308. { // Sortierungs Spalte ändert sich
  309. tabelleLehren( gesamtSpieler, 0 );
  310. tabelleFüllen( gesamtSpieler );
  311. sortAuswahlGS->einklappen();
  312. }
  313. ausw = sortRichtungGS->getAuswahl();
  314. sortRichtungGS->doPublicMausEreignis( me );
  315. if( ausw != sortRichtungGS->getAuswahl() )
  316. { // Sortierungs Richtung ändert sich
  317. tabelleLehren( gesamtSpieler, 0 );
  318. tabelleFüllen( gesamtSpieler );
  319. sortRichtungGS->einklappen();
  320. }
  321. gesamtSpieler->doPublicMausEreignis( me );
  322. }
  323. }
  324. bool StatistikTabelle::tick( double tickVal )
  325. {
  326. if( teamS )
  327. { // Team Statistik
  328. rend |= gesamtTeam->tick( tickVal );
  329. rend |= sortAuswahlGT->tick( tickVal );
  330. rend |= sortRichtungGT->tick( tickVal );
  331. }
  332. else
  333. { // Spieler Statistik
  334. rend |= gesamtSpieler->tick( tickVal );
  335. rend |= sortAuswahlGS->tick( tickVal );
  336. rend |= sortRichtungGS->tick( tickVal );
  337. }
  338. // Auswahl Boxen
  339. rend |= stAuswahl->tick( tickVal );
  340. bool ret = rend;
  341. rend = 0;
  342. return ret;
  343. }
  344. void StatistikTabelle::render( Bild &zRObj )
  345. {
  346. if( teamS )
  347. { // Team Statistik
  348. gesamtTeam->render( zRObj );
  349. sortAuswahlGT->render( zRObj );
  350. sortRichtungGT->render( zRObj );
  351. }
  352. else
  353. { // Spieler Statistik
  354. gesamtSpieler->render( zRObj );
  355. sortAuswahlGS->render( zRObj );
  356. sortRichtungGS->render( zRObj );
  357. }
  358. // Auswahl Boxen
  359. stAuswahl->render( zRObj );
  360. }