#include "KartenLeser.h" #include "..\Global\Variablen.h" #include #include #include #include #include // Inhalt der KartenLeser Klasse aus KartenLeser.h // Konstruktor KartenLeser::KartenLeser() { letzterFehler = new Text( "" ); karteId = 0; ref = 1; } // Destruktor KartenLeser::~KartenLeser() { letzterFehler->release(); } // nicht constant void KartenLeser::setKarteId( int karteId ) { this->karteId = karteId; } // constant Bild *KartenLeser::getKartenTitelBild( Schrift *zSchrift ) const { bool ok = 1; int port = 0; Text ip; infoKlient->getKartenServer( karteId, &port, &ip ); if( !kartenKlient->verbinde( port, ip ) ) { letzterFehler->setText( kartenKlient->getLetzterFehler() ); ok = 0; } if( !kartenKlient->downloadKarteTitel( karteId ) ) { letzterFehler->setText( kartenKlient->getLetzterFehler() ); ok = 0; } Bild *ret = 0; if( ok ) { Text *pfad = getKartePfad(); pfad->append( "titel.ltdb" ); LTDBDatei *datei = new LTDBDatei(); datei->setDatei( pfad ); datei->leseDaten( 0 ); ret = datei->laden( 0, datei->zBildListe()->get( 0 ) ); datei->release(); } if( !ret ) { ret = new Bild(); ret->neuBild( 200, 100, 0xFF000000 ); zSchrift->lock(); zSchrift->setSchriftSize( 12 ); zSchrift->setDrawPosition( 10, 10 ); Text *kn = getKarteName(); zSchrift->renderText( kn, *ret, 0xFFFFFFFF ); kn->release(); zSchrift->unlock(); } return ret; } Bild *KartenLeser::getKartenVorschauBild() const { int port = 0; Text ip; infoKlient->getKartenServer( karteId, &port, &ip ); if( !kartenKlient->verbinde( port, ip ) ) { letzterFehler->setText( kartenKlient->getLetzterFehler() ); return 0; } if( !kartenKlient->downloadKarteMinimap( karteId ) ) { letzterFehler->setText( kartenKlient->getLetzterFehler() ); return 0; } Text *pfad = getKartePfad(); pfad->append( "minimap.ltdb" ); Bild *ret = 0; LTDBDatei *datei = new LTDBDatei(); datei->setDatei( pfad ); datei->leseDaten( 0 ); ret = datei->laden( 0, datei->zBildListe()->get( 0 ) ); datei->release(); if( !ret ) letzterFehler->append( "Bild nicht gefunden." ); return ret; } Bild *KartenLeser::getLadeBild() const { int port = 0; Text ip; infoKlient->getKartenServer( karteId, &port, &ip ); if( !kartenKlient->verbinde( port, ip ) ) { letzterFehler->setText( kartenKlient->getLetzterFehler() ); return 0; } if( !kartenKlient->downloadKarteLadebild( karteId ) ) { letzterFehler->setText( kartenKlient->getLetzterFehler() ); return 0; } Text *pfad = getKartePfad(); pfad->append( "ladebild.ltdb" ); Bild *ret = 0; LTDBDatei *datei = new LTDBDatei(); datei->setDatei( pfad ); datei->leseDaten( 0 ); ret = datei->laden( 0, datei->zBildListe()->get( 0 ) ); datei->release(); if( !ret ) letzterFehler->append( "Bild nicht gefunden." ); return ret; } bool KartenLeser::getKartenBeschreibung() const { int port = 0; Text ip; infoKlient->getKartenServer( karteId, &port, &ip ); if( !kartenKlient->verbinde( port, ip ) ) { letzterFehler->setText( kartenKlient->getLetzterFehler() ); return 0; } if( !kartenKlient->downloadKarteBeschreibung( karteId ) ) { letzterFehler->setText( kartenKlient->getLetzterFehler() ); return 0; } return 1; } int KartenLeser::getSpielId() const { if( !karteId ) { letzterFehler->setText( "Karte Id ist nicht gesetzt." ); return 0; } if( infoKlient ) { int id = infoKlient->getSpielId( karteId ); if( !id ) letzterFehler->setText( infoKlient->getLetzterFehler() ); return id; } else letzterFehler->setText( "Informations Klient ist nicht Initialisiert." ); return 0; } int KartenLeser::getKarteId() const { return karteId; } Text *KartenLeser::getSpielName() const { if( infoKlient ) { int id = getSpielId(); if( !id ) return 0; Text *name = infoKlient->getSpielName( id ); if( !name ) letzterFehler->setText( infoKlient->getLetzterFehler() ); return name; } else letzterFehler->setText( "Informations Klient ist nicht Initialisiert." ); return 0; } Text *KartenLeser::getSpielPfad() const { int sId = getSpielId(); int dg = infoKlient->getDateiGruppeIdVonSpiel( sId ); Text *pfad = infoKlient->getDateiGruppePfad( dg ); if( !pfad ) { letzterFehler->setText( "Der Pfad des Spieles konnte nicht ermittelt werden." ); return 0; } pfad->append( "/" ); return pfad; } Text *KartenLeser::getKarteName() const { if( !karteId ) { letzterFehler->setText( "Karte Id ist nicht gesetzt." ); return 0; } if( infoKlient ) { Text *name = infoKlient->getKarteName( karteId ); if( !name ) letzterFehler->setText( infoKlient->getLetzterFehler() ); return name; } else letzterFehler->setText( "Informations Klient ist nicht Initialisiert." ); return 0; } Text *KartenLeser::getKartePfad() const { Text *pf = new Text( "data/tmp/Karten/" ); pf->append( karteId ); pf->append( "/" ); return pf; } char *KartenLeser::getLetzterFehler() const { return letzterFehler->getText(); } // Reference Counting KartenLeser *KartenLeser::getThis() { ref++; return this; } KartenLeser *KartenLeser::release() { ref--; if( !ref ) delete this; return 0; }