#include "Strukturen.h" #include #include #include // Inhalt der RessourceStr Klasse aus Strukturen.h // Konstruktor RessourceStr::RessourceStr( Datei *zDatei, SSDatenbankV *zDb, char *tmpPfad, int kId ) { zDatei->lese( (char *)& id, 4 ); char len = 0; zDatei->lese( &len, 1 ); Text txt; txt.fillText( '0', len + 1 ); zDatei->lese( txt, len ); txt.getText()[ (int)len ] = 0; pfad = 0; if( txt.positionVon( "spiel:" ) == 0 ) { pfad = zDb->getSpielPfad( kId ); if( pfad ) pfad->append( txt.getTeilText( 6 ) ); } if( txt.positionVon( "map:" ) == 0 ) { pfad = new Text( tmpPfad ); pfad->append( "map/files" ); pfad->append( txt.getTeilText( 4 ) ); } m2d = 0; bild = 0; if( pfad && pfad->hat( ".m2/" ) ) { int pos = pfad->positionVon( ".m2/", pfad->anzahlVon( ".m2/" ) - 1 ); M2Datei * datei = new M2Datei( pfad->getTeilText( 0, pos + 3 ) ); datei->leseDaten(); m2d = datei->ladeModel( pfad->getTeilText( pos + 4 ) ); datei->release(); } ref = 1; } // Destruktor RessourceStr::~RessourceStr() { if( pfad ) pfad->release(); if( m2d ) m2d->release(); if( bild ) bild->release(); } // constant int RessourceStr::getId() const { return id; } Model2DData *RessourceStr::zReccourceM2() const { return m2d; } Bild *RessourceStr::zReccourceTxt() const { return bild; } // Reference Counting RessourceStr *RessourceStr::getThis() { ref++; return this; } RessourceStr *RessourceStr::release() { ref--; if( !ref ) delete this; return 0; } // Inhalt der ObjektStr Klasse aus Strukturen.h // Konstruktor ObjektStr::ObjektStr( Datei * zDatei ) { if( zDatei ) { zDatei->lese( (char *)& pos.x, 4 ); zDatei->lese( (char *)& pos.y, 4 ); zDatei->lese( (char *)& rot, 4 ); zDatei->lese( (char *)& scale, 4 ); zDatei->lese( (char *)& id, 4 ); zDatei->lese( (char *)& m2d, 4 ); zDatei->lese( (char *)& bild, 4 ); zDatei->lese( (char *)& style, 4 ); zDatei->lese( (char *)& maxStability, 4 ); zDatei->lese( (char *)& maxEnergie, 4 ); zDatei->lese( (char *)& energieRadius, 4 ); zDatei->lese( (char *)& reparatur, 8 ); zDatei->lese( (char *)& akkuLeistung, 8 ); zDatei->lese( &team, 1 ); } ref = 1; } void ObjektStr::save( Datei * zDatei ) const { zDatei->schreibe( (char *)& pos.x, 4 ); zDatei->schreibe( (char *)& pos.y, 4 ); zDatei->schreibe( (char *)& rot, 4 ); zDatei->schreibe( (char *)& scale, 4 ); zDatei->schreibe( (char *)& id, 4 ); zDatei->schreibe( (char *)& m2d, 4 ); zDatei->schreibe( (char *)& bild, 4 ); zDatei->schreibe( (char *)& style, 4 ); zDatei->schreibe( (char *)& maxStability, 4 ); zDatei->schreibe( (char *)& maxEnergie, 4 ); zDatei->schreibe( (char *)& energieRadius, 4 ); zDatei->schreibe( (char *)& reparatur, 8 ); zDatei->schreibe( (char *)& akkuLeistung, 8 ); zDatei->schreibe( (char *)& team, 1 ); } // Reference Counting ObjektStr *ObjektStr::getThis() { ref++; return this; } ObjektStr *ObjektStr::release() { ref--; if( !ref ) delete this; return 0; } // Inhalt der SpielerStr Klasse aus Strukturen.h // Konstruktor SpielerStr::SpielerStr( Datei * zDatei ) { if( zDatei ) { zDatei->lese( (char *)& id, 4 ); zDatei->lese( (char *)& pos.x, 4 ); zDatei->lese( (char *)& pos.y, 4 ); zDatei->lese( (char *)& rot, 8 ); zDatei->lese( (char *)& beschleunigung, 8 ); zDatei->lese( (char *)& maxStability, 4 ); zDatei->lese( (char *)& maxEnergie, 4 ); zDatei->lese( (char *)& reparatur, 8 ); zDatei->lese( (char *)& akkuLeistung, 8 ); zDatei->lese( (char *)& laserIntensity, 4 ); zDatei->lese( (char *)& laserEffizienz, 4 ); zDatei->lese( (char *)& laserTempo, 4 ); zDatei->lese( (char *)& wendigkeit, 8 ); zDatei->lese( (char *)& antriebEffizienz, 8 ); zDatei->lese( (char *)& energieSchild, 8 ); zDatei->lese( (char *)& energieSchildEffizienz, 8 ); zDatei->lese( (char *)& netzwerk, 4 ); zDatei->lese( (char *)& skillPunkte, 4 ); zDatei->lese( (char *)& m2d, 4 ); zDatei->lese( (char *)& bild, 4 ); } ref = 1; } void SpielerStr::save( Datei * zDatei ) const { zDatei->schreibe( (char *)& id, 4 ); zDatei->schreibe( (char *)& pos.x, 4 ); zDatei->schreibe( (char *)& pos.y, 4 ); zDatei->schreibe( (char *)& rot, 8 ); zDatei->schreibe( (char *)& beschleunigung, 8 ); zDatei->schreibe( (char *)& maxStability, 4 ); zDatei->schreibe( (char *)& maxEnergie, 4 ); zDatei->schreibe( (char *)& reparatur, 8 ); zDatei->schreibe( (char *)& akkuLeistung, 8 ); zDatei->schreibe( (char *)& laserIntensity, 4 ); zDatei->schreibe( (char *)& laserEffizienz, 4 ); zDatei->schreibe( (char *)& laserTempo, 4 ); zDatei->schreibe( (char *)& wendigkeit, 8 ); zDatei->schreibe( (char *)& antriebEffizienz, 8 ); zDatei->schreibe( (char *)& energieSchild, 8 ); zDatei->schreibe( (char *)& energieSchildEffizienz, 8 ); zDatei->schreibe( (char *)& netzwerk, 4 ); zDatei->schreibe( (char *)& skillPunkte, 4 ); zDatei->schreibe( (char *)& m2d, 4 ); zDatei->schreibe( (char *)& bild, 4 ); } // Reference Counting SpielerStr *SpielerStr::getThis() { ref++; return this; } SpielerStr *SpielerStr::release() { ref--; if( !ref ) delete this; return 0; } // Inhalt der TeamStr Klasse aus Strukturen.h // Konstruktor TeamStr::TeamStr( Datei * zDatei ) { if( zDatei ) { zDatei->lese( (char *)& id, 4 ); zDatei->lese( (char *)& maxPunkte, 4 ); zDatei->lese( (char *)& beschleunigung, 8 ); zDatei->lese( (char *)& maxStability, 4 ); zDatei->lese( (char *)& maxEnergie, 4 ); zDatei->lese( (char *)& reparatur, 8 ); zDatei->lese( (char *)& akkuLeistung, 8 ); zDatei->lese( (char *)& laserIntensity, 4 ); zDatei->lese( (char *)& laserEffizienz, 4 ); zDatei->lese( (char *)& laserTempo, 4 ); zDatei->lese( (char *)& wendigkeit, 8 ); zDatei->lese( (char *)& antriebEffizienz, 8 ); zDatei->lese( (char *)& energieSchild, 8 ); zDatei->lese( (char *)& energieSchildEffizienz, 8 ); zDatei->lese( (char *)& punkte, 4 ); } ref = 1; } void TeamStr::save( Datei * zDatei ) const { zDatei->schreibe( (char *)& id, 4 ); zDatei->schreibe( (char *)& maxPunkte, 4 ); zDatei->schreibe( (char *)& beschleunigung, 8 ); zDatei->schreibe( (char *)& maxStability, 4 ); zDatei->schreibe( (char *)& maxEnergie, 4 ); zDatei->schreibe( (char *)& reparatur, 8 ); zDatei->schreibe( (char *)& akkuLeistung, 8 ); zDatei->schreibe( (char *)& laserIntensity, 4 ); zDatei->schreibe( (char *)& laserEffizienz, 4 ); zDatei->schreibe( (char *)& laserTempo, 4 ); zDatei->schreibe( (char *)& wendigkeit, 8 ); zDatei->schreibe( (char *)& antriebEffizienz, 8 ); zDatei->schreibe( (char *)& energieSchild, 8 ); zDatei->schreibe( (char *)& energieSchildEffizienz, 8 ); zDatei->schreibe( (char *)& punkte, 4 ); } // Reference Counting TeamStr *TeamStr::getThis() { ref++; return this; } TeamStr *TeamStr::release() { ref--; if( !ref ) delete this; return 0; }