Răsfoiți Sursa

Fehler im Ressource Pfad Template "map:" behoben

Kolja Strohm 5 ani în urmă
părinte
comite
3fda046ecf
2 a modificat fișierele cu 153 adăugiri și 114 ștergeri
  1. 150 109
      Asteroids/Editor.cpp
  2. 3 5
      Asteroids/Strukturen.cpp

+ 150 - 109
Asteroids/Editor.cpp

@@ -69,7 +69,7 @@ bool Editor::nachricht( SKlient *k )
         {
             k->sendeEncrypted( "\1", 1 );
             int anz = files->getEintragAnzahl();
-            k->sendeEncrypted( (char*)&anz, 4 );
+            k->sendeEncrypted( (char *)& anz, 4 );
             for( int i = 0; i < anz; i++ )
             {
                 Text pf = tmpPf;
@@ -80,26 +80,26 @@ bool Editor::nachricht( SKlient *k )
                 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 );
+                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
@@ -121,7 +121,7 @@ bool Editor::nachricht( SKlient *k )
         {
             k->sendeEncrypted( "\1", 1 );
             int anz = files->getEintragAnzahl();
-            k->sendeEncrypted( (char*)&anz, 4 );
+            k->sendeEncrypted( (char *)& anz, 4 );
             for( int i = 0; i < anz; i++ )
             {
                 Text pf = tmpPf;
@@ -132,21 +132,21 @@ bool Editor::nachricht( SKlient *k )
                 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 );
+                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
@@ -168,7 +168,7 @@ bool Editor::nachricht( SKlient *k )
         {
             k->sendeEncrypted( "\1", 1 );
             int anz = files->getEintragAnzahl();
-            k->sendeEncrypted( (char*)&anz, 4 );
+            k->sendeEncrypted( (char *)& anz, 4 );
             for( int i = 0; i < anz; i++ )
             {
                 Text pf = tmpPf;
@@ -179,18 +179,18 @@ bool Editor::nachricht( SKlient *k )
                 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.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 );
+                k->sendeEncrypted( (char *)& o.pos.x, 4 );
+                k->sendeEncrypted( (char *)& o.pos.y, 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
@@ -205,26 +205,26 @@ bool Editor::nachricht( SKlient *k )
     {
         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 );
+        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;
@@ -246,21 +246,21 @@ bool Editor::nachricht( SKlient *k )
     {
         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 );
+        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;
@@ -282,18 +282,18 @@ bool Editor::nachricht( SKlient *k )
     {
         k->sendeEncrypted( "\1", 1 );
         ObjektStr o( 0 );
-        k->sendeEncrypted( (char*)&o.pos.x, 4 );
-        k->sendeEncrypted( (char*)&o.pos.y, 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 );
+        k->sendeEncrypted( (char *)& o.pos.x, 4 );
+        k->sendeEncrypted( (char *)& o.pos.y, 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 );
         Text pf = pfad.getText();
         pf += "/objekt/";
         pf += o.id;
@@ -315,7 +315,7 @@ bool Editor::nachricht( SKlient *k )
     {
         k->sendeEncrypted( "\1", 1 );
         int id;
-        k->sendeEncrypted( (char*)&id, 4 );
+        k->sendeEncrypted( (char *)& id, 4 );
         Text pf = pfad.getText();
         pf += "/objekt/";
         pf += id;
@@ -329,6 +329,47 @@ bool Editor::nachricht( SKlient *k )
         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;
+    }
     default:
         err = "Unbekannte Nachricht. Error Code: " __FILE__ ":";
         err += __LINE__;
@@ -372,11 +413,11 @@ bool Editor::createSitzung()
         pf = pfad.getText();
         pf += "/resource/";
         int rAnz = 0;
-        d.lese( (char*)&rAnz, 4 );
+        d.lese( (char *)& rAnz, 4 );
         for( int i = 0; i < rAnz; i++ )
         {
             int id = 0;
-            d.lese( (char*)&id, 4 );
+            d.lese( (char *)& id, 4 );
             Text tmpPf = pf.getText();
             tmpPf += id;
             tmpPf += ".r";
@@ -414,11 +455,11 @@ bool Editor::createSitzung()
             err += "\n";
         }
         __int64 size = 0;
-        d.lese( (char*)&size, 8 );
-        s.schreibe( (char*)&size, 8 );
+        d.lese( (char *)& size, 8 );
+        s.schreibe( (char *)& size, 8 );
         s.close();
         int objAnz = 0;
-        d.lese( (char*)&objAnz, 4 );
+        d.lese( (char *)& objAnz, 4 );
         for( int i = 0; i < objAnz; i++ )
         {
             ObjektStr objStr( &d );
@@ -530,7 +571,7 @@ bool Editor::saveSitzung()
         if( resList )
         {
             int anz = resList->getEintragAnzahl();
-            d.schreibe( (char*)&anz, 4 );
+            d.schreibe( (char *)& anz, 4 );
             for( auto resPf = resList->getIterator(); resPf && resPf._; resPf++ )
             {
                 Text tmp = pf.getText();
@@ -540,8 +581,8 @@ bool Editor::saveSitzung()
                 r.setDatei( tmp );
                 if( r.open( Datei::Style::lesen ) )
                 {
-                    int id = (int)*resPf;
-                    d.schreibe( (char*)&id, 4 );
+                    int id = (int)* resPf;
+                    d.schreibe( (char *)& id, 4 );
                     char b = 0;
                     r.lese( &b, 1 );
                     char *buffer = new char[ b + 1 ];
@@ -574,8 +615,8 @@ bool Editor::saveSitzung()
         if( s.open( Datei::Style::lesen ) )
         {
             __int64 size = 0;
-            s.lese( (char*)&size, 8 );
-            d.schreibe( (char*)&size, 8 );
+            s.lese( (char *)& size, 8 );
+            d.schreibe( (char *)& size, 8 );
             s.close();
         }
         else
@@ -596,7 +637,7 @@ bool Editor::saveSitzung()
         if( objList )
         {
             int anz = objList->getEintragAnzahl();
-            d.schreibe( (char*)&anz, 4 );
+            d.schreibe( (char *)& anz, 4 );
             for( auto objPf = objList->getIterator(); objPf && objPf._; objPf++ )
             {
                 Text tmp = pf.getText();

+ 3 - 5
Asteroids/Strukturen.cpp

@@ -18,16 +18,14 @@ RessourceStr::RessourceStr( Datei *zDatei, SSDatenbankV *zDb, char *tmpPfad, int
 	if( txt.positionVon( "spiel:" ) == 0 )
 	{
         pfad = zDb->getSpielPfad( kId );
-        if( pfad )
-            pfad->append( "/" );
 		if( pfad )
-			pfad->append( txt.getTeilText( 7 ) );
+			pfad->append( txt.getTeilText( 6 ) );
 	}
 	if( txt.positionVon( "map:" ) == 0 )
 	{
 		pfad = new Text( tmpPfad );
-		if( pfad )
-			pfad->append( txt.getTeilText( 5 ) );
+        pfad->append( "map/files" );
+	    pfad->append( txt.getTeilText( 4 ) );
 	}
 	m2d = 0;
 	bild = 0;