123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156 |
- #include "Bestenliste.h"
- // Inhalt der Bestenliste Klasse aus Bestenliste.h
- // Konstruktor
- Bestenliste::Bestenliste()
- : ReferenceCounter()
- {
- spielerPunkte = new Array< int >();
- spielerNummern = new Array< int >();
- teamPunkte = new Array< int >();
- teamMaxPunkte = new Array< int >();
- teamNummern = new Array< int >();
- spielerAnzahl = 0;
- teamAnzahl = 0;
- }
- // Destruktor
- Bestenliste::~Bestenliste()
- {
- spielerPunkte->release();
- spielerNummern->release();
- teamPunkte->release();
- teamMaxPunkte->release();
- teamNummern->release();
- }
- // nicht constant
- void Bestenliste::setTeamMaxPunkte( int team, int mP )
- {
- int i = -1;
- for( int j = 0; j < teamAnzahl; j++ )
- {
- if( teamNummern->hat( j ) && teamNummern->get( j ) == team )
- {
- i = j;
- break;
- }
- }
- if( i < 0 )
- {
- i = teamAnzahl;
- teamNummern->add( team, teamAnzahl );
- teamPunkte->add( 0, teamAnzahl );
- teamMaxPunkte->add( 0, teamAnzahl );
- teamAnzahl++;
- }
- teamMaxPunkte->set( mP, i );
- }
- void Bestenliste::setTeamPunkte( int team, int p )
- {
- for( int i = 0; i < teamAnzahl; i++ )
- {
- if( teamNummern->hat( i ) && teamNummern->get( i ) == team )
- {
- teamPunkte->set( p, i );
- return;
- }
- }
- }
- void Bestenliste::setSpielerPunkte( int spieler, int p )
- {
- int i = -1;
- for( int j = 0; j < spielerAnzahl; j++ )
- {
- if( spielerNummern->hat( j ) && spielerNummern->get( j ) == spieler )
- {
- i = j;
- break;
- }
- }
- if( i < 0 )
- {
- i = spielerAnzahl;
- spielerNummern->add( spieler, spielerAnzahl );
- spielerPunkte->add( 0, spielerAnzahl );
- spielerAnzahl++;
- }
- spielerPunkte->set( p, i );
- }
- void Bestenliste::addTeamPunkt( int team, bool plus )
- {
- for( int i = 0; i < teamAnzahl; i++ )
- {
- if( teamNummern->hat( i ) && teamNummern->get( i ) == team )
- {
- int jetzt = teamPunkte->hat( i ) ? teamPunkte->get( i ) : 0;
- if( plus )
- jetzt++;
- else
- jetzt--;
- if( jetzt < 0 )
- jetzt = 0;
- teamPunkte->set( jetzt, i );
- return;
- }
- }
- }
- void Bestenliste::addSpielerPunkt( int spieler, bool plus )
- {
- for( int i = 0; i < spielerAnzahl; i++ )
- {
- if( spielerNummern->hat( i ) && spielerNummern->get( i ) == spieler )
- {
- if( plus )
- spielerPunkte->set( ( spielerPunkte->hat( i ) ? spielerPunkte->get( i ) : 0 ) + 1, i );
- else
- spielerPunkte->set( ( spielerPunkte->hat( i ) ? spielerPunkte->get( i ) : 0 ) - 1, i );
- return;
- }
- }
- }
- // constant
- bool Bestenliste::istTeamAmLeben( int team ) const
- {
- for( int i = 0; i < teamAnzahl; i++ )
- {
- if( teamNummern->hat( i ) && teamNummern->get( i ) == team )
- return teamPunkte->hat( i ) && teamPunkte->get( i ) != 0;
- }
- return 0;
- }
- bool Bestenliste::hatTeamGewonnen( int team ) const
- {
- for( int i = 0; i < teamAnzahl; i++ )
- {
- if( teamNummern->hat( i ) && teamNummern->get( i ) == team )
- return ( ( teamPunkte->hat( i ) && teamMaxPunkte->hat( i ) ) ? ( teamPunkte->get( i ) >= teamMaxPunkte->get( i ) ) : 0 );
- }
- return 0;
- }
- int Bestenliste::getTeamPunkte( int team ) const
- {
- for( int i = 0; i < teamAnzahl; i++ )
- {
- if( teamNummern->hat( i ) && teamNummern->get( i ) == team )
- return teamPunkte->hat( i ) ? teamPunkte->get( i ) : 0;
- }
- return 0;
- }
- int Bestenliste::getTeamMaxPunkte( int team ) const
- {
- for( int i = 0; i < teamAnzahl; i++ )
- {
- if( teamNummern->hat( i ) && teamNummern->get( i ) == team )
- return teamMaxPunkte->hat( i ) ? teamMaxPunkte->get( i ) : 0;
- }
- return 0;
- }
|