|
@@ -649,7 +649,7 @@ void MapReader::ladeKarte( Spiel *zSpiel )
|
|
|
mapFile.lese( (char *)& verschiebungWeite, 4 );
|
|
|
mapFile.lese( (char *)& autoSchaltungMaxTime, 4 );
|
|
|
mapFile.lese( (char *)& team, 4 );
|
|
|
- zSpiel->addBariere( new Bariere( x, y, breite, height, style, verschiebungWeite, autoSchaltungMaxTime, zSpiel->getTeam( team ) ) );
|
|
|
+ zSpiel->addBariere( new Bariere( zSpiel->getNextId(), x, y, breite, height, style, verschiebungWeite, autoSchaltungMaxTime, zSpiel->getTeam( team ) ) );
|
|
|
}
|
|
|
// Basen
|
|
|
mapFile.lese( (char *)& anz, 4 );
|
|
@@ -667,7 +667,7 @@ void MapReader::ladeKarte( Spiel *zSpiel )
|
|
|
mapFile.lese( (char *)& height, 4 );
|
|
|
mapFile.lese( (char *)& maxTime, 4 );
|
|
|
mapFile.lese( (char *)& team, 4 );
|
|
|
- zSpiel->addBase( new Base( x, y, breite, height, maxTime, zSpiel->getTeam( team ) ) );
|
|
|
+ zSpiel->addBase( new Base( zSpiel->getNextId(), x, y, breite, height, maxTime, zSpiel->getTeam( team ) ) );
|
|
|
}
|
|
|
// Drops
|
|
|
mapFile.lese( (char *)& anz, 4 );
|
|
@@ -710,7 +710,7 @@ void MapReader::ladeKarte( Spiel *zSpiel )
|
|
|
mapFile.lese( (char *)& breite, 4 );
|
|
|
mapFile.lese( (char *)& height, 4 );
|
|
|
mapFile.lese( (char *)& aktive, 1 );
|
|
|
- zSpiel->addSchalter( new Schalter( x, y, breite, height, aktive ) );
|
|
|
+ zSpiel->addSchalter( new Schalter( zSpiel->getNextId(), x, y, breite, height, aktive ) );
|
|
|
}
|
|
|
// Schiene
|
|
|
mapFile.lese( (char *)& anz, 4 );
|
|
@@ -724,7 +724,7 @@ void MapReader::ladeKarte( Spiel *zSpiel )
|
|
|
mapFile.lese( (char *)& y, 4 );
|
|
|
mapFile.lese( (char *)& breite, 4 );
|
|
|
mapFile.lese( (char *)& height, 4 );
|
|
|
- zSpiel->addSchiene( new Schiene( x, y, breite, height ) );
|
|
|
+ zSpiel->addSchiene( new Schiene( zSpiel->getNextId(), x, y, breite, height ) );
|
|
|
}
|
|
|
// Timer
|
|
|
mapFile.lese( (char *)& anz, 4 );
|
|
@@ -749,7 +749,7 @@ void MapReader::ladeKarte( Spiel *zSpiel )
|
|
|
char *name = new char[ (int)len + 1 ];
|
|
|
mapFile.lese( (char *)& name, len );
|
|
|
name[ (int)len ] = 0;
|
|
|
- zSpiel->addTimer( new Timer( name, maxZeit, x, y, sichtbar, autoWiederhohlung, runns, farbe ) );
|
|
|
+ zSpiel->addTimer( new Timer( zSpiel->getNextId(), name, maxZeit, x, y, sichtbar, autoWiederhohlung, runns, farbe ) );
|
|
|
delete[] name;
|
|
|
}
|
|
|
// Tunnel
|
|
@@ -770,7 +770,7 @@ void MapReader::ladeKarte( Spiel *zSpiel )
|
|
|
mapFile.lese( (char *)& zielX, 4 );
|
|
|
mapFile.lese( (char *)& zielY, 4 );
|
|
|
mapFile.lese( (char *)& aktiv, 1 );
|
|
|
- zSpiel->addTunnel( new Tunnel( x, y, breite, height, zielX, zielY, aktiv ) );
|
|
|
+ zSpiel->addTunnel( new Tunnel( zSpiel->getNextId(), x, y, breite, height, zielX, zielY, aktiv ) );
|
|
|
}
|
|
|
// Umlenkungen
|
|
|
mapFile.lese( (char *)& anz, 4 );
|
|
@@ -792,7 +792,7 @@ void MapReader::ladeKarte( Spiel *zSpiel )
|
|
|
mapFile.lese( (char *)& maxAbklingzeit, 4 );
|
|
|
mapFile.lese( (char *)& drehend, 1 );
|
|
|
mapFile.lese( (char *)& aktiv, 1 );
|
|
|
- zSpiel->addUmlenkung( new Umlenkung( x, y, breite, height, (Richtung)richtung, maxAbklingzeit, drehend, aktiv ) );
|
|
|
+ zSpiel->addUmlenkung( new Umlenkung( zSpiel->getNextId(), x, y, breite, height, (Richtung)richtung, maxAbklingzeit, drehend, aktiv ) );
|
|
|
}
|
|
|
// Trigger
|
|
|
mapFile.lese( (char *)& anz, 4 );
|
|
@@ -821,11 +821,159 @@ void MapReader::ladeKarte( Spiel *zSpiel )
|
|
|
zSpiel->addTrigger( new Trigger( name, ereignisAnzahl, ereignisse, bedingungen, aktionen ) );
|
|
|
delete[] name;
|
|
|
}
|
|
|
+ // Variablen
|
|
|
+ mapFile.lese( (char *)& anz, 4 );
|
|
|
+ for( int i = 0; i < anz; i++ )
|
|
|
+ {
|
|
|
+ char len;
|
|
|
+ mapFile.lese( (char *)& len, 1 );
|
|
|
+ char *name = new char[ (int)len + 1 ];
|
|
|
+ mapFile.lese( (char *)& name, len );
|
|
|
+ name[ (int)len ] = 0;
|
|
|
+ char typ;
|
|
|
+ mapFile.lese( &typ, 1 );
|
|
|
+ Variable *var;
|
|
|
+ switch( typ )
|
|
|
+ {
|
|
|
+ case NICHTS:
|
|
|
+ var = new Variable( NICHTS );
|
|
|
+ break;
|
|
|
+ case INTEGER:
|
|
|
+ {
|
|
|
+ int val;
|
|
|
+ mapFile.lese( (char *)& val, 4 );
|
|
|
+ var = new Integer( val );
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ case BOOLEAN:
|
|
|
+ {
|
|
|
+ bool val;
|
|
|
+ mapFile.lese( (char *)& val, 1 );
|
|
|
+ var = new Boolean( val );
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ case STRING:
|
|
|
+ {
|
|
|
+ char len;
|
|
|
+ mapFile.lese( (char *)& len, 1 );
|
|
|
+ char *value = new char[ (int)len + 1 ];
|
|
|
+ mapFile.lese( (char *)& value, len );
|
|
|
+ value[ (int)len ] = 0;
|
|
|
+ var = new String( value );
|
|
|
+ delete[] value;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ case RICHTUNG:
|
|
|
+ {
|
|
|
+ char len;
|
|
|
+ mapFile.lese( (char *)& len, 1 );
|
|
|
+ char *value = new char[ (int)len + 1 ];
|
|
|
+ mapFile.lese( (char *)& value, len );
|
|
|
+ value[ (int)len ] = 0;
|
|
|
+ var = new String( value, 1 );
|
|
|
+ delete[] value;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ case FLOAT:
|
|
|
+ {
|
|
|
+ float val;
|
|
|
+ mapFile.lese( (char *)& val, 4 );
|
|
|
+ var = new Float( val );
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ case TASTE:
|
|
|
+ {
|
|
|
+ char val;
|
|
|
+ mapFile.lese( &val, 1 );
|
|
|
+ var = new Integer( val, 1 );
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ case SPIELER:
|
|
|
+ {
|
|
|
+ int id;
|
|
|
+ mapFile.lese( (char *)& id, 4 );
|
|
|
+ var = zSpiel->getSpieler( id );
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ case TIMER:
|
|
|
+ {
|
|
|
+ int id;
|
|
|
+ mapFile.lese( (char *)& id, 4 );
|
|
|
+ var = zSpiel->getTimer( id );
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ case TEAM:
|
|
|
+ {
|
|
|
+ int id;
|
|
|
+ mapFile.lese( (char *)& id, 4 );
|
|
|
+ var = zSpiel->getTeam( id );
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ case BARIERE:
|
|
|
+ {
|
|
|
+ int id;
|
|
|
+ mapFile.lese( (char *)& id, 4 );
|
|
|
+ var = zSpiel->getBariere( id );
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ case SCHALTER:
|
|
|
+ {
|
|
|
+ int id;
|
|
|
+ mapFile.lese( (char *)& id, 4 );
|
|
|
+ var = zSpiel->getSchalter( id );
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ case BASE:
|
|
|
+ {
|
|
|
+ int id;
|
|
|
+ mapFile.lese( (char *)& id, 4 );
|
|
|
+ var = zSpiel->getBase( id );
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ case GEGENSTAND:
|
|
|
+ {
|
|
|
+ int id;
|
|
|
+ mapFile.lese( (char *)& id, 4 );
|
|
|
+ var = new GegenstandTypVar( (GegenstandTyp)id );
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ case SCHIENE:
|
|
|
+ {
|
|
|
+ int id;
|
|
|
+ mapFile.lese( (char *)& id, 4 );
|
|
|
+ var = zSpiel->getSchiene( id );
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ case TUNNEL:
|
|
|
+ {
|
|
|
+ int id;
|
|
|
+ mapFile.lese( (char *)& id, 4 );
|
|
|
+ var = zSpiel->getTunnel( id );
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ case UMLENKUNG:
|
|
|
+ {
|
|
|
+ int id;
|
|
|
+ mapFile.lese( (char *)& id, 4 );
|
|
|
+ var = zSpiel->getUmlenkung( id );
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ case TRIGGER:
|
|
|
+ {
|
|
|
+ int id;
|
|
|
+ mapFile.lese( (char *)& id, 4 );
|
|
|
+ var = zSpiel->getTrigger( id );
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ zSpiel->addVariable( name, var );
|
|
|
+ delete[] name;
|
|
|
+ }
|
|
|
mapFile.close();
|
|
|
}
|
|
|
|
|
|
// Reference Counting
|
|
|
-MapReader * MapReader::getThis()
|
|
|
+MapReader *MapReader::getThis()
|
|
|
{
|
|
|
ref++;
|
|
|
return this;
|