#include "Editor.h" #include #include "Reader.h" // Inhalt der Editor Klasse aus Editor.h // Konstruktor Editor::Editor() { ref = 1; } // Destruktor Editor::~Editor() {} // nicht constant void Editor::setPfad( char *pfad ) { this->pfad = pfad; this->pfad += "/editor"; } void Editor::open() { } bool Editor::nachricht( SKlient *k ) { /* err = ""; char n = 0; k->getNachrichtEncrypted( &n, 1 ); switch( n ) { case 0: // Initialisierung k->sendeEncrypted( "\1", 1 ); if( DateiExistiert( pfad ) ) k->sendeEncrypted( "\2", 1 ); else { if( createSitzung() ) k->sendeEncrypted( "\1", 1 ); else return 0; } return 1; case 1: // Sitzung verwerfen if( createSitzung() ) k->sendeEncrypted( "\1", 1 ); else return 0; return 1; case 2: // Sitzung speichern unt beenden if( saveSitzung() ) k->sendeEncrypted( "\1", 1 ); else return 0; return 1; case 3: // Lade Spieler Daten { Text tmpPf = pfad.getText(); tmpPf += "/player"; Datei d; d.setDatei( tmpPf ); RCArray< Text > *files = d.getDateiListe(); if( files ) { k->sendeEncrypted( "\1", 1 ); int anz = files->getEintragAnzahl(); k->sendeEncrypted( (char *)& anz, 4 ); for( int i = 0; i < anz; i++ ) { Text pf = tmpPf; pf += "/"; pf += files->z( i )->getText(); Datei player; player.setDatei( pf ); player.open( Datei::Style::lesen ); SpielerStr p( player.getThis() ); player.close(); k->sendeEncrypted( (char *)& p.id, 4 ); k->sendeEncrypted( (char *)& p.pos.x, 4 ); k->sendeEncrypted( (char *)& p.pos.y, 4 ); k->sendeEncrypted( (char *)& p.rot, 8 ); k->sendeEncrypted( (char *)& p.beschleunigung, 8 ); k->sendeEncrypted( (char *)& p.maxStability, 4 ); k->sendeEncrypted( (char *)& p.maxEnergie, 4 ); k->sendeEncrypted( (char *)& p.reparatur, 8 ); k->sendeEncrypted( (char *)& p.akkuLeistung, 8 ); k->sendeEncrypted( (char *)& p.laserIntensity, 4 ); k->sendeEncrypted( (char *)& p.laserEffizienz, 4 ); k->sendeEncrypted( (char *)& p.laserTempo, 4 ); k->sendeEncrypted( (char *)& p.wendigkeit, 8 ); k->sendeEncrypted( (char *)& p.antriebEffizienz, 8 ); k->sendeEncrypted( (char *)& p.energieSchild, 8 ); k->sendeEncrypted( (char *)& p.energieSchildEffizienz, 8 ); k->sendeEncrypted( (char *)& p.netzwerk, 4 ); k->sendeEncrypted( (char *)& p.skillPunkte, 4 ); k->sendeEncrypted( (char *)& p.m2d, 4 ); k->sendeEncrypted( (char *)& p.bild, 4 ); } } else { err = "Fehler beim laden von "; err += tmpPf.getText(); return 0; } return 1; } case 4: // Lade Team Daten { Text tmpPf = pfad.getText(); tmpPf += "/team"; Datei d; d.setDatei( tmpPf ); RCArray< Text > *files = d.getDateiListe(); if( files ) { k->sendeEncrypted( "\1", 1 ); int anz = files->getEintragAnzahl(); k->sendeEncrypted( (char *)& anz, 4 ); for( int i = 0; i < anz; i++ ) { Text pf = tmpPf; pf += "/"; pf += files->z( i )->getText(); Datei team; team.setDatei( pf ); team.open( Datei::Style::lesen ); TeamStr t( team.getThis() ); team.close(); k->sendeEncrypted( (char *)& t.id, 4 ); k->sendeEncrypted( (char *)& t.maxPunkte, 4 ); k->sendeEncrypted( (char *)& t.beschleunigung, 8 ); k->sendeEncrypted( (char *)& t.maxStability, 4 ); k->sendeEncrypted( (char *)& t.maxEnergie, 4 ); k->sendeEncrypted( (char *)& t.reparatur, 8 ); k->sendeEncrypted( (char *)& t.akkuLeistung, 8 ); k->sendeEncrypted( (char *)& t.laserIntensity, 4 ); k->sendeEncrypted( (char *)& t.laserEffizienz, 4 ); k->sendeEncrypted( (char *)& t.laserTempo, 4 ); k->sendeEncrypted( (char *)& t.wendigkeit, 8 ); k->sendeEncrypted( (char *)& t.antriebEffizienz, 8 ); k->sendeEncrypted( (char *)& t.energieSchild, 8 ); k->sendeEncrypted( (char *)& t.energieSchildEffizienz, 8 ); k->sendeEncrypted( (char *)& t.punkte, 4 ); } } else { err = "Fehler beim laden von "; err += tmpPf.getText(); return 0; } return 1; } case 5: // Lade Objekt Daten { Text tmpPf = pfad.getText(); tmpPf += "/objekt"; Datei d; d.setDatei( tmpPf ); RCArray< Text > *files = d.getDateiListe(); if( files ) { k->sendeEncrypted( "\1", 1 ); int anz = files->getEintragAnzahl(); k->sendeEncrypted( (char *)& anz, 4 ); for( int i = 0; i < anz; i++ ) { Text pf = tmpPf; pf += "/"; pf += files->z( i )->getText(); Datei object; object.setDatei( pf ); object.open( Datei::Style::lesen ); ObjektStr o( object.getThis() ); object.close(); k->sendeEncrypted( (char *)& o.pos.x, 4 ); k->sendeEncrypted( (char *)& o.pos.y, 4 ); k->sendeEncrypted( (char *)& o.rot, 4 ); k->sendeEncrypted( (char *)& o.scale, 4 ); k->sendeEncrypted( (char *)& o.id, 4 ); k->sendeEncrypted( (char *)& o.m2d, 4 ); k->sendeEncrypted( (char *)& o.bild, 4 ); k->sendeEncrypted( (char *)& o.style, 4 ); k->sendeEncrypted( (char *)& o.maxStability, 4 ); k->sendeEncrypted( (char *)& o.maxEnergie, 4 ); k->sendeEncrypted( (char *)& o.energieRadius, 4 ); k->sendeEncrypted( (char *)& o.reparatur, 8 ); k->sendeEncrypted( (char *)& o.akkuLeistung, 8 ); k->sendeEncrypted( (char *)& o.team, 1 ); } } else { err = "Fehler beim laden von "; err += tmpPf.getText(); return 0; } return 1; } case 6: // Save Player { k->sendeEncrypted( "\1", 1 ); SpielerStr p( 0 ); k->getNachrichtEncrypted( (char *)& p.id, 4 ); k->getNachrichtEncrypted( (char *)& p.pos.x, 4 ); k->getNachrichtEncrypted( (char *)& p.pos.y, 4 ); k->getNachrichtEncrypted( (char *)& p.rot, 8 ); k->getNachrichtEncrypted( (char *)& p.beschleunigung, 8 ); k->getNachrichtEncrypted( (char *)& p.maxStability, 4 ); k->getNachrichtEncrypted( (char *)& p.maxEnergie, 4 ); k->getNachrichtEncrypted( (char *)& p.reparatur, 8 ); k->getNachrichtEncrypted( (char *)& p.akkuLeistung, 8 ); k->getNachrichtEncrypted( (char *)& p.laserIntensity, 4 ); k->getNachrichtEncrypted( (char *)& p.laserEffizienz, 4 ); k->getNachrichtEncrypted( (char *)& p.laserTempo, 4 ); k->getNachrichtEncrypted( (char *)& p.wendigkeit, 8 ); k->getNachrichtEncrypted( (char *)& p.antriebEffizienz, 8 ); k->getNachrichtEncrypted( (char *)& p.energieSchild, 8 ); k->getNachrichtEncrypted( (char *)& p.energieSchildEffizienz, 8 ); k->getNachrichtEncrypted( (char *)& p.netzwerk, 4 ); k->getNachrichtEncrypted( (char *)& p.skillPunkte, 4 ); k->getNachrichtEncrypted( (char *)& p.m2d, 4 ); k->getNachrichtEncrypted( (char *)& p.bild, 4 ); Text pf = pfad.getText(); pf += "/player/"; pf += p.id; pf += ".p"; Datei player; player.setDatei( pf ); if( player.open( Datei::Style::schreiben ) ) { p.save( player.getThis() ); player.close(); k->sendeEncrypted( "\1", 1 ); return 1; } err = "Fehler beim Schreiben von "; err += pf.getText(); return 0; } case 7: // Save Team { k->sendeEncrypted( "\1", 1 ); TeamStr t( 0 ); k->getNachrichtEncrypted( (char *)& t.id, 4 ); k->getNachrichtEncrypted( (char *)& t.maxPunkte, 4 ); k->getNachrichtEncrypted( (char *)& t.beschleunigung, 8 ); k->getNachrichtEncrypted( (char *)& t.maxStability, 4 ); k->getNachrichtEncrypted( (char *)& t.maxEnergie, 4 ); k->getNachrichtEncrypted( (char *)& t.reparatur, 8 ); k->getNachrichtEncrypted( (char *)& t.akkuLeistung, 8 ); k->getNachrichtEncrypted( (char *)& t.laserIntensity, 4 ); k->getNachrichtEncrypted( (char *)& t.laserEffizienz, 4 ); k->getNachrichtEncrypted( (char *)& t.laserTempo, 4 ); k->getNachrichtEncrypted( (char *)& t.wendigkeit, 8 ); k->getNachrichtEncrypted( (char *)& t.antriebEffizienz, 8 ); k->getNachrichtEncrypted( (char *)& t.energieSchild, 8 ); k->getNachrichtEncrypted( (char *)& t.energieSchildEffizienz, 8 ); k->getNachrichtEncrypted( (char *)& t.punkte, 4 ); Text pf = pfad.getText(); pf += "/player/"; pf += t.id; pf += ".t"; Datei team; team.setDatei( pf ); if( team.open( Datei::Style::schreiben ) ) { t.save( team.getThis() ); team.close(); k->sendeEncrypted( "\1", 1 ); return 1; } err = "Fehler beim Schreiben von "; err += pf.getText(); return 0; } case 8: // Save Objekt { k->sendeEncrypted( "\1", 1 ); ObjektStr o( 0 ); k->getNachrichtEncrypted( (char *)& o.pos.x, 4 ); k->getNachrichtEncrypted( (char *)& o.pos.y, 4 ); k->getNachrichtEncrypted( (char *)& o.rot, 4 ); k->getNachrichtEncrypted( (char *)& o.scale, 4 ); k->getNachrichtEncrypted( (char *)& o.id, 4 ); k->getNachrichtEncrypted( (char *)& o.m2d, 4 ); k->getNachrichtEncrypted( (char *)& o.bild, 4 ); k->getNachrichtEncrypted( (char *)& o.style, 4 ); k->getNachrichtEncrypted( (char *)& o.maxStability, 4 ); k->getNachrichtEncrypted( (char *)& o.maxEnergie, 4 ); k->getNachrichtEncrypted( (char *)& o.energieRadius, 4 ); k->getNachrichtEncrypted( (char *)& o.reparatur, 8 ); k->getNachrichtEncrypted( (char *)& o.akkuLeistung, 8 ); k->getNachrichtEncrypted( (char *)& o.team, 1 ); Text pf = pfad.getText(); pf += "/objekt/"; pf += o.id; pf += ".o"; Datei objekt; objekt.setDatei( pf ); if( objekt.erstellen() && objekt.open( Datei::Style::schreiben ) ) { o.save( objekt.getThis() ); objekt.close(); k->sendeEncrypted( "\1", 1 ); return 1; } err = "Fehler beim Schreiben von "; err += pf.getText(); return 0; } case 9: // Delete Objekt { k->sendeEncrypted( "\1", 1 ); int id; k->getNachrichtEncrypted( (char *)& id, 4 ); Text pf = pfad.getText(); pf += "/objekt/"; pf += id; pf += ".o"; if( DateiRemove( pf ) ) { k->sendeEncrypted( "\1", 1 ); return 1; } err = "Fehler beim löschen der Datei "; err += pf; return 0; } case 0xA: // Lade Resourcen { Text tmpPf = pfad.getText(); tmpPf += "/resource"; Datei d; d.setDatei( tmpPf ); RCArray< Text > *files = d.getDateiListe(); if( files ) { k->sendeEncrypted( "\1", 1 ); int anz = files->getEintragAnzahl(); k->sendeEncrypted( (char *)& anz, 4 ); for( int i = 0; i < anz; i++ ) { Text pf = tmpPf; pf += "/"; pf += files->z( i )->getText(); Datei resource; resource.setDatei( pf ); resource.open( Datei::Style::lesen ); int id = *files->z( i ); k->sendeEncrypted( (char *)& id, 4 ); char len = 0; resource.lese( &len, 1 ); char *path = new char[ len + 1 ]; path[ (int)len ] = 0; resource.lese( path, len ); k->sendeEncrypted( &len, 1 ); k->sendeEncrypted( path, len ); delete[] path; resource.close(); } } else { err = "Fehler beim laden von "; err += tmpPf.getText(); return 0; } return 1; } case 0xB: // Map Size { Text tmpPf = pfad.getText(); tmpPf += "/size"; Datei d; d.setDatei( tmpPf ); if( d.open( Datei::Style::lesen ) ) { k->sendeEncrypted( "\1", 1 ); int size = 0; d.lese( (char *)& size, 4 ); k->sendeEncrypted( (char *)& size, 4 ); d.lese( (char *)& size, 4 ); k->sendeEncrypted( (char *)& size, 4 ); d.close(); } else { err = "Fehler beim laden von "; err += tmpPf.getText(); return 0; } return 1; } case 0xC: // Add Resource { k->sendeEncrypted( "\1", 1 ); Datei d; d.setDatei( Text( pfad.getText() ) + "/resource" ); RCArray *list = d.getDateiListe(); int nId = 0; bool found = 0; do { nId++; found = 0; for( auto t = list->getIterator(); t; t++ ) { if( t->istGleich( Text( nId ) + ".r" ) ) { found = 1; break; } } } while( found ); list->release(); unsigned char len = 0; k->getNachrichtEncrypted( (char *)& len, 1 ); char *path = new char[ len + 1 ]; path[ len ] = 0; k->getNachrichtEncrypted( path, len ); d.setDatei( Text( pfad.getText() ) + "/resource/" + nId + ".r" ); if( d.open( Datei::Style::schreiben ) ) { d.schreibe( (char *)& len, 1 ); d.schreibe( path, len ); d.close(); k->sendeEncrypted( "\1", 1 ); k->sendeEncrypted( (char *)& nId, 4 ); return 1; } err = "Fehler beim schreiben der Datei."; return 0; } default: err = "Unbekannte Nachricht. Error Code: " __FILE__ ":"; err += __LINE__; return 0; }*/ return 0; } // constant char *Editor::getLetzterFehler() const { return err; } // Reference Counting ESEditorV *Editor::getThis() { ref++; return this; } ESEditorV *Editor::release() { ref--; if( !ref ) delete this; return 0; } // privat bool Editor::createSitzung() { /*DateiRemove( pfad ); Text pf = pfad.getText(); pf.remove( pf.getLength() - 6, pf.getLength() ); pf += "map/server/sts.ltgd"; int spielerAnzahl; int teamAnzahl; Datei d; d.setDatei( pf ); if( !d.existiert() || d.istOrdner() ) { err += "Sitzung konnte nicht korrekt erstellt werden. Fehler beim lesen von "; err += pf; err += ". Fehler Code: " __FILE__ ":"; err += __LINE__; err += "\n"; return 0; } d.open( Datei::Style::lesen ); d.lese( (char *)& spielerAnzahl, 4 ); d.lese( (char *)& teamAnzahl, 4 ); d.close(); pf = pfad.getText(); pf.remove( pf.getLength() - 6, pf.getLength() ); pf += "map/server/data.map"; d.setDatei( pf.getText() ); if( d.open( Datei::Style::lesen ) ) { // map size pf = pfad.getText(); pf += "/size"; Datei s; s.setDatei( pf.getText() ); if( !s.open( Datei::Style::schreiben ) ) { err += "Sitzung konnte nicht korrekt erstellt werden. Fehler beim lesen von "; err += pf; err += ". Fehler Code: " __FILE__ ":"; err += __LINE__; err += "\n"; } __int64 size = 0; d.lese( (char *)& size, 8 ); s.schreibe( (char *)& size, 8 ); s.close(); // teams pf = pfad.getText(); pf += "/team/"; for( int i = 0; i < teamAnzahl; i++ ) { Text tmpPf = pf.getText(); tmpPf += i; tmpPf += ".t"; int maxWbZeit; int punkte; d.lese( (char *)& maxWbZeit, 4 ); d.lese( (char *)& punkte, 4 ); Datei t; t.setDatei( tmpPf ); t.erstellen(); if( !t.open( Datei::Style::schreiben ) ) { err += "Sitzung konnte nicht korrekt erstellt werden. Fehler beim schreiben von "; err += tmpPf; err += ". Fehler Code: " __FILE__ ":"; err += __LINE__; err += "\n"; } t.schreibe( (char *)& maxWbZeit, 4 ); t.schreibe( (char *)& punkte, 4 ); t.close(); } // spieler pf = pfad.getText(); pf += "/player/"; for( int i = 0; i < spielerAnzahl; i++ ) { Text tmpPf = pf.getText(); tmpPf += i; tmpPf += ".t"; int spawnX; int spawnY; d.lese( (char *)& spawnX, 4 ); d.lese( (char *)& spawnY, 4 ); Datei s; s.setDatei( tmpPf ); s.erstellen(); if( !s.open( Datei::Style::schreiben ) ) { err += "Sitzung konnte nicht korrekt erstellt werden. Fehler beim schreiben von "; err += tmpPf; err += ". Fehler Code: " __FILE__ ":"; err += __LINE__; err += "\n"; } s.schreibe( (char *)& spawnX, 4 ); s.schreibe( (char *)& spawnY, 4 ); s.close(); } // barieren pf = pfad.getText(); pf += "/bariere/"; int anz; d.lese( (char *)&anz, 4 ); for( int i = 0; i < anz; i++ ) { int id; d.lese( (char *)& id, 4 ); Text tmpPf = pf.getText(); tmpPf += id; tmpPf += ".t"; char buffer[ 32 ]; d.lese( buffer, 32 ); Datei s; s.setDatei( tmpPf ); s.erstellen(); if( !s.open( Datei::Style::schreiben ) ) { err += "Sitzung konnte nicht korrekt erstellt werden. Fehler beim schreiben von "; err += tmpPf; err += ". Fehler Code: " __FILE__ ":"; err += __LINE__; err += "\n"; } s.schreibe( buffer, 32 ); s.close(); } // basen pf = pfad.getText(); pf += "/base/"; d.lese( (char *)&anz, 4 ); for( int i = 0; i < anz; i++ ) { int id; d.lese( (char *)& id, 4 ); Text tmpPf = pf.getText(); tmpPf += id; tmpPf += ".t"; char buffer[ 24 ]; d.lese( buffer, 24 ); Datei s; s.setDatei( tmpPf ); s.erstellen(); if( !s.open( Datei::Style::schreiben ) ) { err += "Sitzung konnte nicht korrekt erstellt werden. Fehler beim schreiben von "; err += tmpPf; err += ". Fehler Code: " __FILE__ ":"; err += __LINE__; err += "\n"; } s.schreibe( buffer, 24 ); s.close(); } // drops pf = pfad.getText(); pf += "/drop/"; d.lese( (char *)&anz, 4 ); for( int i = 0; i < anz; i++ ) { int id; d.lese( (char *)& id, 4 ); Text tmpPf = pf.getText(); tmpPf += id; tmpPf += ".t"; char buffer[ 96 ]; d.lese( buffer, 96 ); Datei s; s.setDatei( tmpPf ); s.erstellen(); if( !s.open( Datei::Style::schreiben ) ) { err += "Sitzung konnte nicht korrekt erstellt werden. Fehler beim schreiben von "; err += tmpPf; err += ". Fehler Code: " __FILE__ ":"; err += __LINE__; err += "\n"; } s.schreibe( buffer, 96 ); unsigned char len; d.lese( (char *)&len, 1 ); char *name = new char[ (int)len + 1 ]; d.lese( name, len ); name[ (int)len ] = 0; s.schreibe( (char *)&len, 1 ); s.schreibe( (char *)&name, len ); delete[] name; s.close(); } // schalter pf = pfad.getText(); pf += "/schalter/"; d.lese( (char *)&anz, 4 ); for( int i = 0; i < anz; i++ ) { int id; d.lese( (char *)& id, 4 ); Text tmpPf = pf.getText(); tmpPf += id; tmpPf += ".t"; char buffer[ 17 ]; d.lese( buffer, 17 ); Datei s; s.setDatei( tmpPf ); s.erstellen(); if( !s.open( Datei::Style::schreiben ) ) { err += "Sitzung konnte nicht korrekt erstellt werden. Fehler beim schreiben von "; err += tmpPf; err += ". Fehler Code: " __FILE__ ":"; err += __LINE__; err += "\n"; } s.schreibe( buffer, 17 ); s.close(); } // schiene pf = pfad.getText(); pf += "/schiene/"; d.lese( (char *)&anz, 4 ); for( int i = 0; i < anz; i++ ) { int id; d.lese( (char *)& id, 4 ); Text tmpPf = pf.getText(); tmpPf += id; tmpPf += ".t"; char buffer[ 16 ]; d.lese( buffer, 16 ); Datei s; s.setDatei( tmpPf ); s.erstellen(); if( !s.open( Datei::Style::schreiben ) ) { err += "Sitzung konnte nicht korrekt erstellt werden. Fehler beim schreiben von "; err += tmpPf; err += ". Fehler Code: " __FILE__ ":"; err += __LINE__; err += "\n"; } s.schreibe( buffer, 16 ); s.close(); } // timer pf = pfad.getText(); pf += "/timer/"; d.lese( (char *)&anz, 4 ); for( int i = 0; i < anz; i++ ) { int id; d.lese( (char *)& id, 4 ); Text tmpPf = pf.getText(); tmpPf += id; tmpPf += ".t"; char buffer[ 19 ]; d.lese( buffer, 19 ); Datei s; s.setDatei( tmpPf ); s.erstellen(); if( !s.open( Datei::Style::schreiben ) ) { err += "Sitzung konnte nicht korrekt erstellt werden. Fehler beim schreiben von "; err += tmpPf; err += ". Fehler Code: " __FILE__ ":"; err += __LINE__; err += "\n"; } s.schreibe( buffer, 19 ); unsigned char len; d.lese( (char *)& len, 1 ); char *name = new char[ (int)len + 1 ]; d.lese( name, len ); name[ (int)len ] = 0; s.schreibe( (char *)& len, 1 ); s.schreibe( (char *)& name, len ); delete[] name; s.close(); } // tunnel pf = pfad.getText(); pf += "/tunnel/"; d.lese( (char *)&anz, 4 ); for( int i = 0; i < anz; i++ ) { int id; d.lese( (char *)& id, 4 ); Text tmpPf = pf.getText(); tmpPf += id; tmpPf += ".t"; char buffer[ 25 ]; d.lese( buffer, 25 ); Datei s; s.setDatei( tmpPf ); s.erstellen(); if( !s.open( Datei::Style::schreiben ) ) { err += "Sitzung konnte nicht korrekt erstellt werden. Fehler beim schreiben von "; err += tmpPf; err += ". Fehler Code: " __FILE__ ":"; err += __LINE__; err += "\n"; } s.schreibe( buffer, 25 ); s.close(); } // umlenkung pf = pfad.getText(); pf += "/umlenkung/"; d.lese( (char *)&anz, 4 ); for( int i = 0; i < anz; i++ ) { int id; d.lese( (char *)& id, 4 ); Text tmpPf = pf.getText(); tmpPf += id; tmpPf += ".t"; char buffer[ 23 ]; d.lese( buffer, 23 ); Datei s; s.setDatei( tmpPf ); s.erstellen(); if( !s.open( Datei::Style::schreiben ) ) { err += "Sitzung konnte nicht korrekt erstellt werden. Fehler beim schreiben von "; err += tmpPf; err += ". Fehler Code: " __FILE__ ":"; err += __LINE__; err += "\n"; } s.schreibe( buffer, 23 ); s.close(); } // trigger MapReader mr; pf = pfad.getText(); pf += "/trigger/"; d.lese( (char *)&anz, 4 ); for( int i = 0; i < anz; i++ ) { int id; d.lese( (char *)& id, 4 ); Text tmpPf = pf.getText(); tmpPf += id; tmpPf += ".t"; Datei s; s.setDatei( tmpPf ); s.erstellen(); if( !s.open( Datei::Style::schreiben ) ) { err += "Sitzung konnte nicht korrekt erstellt werden. Fehler beim schreiben von "; err += tmpPf; err += ". Fehler Code: " __FILE__ ":"; err += __LINE__; err += "\n"; } unsigned char len; d.lese( (char *)&len, 1 ); char *name = new char[ (int)len + 1 ]; d.lese( name, len ); name[ (int)len ] = 0; s.schreibe( (char *)&len, 1 ); s.schreibe( (char *)&name, len ); delete[] name; int ereignisAnzahl; int bedingungAnzahl; int aktionAnzahl; d.lese( (char *)&ereignisAnzahl, 4 ); d.lese( (char *)&bedingungAnzahl, 4 ); d.lese( (char *)&aktionAnzahl, 4 ); s.schreibe( (char *)&ereignisAnzahl, 4 ); s.schreibe( (char *)&bedingungAnzahl, 4 ); s.schreibe( (char *)&aktionAnzahl, 4 ); for( int j = 0; j < ereignisAnzahl; j++ ) { int typ; d.lese( (char *)& typ, 4 ); s.schreibe( (char *)& typ, 4 ); } for( int j = 0; j < bedingungAnzahl; j++ ) mr.writeAktion( mr.readAktion( d ), s ); for( int j = 0; j < aktionAnzahl; j++ ) mr.writeAktion( mr.readAktion( d ), s ); s.close(); } // variable pf = pfad.getText(); pf += "/variable/"; d.lese( (char *)&anz, 4 ); for( int i = 0; i < anz; i++ ) { char len; d.lese( (char *)& len, 1 ); char *name = new char[ (int)len + 1 ]; d.lese( name, len ); name[ (int)len ] = 0; Text tmpPf = pf.getText(); tmpPf += name; tmpPf += ".v"; delete[] name; Datei s; s.setDatei( tmpPf ); s.erstellen(); if( !s.open( Datei::Style::schreiben ) ) { err += "Sitzung konnte nicht korrekt erstellt werden. Fehler beim schreiben von "; err += tmpPf; err += ". Fehler Code: " __FILE__ ":"; err += __LINE__; err += "\n"; } char typ; d.lese( &typ, 1 ); char def; d.lese( &def, 1 ); s.schreibe( &typ, 1 ); s.schreibe( &def, 1 ); if( def ) { if( typ == BOOLEAN || typ == TASTE ) { char v; d.lese( &v, 1 ); s.schreibe( &v, 1 ); } else if( typ == STRING || typ == RICHTUNG ) { char len; d.lese( (char *)& len, 1 ); char *str = new char[ (int)len + 1 ]; d.lese( str, len ); s.schreibe( &len, 1 ); s.schreibe( str, len ); delete[] str; } else if( typ != NICHTS ) { int v; d.lese( (char *)&v, 4 ); s.schreibe( (char *)&v, 4 ); } } s.close(); } d.close(); } else { err = "Sitzung konnte nicht korrekt erstellt werden. Fehler beim lesen von "; err += pf; err += ". Fehler Code: " __FILE__ ":"; err += __LINE__; pf = pfad.getText(); pf += "/empty.file"; DateiPfadErstellen( pf ); DateiRemove( pf ); } if( !err.getLength() ) return 1; else return 0;*/ return 0; } bool Editor::saveSitzung() {/* Text pf = pfad.getText(); pf.remove( pf.getLength() - 6, pf.getLength() ); pf += "map/server/data_tmp.map"; Datei d; d.setDatei( pf.getText() ); if( d.open( Datei::Style::schreiben ) ) { pf = pfad.getText(); pf += "/resource"; Datei res; res.setDatei( pf ); RCArray *resList = res.getDateiListe(); if( resList ) { int anz = resList->getEintragAnzahl(); d.schreibe( (char *)& anz, 4 ); for( auto resPf = resList->getIterator(); resPf && resPf._; resPf++ ) { Text tmp = pf.getText(); tmp += "/"; tmp += resPf->getText(); Datei r; r.setDatei( tmp ); if( r.open( Datei::Style::lesen ) ) { int id = (int)* resPf; d.schreibe( (char *)& id, 4 ); char b = 0; r.lese( &b, 1 ); char *buffer = new char[ b + 1 ]; buffer[ (int)b ] = 0; r.lese( buffer, b ); d.schreibe( &b, 1 ); d.schreibe( buffer, b ); r.close(); } else { err = "Fehler beim Lesen von "; err += tmp.getText(); err += ". Fehler Code: " __FILE__ ":"; err += __LINE__; d.close(); d.remove(); resList->release(); return 0; } } resList->release(); } else d.schreibe( "\0\0\0\0", 4 ); pf = pfad.getText(); pf += "/size"; Datei s; s.setDatei( pf.getText() ); if( s.open( Datei::Style::lesen ) ) { __int64 size = 0; s.lese( (char *)& size, 8 ); d.schreibe( (char *)& size, 8 ); s.close(); } else { err = "Fehler beim Lesen von "; err += pf.getText(); err = ". Fehler Code: " __FILE__ ":"; err += __LINE__; d.close(); d.remove(); return 0; } pf = pfad.getText(); pf += "/objekt"; Datei obj; obj.setDatei( pf ); RCArray *objList = obj.getDateiListe(); if( objList ) { int anz = objList->getEintragAnzahl(); d.schreibe( (char *)& anz, 4 ); for( auto objPf = objList->getIterator(); objPf && objPf._; objPf++ ) { Text tmp = pf.getText(); tmp += "/"; tmp += objPf->getText(); Datei r; r.setDatei( tmp ); if( r.open( Datei::Style::lesen ) ) { ObjektStr objStr( &r ); objStr.save( &d ); r.close(); } else { err = "Fehler beim Lesen von "; err += tmp.getText(); err = ". Fehler Code: " __FILE__ ":"; err += __LINE__; d.close(); d.remove(); objList->release(); return 0; } } objList->release(); } else d.schreibe( "\0\0\0\0", 4 ); pf = pfad.getText(); pf += "/player"; Datei pl; pl.setDatei( pf ); RCArray *plList = pl.getDateiListe(); if( !plList ) { err = "Fehler beim Lesen von "; err += pf.getText(); err = ". Fehler Code: " __FILE__ ":"; err += __LINE__; d.close(); d.remove(); return 0; } for( auto plPf = plList->getIterator(); plPf && plPf._; plPf++ ) { Text tmp = pf.getText(); tmp += "/"; tmp += plPf->getText(); Datei r; r.setDatei( tmp ); if( r.open( Datei::Style::lesen ) ) { SpielerStr spStr( &r ); spStr.save( &d ); r.close(); } else { err = "Fehler beim Lesen von "; err += tmp.getText(); err = ". Fehler Code: " __FILE__ ":"; err += __LINE__; d.close(); d.remove(); plList->release(); return 0; } } plList->release(); pf = pfad.getText(); pf += "/team"; Datei tm; tm.setDatei( pf ); RCArray *tmList = tm.getDateiListe(); if( !tmList ) { err = "Fehler beim Lesen von "; err += pf.getText(); err = ". Fehler Code: " __FILE__ ":"; err += __LINE__; d.close(); d.remove(); return 0; } for( auto tmPf = tmList->getIterator(); tmPf && tmPf._; tmPf++ ) { Text tmp = pf.getText(); tmp += "/"; tmp += tmPf->getText(); Datei r; r.setDatei( tmp ); if( r.open( Datei::Style::lesen ) ) { TeamStr tStr( &r ); tStr.save( &d ); r.close(); } else { err = "Fehler beim Lesen von "; err += tmp.getText(); err = ". Fehler Code: " __FILE__ ":"; err += __LINE__; d.close(); d.remove(); tmList->release(); return 0; } } tmList->release(); pf = pfad.getText(); pf.remove( pf.getLength() - 6, pf.getLength() ); pf += "map/server/data.map"; d.close(); if( !DateiRemove( pf ) || !d.umbenennen( pf ) ) { err = "Fehler beim Übernehmen der Änderungen. Fehler Code: " __FILE__ ":"; err += __LINE__; return 0; } } else { err = "Fehler beim Speichern der Änderungen (Server). Fehler Code: " __FILE__ ":"; err += __LINE__; return 0; } pf = pfad.getText(); pf.remove( pf.getLength() - 6, pf.getLength() ); pf += "map/client/map/data/data.map"; Datei d2; d2.setDatei( pf.getText() ); if( d2.open( Datei::Style::schreiben ) && d.open( Datei::Style::lesen ) ) { __int64 size = d.getSize(); char *buffer = new char[ 2048 ]; while( size > 0 ) { int len = (int)( size > 2048 ? 2048 : size ); d.lese( buffer, len ); d2.schreibe( buffer, len ); size -= len; } delete[] buffer; d.close(); d2.close(); } else { err = "Fehler beim Speichern der Änderungen (Client). Fehler Code: " __FILE__ ":"; err += __LINE__; return 0; } DateiRemove( pfad.getText() ); */ return 1; }