123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- #include "Karte.h"
- // Inhalt der Karte Klasse aus Karte.h
- // Konstruktor
- Karte::Karte()
- : ReferenceCounter()
- {
- size = Vec2< int >( 0, 0 );
- ressources = new RCArray< RessourceStr >();
- objekte = new RCArray< ObjektStr >();
- spieler = new RCArray< SpielerStr >();
- teams = new RCArray< TeamStr >();
- sts = 0;
- }
- // Destruktor
- Karte::~Karte()
- {
- ressources->release();
- objekte->release();
- spieler->release();
- teams->release();
- if( sts )
- sts->release();
- }
- // nicht constant
- void Karte::ladeDaten( Datei* zDatei, SSDatenbankV* zDb, SpielerTeamStruktur* zSts, char* tmpPfad, int kId )
- {
- sts = zSts->getThis();
- int ressourceAnz = 0;
- zDatei->lese( (char*)&ressourceAnz, 4 );
- for( int i = 0; i < ressourceAnz; i++ )
- ressources->add( new RessourceStr( zDatei, zDb, tmpPfad, kId ) );
- zDatei->lese( (char*)&size.x, 4 );
- zDatei->lese( (char*)&size.y, 4 );
- int objektAnzahl = 0;
- zDatei->lese( (char*)&objektAnzahl, 4 );
- for( int i = 0; i < objektAnzahl; i++ )
- objekte->add( new ObjektStr( zDatei ) );
- for( int i = 0; i < zSts->spielerAnzahl; i++ )
- spieler->add( new SpielerStr( zDatei ) );
- for( int i = 0; i < zSts->teamAnzahl; i++ )
- teams->add( new TeamStr( zDatei ) );
- }
- // constant
- Vec2< int > Karte::getSize() const
- {
- return size;
- }
- Spieler* Karte::createSpieler( int sNum ) const
- {
- if( !sts || sNum < 0 || sNum >= sts->spielerAnzahl )
- return 0;
- for( auto s : *spieler )
- {
- if( s->id == sNum + 1 )
- {
- Spieler* ret = new Spieler( s );
- for( auto i : *ressources )
- {
- if( i->getId() == s->m2d )
- ret->setModelData( dynamic_cast<Model2DData*>(i->zReccourceM2()->getThis()) );
- }
- ret->setSpielerFarbe( sts->spielerFarbe->hat( sNum ) ? sts->spielerFarbe->get( sNum ) : 0 );
- return ret;
- }
- }
- return 0;
- }
- Team* Karte::createTeam( int tNum ) const
- {
- if( !sts || tNum < 0 || tNum >= sts->teamAnzahl )
- return 0;
- Team* ret = 0;
- for( auto t : *teams )
- if( t->id == tNum + 1 )
- ret = new Team( sts->teamFarbe->get( tNum ), sts->teamName->z( tNum )->getText(), t );
- return ret;
- }
- SpielObjekt* Karte::createObjekt( int oNum ) const
- {
- if( oNum <= 0 )
- return 0;
- for( auto o : *objekte )
- {
- if( o->id == oNum )
- {
- SpielObjekt* ret = new SpielObjekt( o );
- for( auto i : *ressources )
- {
- if( i->getId() == o->m2d )
- ret->setModel( dynamic_cast<Model2DData*>(i->zReccourceM2()->getThis()) );
- }
- return ret;
- }
- }
- return 0;
- }
- Iterator< ObjektStr* > Karte::getObjekte() const
- {
- return objekte->begin();
- }
- int Karte::getMaxTeamAnzahl() const
- {
- return sts ? sts->teamAnzahl : 0;
- }
- int Karte::getMaxSpielerAnzahl() const
- {
- return sts ? sts->spielerAnzahl : 0;
- }
- int Karte::getObjektAnzahl() const
- {
- return objekte->getEintragAnzahl();
- }
|