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, const 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();
- }
|