VideoBestenliste.cpp 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714
  1. #include "VideoBestenliste.h"
  2. #include "..\Spieler\VideoSpieler.h"
  3. #include <Rahmen.h>
  4. #include <Schrift.h>
  5. #include <Punkt.h>
  6. #include <Scroll.h>
  7. #include <Bild.h>
  8. #include <Text.h>
  9. // Inhalt der VideoBLSpieler Klasse aus VideoBestenliste.h
  10. // Konstruktor
  11. VideoBLSpieler::VideoBLSpieler( int sNum, int farbe, Schrift *zS )
  12. {
  13. this->sNum = sNum;
  14. this->farbe = farbe;
  15. p = 0;
  16. nP = 0;
  17. rahmen = new LRahmen();
  18. rahmen->setFarbe( farbe );
  19. rahmen->setRamenBreite( 1 );
  20. rahmen->setSize( 400, 20 );
  21. name = new TextFeld();
  22. name->setStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Center );
  23. if( zS )
  24. name->setSchriftZ( zS->getThis() );
  25. name->setSchriftFarbe( farbe );
  26. name->setSchriftSize( 12 );
  27. name->setSize( 100, 20 );
  28. name->setPosition( 0, 0 );
  29. name->setText( "" );
  30. punkte = new TextFeld();
  31. punkte->setStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Center );
  32. if( zS )
  33. punkte->setSchriftZ( zS->getThis() );
  34. punkte->setSchriftFarbe( farbe );
  35. punkte->setSchriftSize( 12 );
  36. punkte->setSize( 100, 20 );
  37. punkte->setPosition( 100, 0 );
  38. punkte->setText( "" );
  39. neuPunkte = new TextFeld();
  40. neuPunkte->setStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Center );
  41. if( zS )
  42. neuPunkte->setSchriftZ( zS->getThis() );
  43. neuPunkte->setSchriftFarbe( farbe );
  44. neuPunkte->setSchriftSize( 12 );
  45. neuPunkte->setSize( 100, 20 );
  46. neuPunkte->setPosition( 200, 0 );
  47. neuPunkte->setText( "" );
  48. status = new TextFeld();
  49. status->setStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Center );
  50. if( zS )
  51. status->setSchriftZ( zS->getThis() );
  52. status->setSchriftFarbe( 0xFF00FF00 );
  53. status->setSchriftSize( 12 );
  54. status->setSize( 100, 20 );
  55. status->setPosition( 300, 0 );
  56. status->setText( "lebt" );
  57. rundenNP = new Array< int >();
  58. runde = 0;
  59. ref = 1;
  60. }
  61. // Destruktor
  62. VideoBLSpieler::~VideoBLSpieler()
  63. {
  64. rahmen->release();
  65. name->release();
  66. punkte->release();
  67. neuPunkte->release();
  68. status->release();
  69. rundenNP->release();
  70. }
  71. // nicht constant
  72. bool VideoBLSpieler::updateStatus( VideoSpieler *zSpieler )
  73. {
  74. if( sNum != zSpieler->getSpielerNummer() )
  75. return 0;
  76. if( zSpieler->istAmLeben() )
  77. {
  78. status->setSchriftFarbe( 0xFF00FF00 );
  79. status->setText( "lebt" );
  80. }
  81. else
  82. {
  83. status->setSchriftFarbe( 0xFFFF0000 );
  84. status->setText( "tot" );
  85. }
  86. name->setText( zSpieler->zName()->getText() );
  87. return 1;
  88. }
  89. void VideoBLSpieler::setPunkte( int p )
  90. {
  91. this->p = p;
  92. }
  93. void VideoBLSpieler::addPunkt( bool plus )
  94. {
  95. if( plus )
  96. nP++;
  97. else
  98. nP--;
  99. }
  100. void VideoBLSpieler::updatePunkte( bool vorwärts )
  101. {
  102. if( vorwärts )
  103. {
  104. p += nP;
  105. rundenNP->set( nP, runde );
  106. nP = 0;
  107. runde++;
  108. }
  109. else
  110. {
  111. runde--;
  112. nP = rundenNP->get( runde );
  113. p -= nP;
  114. }
  115. }
  116. void VideoBLSpieler::render( int y, Bild &zRObj )
  117. {
  118. if( !zRObj.setDrawOptions( 1, y, rahmen->getBreite(), rahmen->getHeight() ) )
  119. return;
  120. punkte->setText( "" );
  121. if( nP == 0 )
  122. {
  123. neuPunkte->setText( "" );
  124. neuPunkte->setSchriftFarbe( 0xFFFFFFFF );
  125. }
  126. else if( nP > 0 )
  127. {
  128. neuPunkte->setText( "+" );
  129. neuPunkte->setSchriftFarbe( 0xFF00FF00 );
  130. }
  131. else
  132. {
  133. neuPunkte->setText( "" );
  134. neuPunkte->setSchriftFarbe( 0xFFFF0000 );
  135. }
  136. punkte->zText()->append( p > 0 ? p : 0 );
  137. neuPunkte->zText()->append( nP );
  138. rahmen->render( zRObj );
  139. name->render( zRObj );
  140. punkte->render( zRObj );
  141. neuPunkte->render( zRObj );
  142. status->render( zRObj );
  143. zRObj.releaseDrawOptions();
  144. }
  145. // constant
  146. int VideoBLSpieler::getSpielerNummer() const
  147. {
  148. return sNum;
  149. }
  150. int VideoBLSpieler::getPunkte() const
  151. {
  152. return p + nP;
  153. }
  154. // Reference Counting
  155. VideoBLSpieler *VideoBLSpieler::getThis()
  156. {
  157. ref++;
  158. return this;
  159. }
  160. VideoBLSpieler *VideoBLSpieler::release()
  161. {
  162. ref--;
  163. if( !ref )
  164. delete this;
  165. return 0;
  166. }
  167. // Inhalt der VideoBLTeam Klasse aus VideoBestenliste.h
  168. // Konstruktor
  169. VideoBLTeam::VideoBLTeam( int id, int farbe, Schrift *s, char *n )
  170. {
  171. teamId = id;
  172. spielerAnzahl = 0;
  173. p = 0;
  174. mP = 0;
  175. nP = 0;
  176. this->farbe = farbe;
  177. schrift = s;
  178. rahmen = new LRahmen();
  179. rahmen->setFarbe( farbe );
  180. rahmen->setRamenBreite( 1 );
  181. spieler = new RCArray< VideoBLSpieler >();
  182. name = new TextFeld();
  183. name->setStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Center );
  184. if( s )
  185. name->setSchriftZ( s->getThis() );
  186. name->setSchriftFarbe( farbe );
  187. name->setSchriftSize( 12 );
  188. name->setSize( 100, 20 );
  189. name->setPosition( 0, 0 );
  190. name->setText( n );
  191. punkte = new TextFeld();
  192. punkte->setStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Center );
  193. if( s )
  194. punkte->setSchriftZ( s->getThis() );
  195. punkte->setSchriftFarbe( farbe );
  196. punkte->setSchriftSize( 12 );
  197. punkte->setSize( 100, 20 );
  198. punkte->setPosition( 100, 0 );
  199. punkte->setText( "" );
  200. neuPunkte = new TextFeld();
  201. neuPunkte->setStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Center );
  202. if( s )
  203. neuPunkte->setSchriftZ( s->getThis() );
  204. neuPunkte->setSchriftFarbe( farbe );
  205. neuPunkte->setSchriftSize( 12 );
  206. neuPunkte->setSize( 100, 20 );
  207. neuPunkte->setPosition( 200, 0 );
  208. neuPunkte->setText( "" );
  209. status = new TextFeld();
  210. status->setStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Center );
  211. if( s )
  212. status->setSchriftZ( s->getThis() );
  213. status->setSchriftFarbe( 0xFF00FF00 );
  214. status->setSchriftSize( 12 );
  215. status->setSize( 100, 20 );
  216. status->setPosition( 300, 0 );
  217. status->setText( "lebt" );
  218. rundenNP = new Array< int >();
  219. runde = 0;
  220. ref = 1;
  221. }
  222. // Destruktor
  223. VideoBLTeam::~VideoBLTeam()
  224. {
  225. if( schrift )
  226. schrift->release();
  227. rahmen->release();
  228. spieler->release();
  229. name->release();
  230. punkte->release();
  231. neuPunkte->release();
  232. status->release();
  233. rundenNP->release();
  234. }
  235. // nicht constant
  236. bool VideoBLTeam::addSpieler( VideoSpieler *zSpieler )
  237. {
  238. bool gefunden = 0;
  239. for( int i = 0; i < spielerAnzahl; i++ )
  240. {
  241. if( spieler->z( i )->getSpielerNummer() == zSpieler->getSpielerNummer() )
  242. {
  243. gefunden = 1;
  244. break;
  245. }
  246. }
  247. if( gefunden )
  248. return 0;
  249. VideoBLSpieler *tmp = new VideoBLSpieler( zSpieler->getSpielerNummer(), zSpieler->getFarbe(), schrift );
  250. spieler->set( tmp, spielerAnzahl );
  251. spielerAnzahl++;
  252. return 1;
  253. }
  254. bool VideoBLTeam::updateSpielerStatus( VideoSpieler *zSpieler )
  255. {
  256. for( int i = 0; i < spielerAnzahl; i++ )
  257. {
  258. if( spieler->z( i )->getSpielerNummer() == zSpieler->getSpielerNummer() )
  259. {
  260. spieler->z( i )->updateStatus( zSpieler );
  261. return 1;
  262. }
  263. }
  264. return 0;
  265. }
  266. void VideoBLTeam::setStatus( const char *txt, int f )
  267. {
  268. status->setText( txt );
  269. status->setSchriftFarbe( f );
  270. }
  271. void VideoBLTeam::setPunkte( int p )
  272. {
  273. this->p = p;
  274. }
  275. void VideoBLTeam::setMaxPunkte( int mP )
  276. {
  277. this->mP = mP;
  278. }
  279. bool VideoBLTeam::setSpielerPunkte( int sNum, int p )
  280. {
  281. for( int i = 0; i < spielerAnzahl; i++ )
  282. {
  283. if( spieler->z( i )->getSpielerNummer() == sNum )
  284. {
  285. spieler->z( i )->setPunkte( p );
  286. return 1;
  287. }
  288. }
  289. return 0;
  290. }
  291. void VideoBLTeam::addPunkt( bool plus )
  292. {
  293. if( plus )
  294. nP++;
  295. else
  296. nP--;
  297. }
  298. bool VideoBLTeam::addPunkt( int sNum, bool plus )
  299. {
  300. for( int i = 0; i < spielerAnzahl; i++ )
  301. {
  302. if( spieler->z( i )->getSpielerNummer() == sNum )
  303. {
  304. spieler->z( i )->addPunkt( plus );
  305. return 1;
  306. }
  307. }
  308. return 0;
  309. }
  310. void VideoBLTeam::updatePunkte( bool vorwärts )
  311. {
  312. if( vorwärts )
  313. {
  314. p += nP;
  315. rundenNP->set( nP, runde );
  316. nP = 0;
  317. runde++;
  318. }
  319. else
  320. {
  321. runde--;
  322. nP = rundenNP->get( runde );
  323. p -= nP;
  324. }
  325. for( int i = 0; i < spielerAnzahl; i++ )
  326. spieler->z( i )->updatePunkte( vorwärts );
  327. }
  328. void VideoBLTeam::render( int y, Bild &zRObj )
  329. {
  330. rahmen->setSize( 402, 21 + 20 * spielerAnzahl );
  331. if( !zRObj.setDrawOptions( 1, y, rahmen->getBreite(), rahmen->getHeight() ) )
  332. return;
  333. punkte->setText( "" );
  334. if( nP == 0 )
  335. {
  336. neuPunkte->setText( "" );
  337. neuPunkte->setSchriftFarbe( 0xFFFFFFFF );
  338. }
  339. else if( nP > 0 )
  340. {
  341. neuPunkte->setText( "+" );
  342. neuPunkte->setSchriftFarbe( 0xFF00FF00 );
  343. }
  344. else
  345. {
  346. neuPunkte->setText( "" );
  347. neuPunkte->setSchriftFarbe( 0xFFFF0000 );
  348. }
  349. punkte->zText()->append( p > 0 ? p : 0 );
  350. punkte->zText()->append( "/" );
  351. punkte->zText()->append( mP );
  352. neuPunkte->zText()->append( nP );
  353. rahmen->render( zRObj );
  354. name->render( zRObj );
  355. punkte->render( zRObj );
  356. neuPunkte->render( zRObj );
  357. status->render( zRObj );
  358. Array< bool > *gemahlt = new Array< bool >();
  359. for( int i = 0; i < spielerAnzahl; i++ )
  360. gemahlt->set( 0, i );
  361. int min = -1;
  362. int tmp = -1;
  363. for( int h = 0; h < spielerAnzahl; h++ )
  364. {
  365. min = -1;
  366. tmp = -1;
  367. for( int i = 0; i < spielerAnzahl; i++ )
  368. {
  369. if( !spieler->z( i ) )
  370. continue;
  371. if( gemahlt->hat( i ) && gemahlt->get( i ) )
  372. continue;
  373. int p = spieler->z( i )->getPunkte();
  374. if( p > min )
  375. {
  376. min = p;
  377. tmp = i;
  378. }
  379. }
  380. if( tmp >= 0 )
  381. {
  382. gemahlt->set( 1, tmp );
  383. spieler->z( tmp )->render( 20 + 20 * h, zRObj );
  384. }
  385. else
  386. break;
  387. }
  388. gemahlt->release();
  389. zRObj.releaseDrawOptions();
  390. }
  391. // constant
  392. int VideoBLTeam::getSpielerAnzahl() const
  393. {
  394. return spielerAnzahl;
  395. }
  396. int VideoBLTeam::getPunkte() const
  397. {
  398. return ( p + nP ) < 0 ? 0 : ( p + nP );
  399. }
  400. int VideoBLTeam::getHeight() const
  401. {
  402. return 21 + spielerAnzahl * 20;
  403. }
  404. bool VideoBLTeam::hatGewonnen() const
  405. {
  406. return p + nP >= mP;
  407. }
  408. int VideoBLTeam::getSpielerPunkte( int sNum ) const
  409. {
  410. for( int i = 0; i < spielerAnzahl; i++ )
  411. {
  412. if( spieler->z( i )->getSpielerNummer() == sNum )
  413. return spieler->z( i )->getPunkte();
  414. }
  415. return 0;
  416. }
  417. // Reference Counting
  418. VideoBLTeam *VideoBLTeam::getThis()
  419. {
  420. ref++;
  421. return this;
  422. }
  423. VideoBLTeam *VideoBLTeam::release()
  424. {
  425. ref--;
  426. if( !ref )
  427. delete this;
  428. return 0;
  429. }
  430. // Inhalt der VideoBestenliste Klasse aus VideoBestenliste.h
  431. // Konstruktor
  432. VideoBestenliste::VideoBestenliste( Schrift *s )
  433. {
  434. rahmen = new LRahmen();
  435. rahmen->setRamenBreite( 1 );
  436. rahmen->setFarbe( 0xFFFFFFFF );
  437. rahmen->setSize( 420, 200 );
  438. teams = new RCArray< VideoBLTeam >();
  439. name = new TextFeld();
  440. name->setStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Center );
  441. if( s )
  442. name->setSchriftZ( s->getThis() );
  443. name->setSchriftFarbe( 0xFFFFFFFF );
  444. name->setSchriftSize( 12 );
  445. name->setText( "Name" );
  446. name->setSize( 100, 20 );
  447. name->setPosition( 0, 0 );
  448. punkte = new TextFeld();
  449. punkte->setStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Center );
  450. if( s )
  451. punkte->setSchriftZ( s->getThis() );
  452. punkte->setSchriftFarbe( 0xFFFFFFFF );
  453. punkte->setSchriftSize( 12 );
  454. punkte->setText( "Punkte" );
  455. punkte->setSize( 100, 20 );
  456. punkte->setPosition( 100, 0 );
  457. neuPunkte = new TextFeld();
  458. neuPunkte->setStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Center );
  459. if( s )
  460. neuPunkte->setSchriftZ( s->getThis() );
  461. neuPunkte->setSchriftFarbe( 0xFFFFFFFF );
  462. neuPunkte->setSchriftSize( 12 );
  463. neuPunkte->setText( "+Punkte" );
  464. neuPunkte->setSize( 100, 20 );
  465. neuPunkte->setPosition( 200, 0 );
  466. status = new TextFeld();
  467. status->setStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Center );
  468. if( s )
  469. status->setSchriftZ( s->getThis() );
  470. status->setSchriftFarbe( 0xFFFFFFFF );
  471. status->setSchriftSize( 12 );
  472. status->setText( "Status" );
  473. status->setSize( 100, 20 );
  474. status->setPosition( 300, 0 );
  475. scroll = new VScrollBar();
  476. scroll->setKlickScroll( 7 );
  477. schrift = s;
  478. update = 0;
  479. teamAnzahl = 0;
  480. ref = 1;
  481. }
  482. // Destruktor
  483. VideoBestenliste::~VideoBestenliste()
  484. {
  485. rahmen->release();
  486. teams->release();
  487. name->release();
  488. punkte->release();
  489. neuPunkte->release();
  490. status->release();
  491. scroll->release();
  492. if( schrift )
  493. schrift->release();
  494. }
  495. // nicht constant
  496. void VideoBestenliste::setTeamAnzahl( int anz )
  497. {
  498. teamAnzahl = anz;
  499. }
  500. void VideoBestenliste::setTeamStatus( int team, const char *txt, int f )
  501. {
  502. if( teams->z( team ) )
  503. teams->z( team )->setStatus( txt, f );
  504. }
  505. void VideoBestenliste::addSpieler( VideoSpieler *zSpieler )
  506. {
  507. int team = zSpieler->getTeam();
  508. if( team < 0 )
  509. return;
  510. if( !teams->z( team ) )
  511. teams->set( new VideoBLTeam( team, zSpieler->getTeamFarbe(), schrift ? schrift->getThis() : 0, zSpieler->zTeamName()->getText() ), team );
  512. teams->z( team )->addSpieler( zSpieler );
  513. }
  514. void VideoBestenliste::updateSpielerStatus( VideoSpieler *zSpieler )
  515. {
  516. if( teams->z( zSpieler->getTeam() ) )
  517. teams->z( zSpieler->getTeam() )->updateSpielerStatus( zSpieler );
  518. }
  519. void VideoBestenliste::setTeamPunkte( int teamId, int punkte )
  520. {
  521. if( teams->z( teamId ) )
  522. teams->z( teamId )->setPunkte( punkte );
  523. }
  524. void VideoBestenliste::setTeamMaxPunkte( int teamId, int mPunkte )
  525. {
  526. if( teams->z( teamId ) )
  527. teams->z( teamId )->setMaxPunkte( mPunkte );
  528. }
  529. void VideoBestenliste::setSpielerPunkte( int teamNum, int sNum, int punkte )
  530. {
  531. if( teams->z( teamNum ) )
  532. teams->z( teamNum )->setSpielerPunkte( sNum, punkte );
  533. }
  534. void VideoBestenliste::addPunkt( int tNum, bool plus )
  535. {
  536. if( teams->z( tNum ) )
  537. teams->z( tNum )->addPunkt( plus );
  538. }
  539. void VideoBestenliste::addPunkt( int tNum, int sNum, bool plus )
  540. {
  541. if( teams->z( tNum ) )
  542. teams->z( tNum )->addPunkt( sNum, plus );
  543. }
  544. void VideoBestenliste::updatePunkte( bool vorwärts )
  545. {
  546. for( int i = 0; i < teamAnzahl; i++ )
  547. {
  548. if( teams->z( i ) )
  549. teams->z( i )->updatePunkte( vorwärts );
  550. }
  551. }
  552. void VideoBestenliste::doPublicMausEreignis( MausEreignis &me )
  553. {
  554. scroll->doMausMessage( rahmen->getBreite() - 15, 1, 15, rahmen->getHeight() - 2, me );
  555. }
  556. void VideoBestenliste::render( Bild &zRObj )
  557. {
  558. if( !zRObj.setDrawOptions( 0, 0, rahmen->getBreite(), rahmen->getHeight() ) )
  559. return;
  560. rahmen->render( zRObj );
  561. zRObj.addScrollOffset( 0, scroll->getScroll() );
  562. name->render( zRObj );
  563. punkte->render( zRObj );
  564. neuPunkte->render( zRObj );
  565. status->render( zRObj );
  566. int yOff = 20;
  567. Array< bool > *gemahlt = new Array< bool >();
  568. for( int i = 0; i < teamAnzahl; i++ )
  569. gemahlt->set( 0, i );
  570. int min = -1;
  571. int tmp = -1;
  572. for( int h = 0; h < teamAnzahl; h++ )
  573. {
  574. min = -1;
  575. tmp = -1;
  576. for( int i = 0; i < teamAnzahl; i++ )
  577. {
  578. if( !teams->z( i ) )
  579. continue;
  580. if( gemahlt->hat( i ) && gemahlt->get( i ) )
  581. continue;
  582. int p = teams->z( i )->getPunkte();
  583. if( p > min )
  584. {
  585. min = p;
  586. tmp = i;
  587. }
  588. }
  589. if( tmp >= 0 )
  590. {
  591. gemahlt->set( 1, tmp );
  592. teams->z( tmp )->render( yOff, zRObj );
  593. yOff += teams->z( tmp )->getHeight();
  594. }
  595. else
  596. break;
  597. }
  598. gemahlt->release();
  599. zRObj.addScrollOffset( 0, -scroll->getScroll() );
  600. scroll->update( yOff, rahmen->getHeight() - 2 );
  601. scroll->render( rahmen->getBreite() - 16, 1, 15, rahmen->getHeight() - 2, zRObj );
  602. zRObj.releaseDrawOptions();
  603. }
  604. // constant
  605. int VideoBestenliste::getTeamAnzahl() const
  606. {
  607. return teamAnzahl;
  608. }
  609. bool VideoBestenliste::teamExistiert( int team ) const
  610. {
  611. return teams->z( team ) != 0;
  612. }
  613. int VideoBestenliste::getTeamPunkte( int team ) const
  614. {
  615. return teams->z( team ) ? teams->z( team )->getPunkte() : 0;
  616. }
  617. bool VideoBestenliste::hatTeamGewonnen( int team ) const
  618. {
  619. if( !teams->z( team ) )
  620. return 0;
  621. return teams->z( team )->hatGewonnen();
  622. }
  623. int VideoBestenliste::getSpielerPunkte( int team, int sNum ) const
  624. {
  625. if( !teams->z( team ) )
  626. return 0;
  627. return teams->z( team )->getSpielerPunkte( sNum );
  628. }
  629. // Reference Counting
  630. VideoBestenliste *VideoBestenliste::getThis()
  631. {
  632. ref++;
  633. return this;
  634. }
  635. VideoBestenliste *VideoBestenliste::release()
  636. {
  637. ref--;
  638. if( !ref )
  639. delete this;
  640. return 0;
  641. }