|
@@ -717,6 +717,8 @@ void MapReader::ladeKarte( Spiel *zSpiel )
|
|
|
int verschiebungWeite;
|
|
|
int autoSchaltungMaxTime;
|
|
|
int team;
|
|
|
+ int id;
|
|
|
+ mapFile.lese( (char *)& id, 4 );
|
|
|
mapFile.lese( (char *)& x, 4 );
|
|
|
mapFile.lese( (char *)& y, 4 );
|
|
|
mapFile.lese( (char *)& breite, 4 );
|
|
@@ -725,7 +727,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( zSpiel->zResources(), zSpiel->getNextId(), x, y, breite, height, style, verschiebungWeite, autoSchaltungMaxTime, zSpiel->getTeam( team ) ) );
|
|
|
+ zSpiel->addBariere( new Bariere( zSpiel->zResources(), id, x, y, breite, height, style, verschiebungWeite, autoSchaltungMaxTime, zSpiel->getTeam( team ) ) );
|
|
|
}
|
|
|
// Basen
|
|
|
mapFile.lese( (char *)& anz, 4 );
|
|
@@ -737,13 +739,15 @@ void MapReader::ladeKarte( Spiel *zSpiel )
|
|
|
int height;
|
|
|
int maxTime;
|
|
|
int team;
|
|
|
+ int id;
|
|
|
+ mapFile.lese( (char *)& id, 4 );
|
|
|
mapFile.lese( (char *)& x, 4 );
|
|
|
mapFile.lese( (char *)& y, 4 );
|
|
|
mapFile.lese( (char *)& breite, 4 );
|
|
|
mapFile.lese( (char *)& height, 4 );
|
|
|
mapFile.lese( (char *)& maxTime, 4 );
|
|
|
mapFile.lese( (char *)& team, 4 );
|
|
|
- zSpiel->addBase( new Base( zSpiel->zResources(), zSpiel->getNextId(), x, y, breite, height, maxTime, zSpiel->getTeam( team ) ) );
|
|
|
+ zSpiel->addBase( new Base( zSpiel->zResources(), id, x, y, breite, height, maxTime, zSpiel->getTeam( team ) ) );
|
|
|
}
|
|
|
// Drops
|
|
|
mapFile.lese( (char *)& anz, 4 );
|
|
@@ -756,6 +760,8 @@ void MapReader::ladeKarte( Spiel *zSpiel )
|
|
|
int maxTime;
|
|
|
int numDrops;
|
|
|
float wahrscheinlichkeit[ ITEMANZAHL ];
|
|
|
+ int id;
|
|
|
+ mapFile.lese( (char *)& id, 4 );
|
|
|
mapFile.lese( (char *)& minX, 4 );
|
|
|
mapFile.lese( (char *)& minY, 4 );
|
|
|
mapFile.lese( (char *)& maxX, 4 );
|
|
@@ -769,7 +775,7 @@ void MapReader::ladeKarte( Spiel *zSpiel )
|
|
|
char *name = new char[ (int)len + 1 ];
|
|
|
mapFile.lese( name, len );
|
|
|
name[ (int)len ] = 0;
|
|
|
- zSpiel->addDrop( new Drop( zSpiel->getNextId(), minX, maxX, minY, maxY, maxTime, numDrops, name, wahrscheinlichkeit ) );
|
|
|
+ zSpiel->addDrop( new Drop( id, minX, maxX, minY, maxY, maxTime, numDrops, name, wahrscheinlichkeit ) );
|
|
|
delete[] name;
|
|
|
}
|
|
|
// Schalter
|
|
@@ -781,12 +787,14 @@ void MapReader::ladeKarte( Spiel *zSpiel )
|
|
|
int breite;
|
|
|
int height;
|
|
|
bool aktive;
|
|
|
+ int id;
|
|
|
+ mapFile.lese( (char *)& id, 4 );
|
|
|
mapFile.lese( (char *)& x, 4 );
|
|
|
mapFile.lese( (char *)& y, 4 );
|
|
|
mapFile.lese( (char *)& breite, 4 );
|
|
|
mapFile.lese( (char *)& height, 4 );
|
|
|
mapFile.lese( (char *)& aktive, 1 );
|
|
|
- zSpiel->addSchalter( new Schalter( zSpiel->zResources(), zSpiel->getNextId(), x, y, breite, height, aktive ) );
|
|
|
+ zSpiel->addSchalter( new Schalter( zSpiel->zResources(), id, x, y, breite, height, aktive ) );
|
|
|
}
|
|
|
// Schiene
|
|
|
mapFile.lese( (char *)& anz, 4 );
|
|
@@ -796,11 +804,13 @@ void MapReader::ladeKarte( Spiel *zSpiel )
|
|
|
int y;
|
|
|
int breite;
|
|
|
int height;
|
|
|
+ int id;
|
|
|
+ mapFile.lese( (char *)& id, 4 );
|
|
|
mapFile.lese( (char *)& x, 4 );
|
|
|
mapFile.lese( (char *)& y, 4 );
|
|
|
mapFile.lese( (char *)& breite, 4 );
|
|
|
mapFile.lese( (char *)& height, 4 );
|
|
|
- zSpiel->addSchiene( new Schiene( zSpiel->zResources(), zSpiel->getNextId(), x, y, breite, height ) );
|
|
|
+ zSpiel->addSchiene( new Schiene( zSpiel->zResources(), id, x, y, breite, height ) );
|
|
|
}
|
|
|
// Timer
|
|
|
mapFile.lese( (char *)& anz, 4 );
|
|
@@ -813,6 +823,8 @@ void MapReader::ladeKarte( Spiel *zSpiel )
|
|
|
bool autoWiederhohlung;
|
|
|
bool runns;
|
|
|
int farbe;
|
|
|
+ int id;
|
|
|
+ mapFile.lese( (char *)& id, 4 );
|
|
|
mapFile.lese( (char *)& x, 4 );
|
|
|
mapFile.lese( (char *)& y, 4 );
|
|
|
mapFile.lese( (char *)& maxZeit, 4 );
|
|
@@ -825,7 +837,7 @@ void MapReader::ladeKarte( Spiel *zSpiel )
|
|
|
char *name = new char[ (int)len + 1 ];
|
|
|
mapFile.lese( name, len );
|
|
|
name[ (int)len ] = 0;
|
|
|
- zSpiel->addTimer( new Timer( zSpiel->zResources()->zSchrift(), zSpiel->getNextId(), name, maxZeit, x, y, sichtbar, autoWiederhohlung, runns, farbe ) );
|
|
|
+ zSpiel->addTimer( new Timer( zSpiel->zResources()->zSchrift(), id, name, maxZeit, x, y, sichtbar, autoWiederhohlung, runns, farbe ) );
|
|
|
delete[] name;
|
|
|
}
|
|
|
// Tunnel
|
|
@@ -839,6 +851,8 @@ void MapReader::ladeKarte( Spiel *zSpiel )
|
|
|
int zielX;
|
|
|
int zielY;
|
|
|
bool aktiv;
|
|
|
+ int id;
|
|
|
+ mapFile.lese( (char *)& id, 4 );
|
|
|
mapFile.lese( (char *)& x, 4 );
|
|
|
mapFile.lese( (char *)& y, 4 );
|
|
|
mapFile.lese( (char *)& breite, 4 );
|
|
@@ -846,7 +860,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( zSpiel->zResources(), zSpiel->getNextId(), x, y, breite, height, zielX, zielY, aktiv ) );
|
|
|
+ zSpiel->addTunnel( new Tunnel( zSpiel->zResources(), id, x, y, breite, height, zielX, zielY, aktiv ) );
|
|
|
}
|
|
|
// Umlenkungen
|
|
|
mapFile.lese( (char *)& anz, 4 );
|
|
@@ -860,6 +874,8 @@ void MapReader::ladeKarte( Spiel *zSpiel )
|
|
|
int maxAbklingzeit;
|
|
|
bool drehend;
|
|
|
bool aktiv;
|
|
|
+ int id;
|
|
|
+ mapFile.lese( (char *)& id, 4 );
|
|
|
mapFile.lese( (char *)& x, 4 );
|
|
|
mapFile.lese( (char *)& y, 4 );
|
|
|
mapFile.lese( (char *)& breite, 4 );
|
|
@@ -868,12 +884,14 @@ void MapReader::ladeKarte( Spiel *zSpiel )
|
|
|
mapFile.lese( (char *)& maxAbklingzeit, 4 );
|
|
|
mapFile.lese( (char *)& drehend, 1 );
|
|
|
mapFile.lese( (char *)& aktiv, 1 );
|
|
|
- zSpiel->addUmlenkung( new Umlenkung( zSpiel->zResources(), zSpiel->getNextId(), x, y, breite, height, (Richtung)richtung, maxAbklingzeit, drehend, aktiv ) );
|
|
|
+ zSpiel->addUmlenkung( new Umlenkung( zSpiel->zResources(), id, x, y, breite, height, (Richtung)richtung, maxAbklingzeit, drehend, aktiv ) );
|
|
|
}
|
|
|
// Trigger
|
|
|
mapFile.lese( (char *)& anz, 4 );
|
|
|
for( int i = 0; i < anz; i++ )
|
|
|
{
|
|
|
+ int id;
|
|
|
+ mapFile.lese( (char *)& id, 4 );
|
|
|
char len;
|
|
|
mapFile.lese( (char *)& len, 1 );
|
|
|
char *name = new char[ (int)len + 1 ];
|
|
@@ -894,7 +912,7 @@ void MapReader::ladeKarte( Spiel *zSpiel )
|
|
|
RCArray< Aktion > *aktionen = new RCArray< Aktion >();
|
|
|
for( int j = 0; j < aktionAnzahl; j++ )
|
|
|
aktionen->add( readAktion( mapFile ) );
|
|
|
- zSpiel->addTrigger( new Trigger( zSpiel->getNextId(), name, ereignisAnzahl, ereignisse, bedingungen, aktionen ) );
|
|
|
+ zSpiel->addTrigger( new Trigger( id, name, ereignisAnzahl, ereignisse, bedingungen, aktionen ) );
|
|
|
delete[] name;
|
|
|
}
|
|
|
// Variablen
|
|
@@ -908,139 +926,146 @@ void MapReader::ladeKarte( Spiel *zSpiel )
|
|
|
name[ (int)len ] = 0;
|
|
|
char typ;
|
|
|
mapFile.lese( &typ, 1 );
|
|
|
+ char def;
|
|
|
+ mapFile.lese( &def, 1 );
|
|
|
Variable *var = 0;
|
|
|
- switch( typ )
|
|
|
- {
|
|
|
- case NICHTS:
|
|
|
+ if( !def )
|
|
|
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( 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( value, len );
|
|
|
- value[ (int)len ] = 0;
|
|
|
- var = new String( getRichtungFromString( Text( value ) ) );
|
|
|
- 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:
|
|
|
+ else
|
|
|
{
|
|
|
- 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;
|
|
|
- }
|
|
|
+ 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( 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( value, len );
|
|
|
+ value[ (int)len ] = 0;
|
|
|
+ var = new String( getRichtungFromString( Text( value ) ) );
|
|
|
+ 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;
|