|
@@ -13,7 +13,7 @@ Spiel::Spiel()
|
|
zScreen = 0;
|
|
zScreen = 0;
|
|
chat = new SpielChat();
|
|
chat = new SpielChat();
|
|
end = 0;
|
|
end = 0;
|
|
- spielerGUI = new SpielerGUI();
|
|
+ spielerGUI = 0;
|
|
deads = new RCArray< DeadPlayer >();
|
|
deads = new RCArray< DeadPlayer >();
|
|
nextId = 0;
|
|
nextId = 0;
|
|
rendern = 0;
|
|
rendern = 0;
|
|
@@ -78,7 +78,8 @@ Spiel::~Spiel()
|
|
chat->relese();
|
|
chat->relese();
|
|
if( end )
|
|
if( end )
|
|
end->release();
|
|
end->release();
|
|
- spielerGUI->release();
|
|
+ if( spielerGUI )
|
|
|
|
+ spielerGUI->release();
|
|
deads->release();
|
|
deads->release();
|
|
if( lastRunnedTrigger )
|
|
if( lastRunnedTrigger )
|
|
lastRunnedTrigger->release();
|
|
lastRunnedTrigger->release();
|
|
@@ -213,7 +214,7 @@ void Spiel::tick()
|
|
case GESCHOSS_FEUERBALL:
|
|
case GESCHOSS_FEUERBALL:
|
|
if( intersectsWithBariere )
|
|
if( intersectsWithBariere )
|
|
{
|
|
{
|
|
- feuer.add( new FeuerballTreffer( ++nextId, (int)g->getX() - 70, (int)g->getY() - 70, g->getBesitzer(), 10 ) );
|
|
+ feuer.add( new FeuerballTreffer( resources, ++nextId, (int)g->getX() - 70, (int)g->getY() - 70, g->getBesitzer(), 10 ) );
|
|
shots.remove( i );
|
|
shots.remove( i );
|
|
i--;
|
|
i--;
|
|
removed = 1;
|
|
removed = 1;
|
|
@@ -329,7 +330,7 @@ void Spiel::tick()
|
|
s->addEffekt( new DrachenAugeEffect( g->zBesitzer(), s._ ) );
|
|
s->addEffekt( new DrachenAugeEffect( g->zBesitzer(), s._ ) );
|
|
break;
|
|
break;
|
|
case GESCHOSS_FEUERBALL:
|
|
case GESCHOSS_FEUERBALL:
|
|
- feuer.add( new FeuerballTreffer( ++nextId, (int)g->getX() - 70, (int)g->getY() - 70, g->getBesitzer(), 10 ) );
|
|
+ feuer.add( new FeuerballTreffer( resources, ++nextId, (int)g->getX() - 70, (int)g->getY() - 70, g->getBesitzer(), 10 ) );
|
|
break;
|
|
break;
|
|
case GESCHOSS_MINE:
|
|
case GESCHOSS_MINE:
|
|
for( auto s2 = spieler.getIterator(); s2; s2++ )
|
|
for( auto s2 = spieler.getIterator(); s2; s2++ )
|
|
@@ -422,6 +423,7 @@ void Spiel::setSchrift( Schrift *schrift )
|
|
if( this->schrift )
|
|
if( this->schrift )
|
|
this->schrift->release();
|
|
this->schrift->release();
|
|
this->schrift = schrift;
|
|
this->schrift = schrift;
|
|
|
|
+ chat->setSchrift( schrift );
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
@@ -520,6 +522,14 @@ void Spiel::ladeDaten()
|
|
resources->zResource( R_RSTRENGTH_EFFECT, 0, new ColorMode(), "spiel:/bilder/rstrength.ltdb" );
|
|
resources->zResource( R_RSTRENGTH_EFFECT, 0, new ColorMode(), "spiel:/bilder/rstrength.ltdb" );
|
|
resources->zResource( R_KUGEL_GESCHOSS, 0, new ColorMode(), "spiel:/bilder/textures.ltdb/kugelg.png" );
|
|
resources->zResource( R_KUGEL_GESCHOSS, 0, new ColorMode(), "spiel:/bilder/textures.ltdb/kugelg.png" );
|
|
resources->zResource( R_KUGEL, 0, new ColorMode(), "spiel:/bilder/textures.ltdb/kugel.png" );
|
|
resources->zResource( R_KUGEL, 0, new ColorMode(), "spiel:/bilder/textures.ltdb/kugel.png" );
|
|
|
|
+ resources->zResource( R_GUI_ERF, 0, new ColorMode(), "spiel:/bilder/gui.ltdb/erfleiste.png" );
|
|
|
|
+ resources->zResource( R_GUI_ERF_RAND, 0, new ColorMode(), "spiel:/bilder/gui.ltdb/erfrand.png" );
|
|
|
|
+ resources->zResource( R_GUI_INVENTAR_AUSWAHL, 0, new ColorMode(), "spiel:/bilder/gui.ltdb/invausw.png" );
|
|
|
|
+ resources->zResource( R_GUI_INVENTAR_HINTERGRUND, 0, new ColorMode(), "spiel:/bilder/gui.ltdb/invbg.png" );
|
|
|
|
+ resources->zResource( R_GUI_INVENTAR_HINTERGRUND_BENUTZT, 0, new ColorMode(), "spiel:/bilder/gui.ltdb/invbgdark.png" );
|
|
|
|
+ resources->zResource( R_GUI_LEBEN_RAND, 0, new ColorMode(), "spiel:/bilder/gui.ltdb/lebenrand.png" );
|
|
|
|
+ resources->zResource( R_GUI_LEVEL_RAND, 0, new ColorMode(), "spiel:/bilder/gui.ltdb/levelrand.png" );
|
|
|
|
+ resources->zResource( R_GUI_SPIELER, 0, new ColorMode(), "spiel:/bilder/gui.ltdb/spieler.png" );
|
|
spielKlient->setLadenProzent( 70 );
|
|
spielKlient->setLadenProzent( 70 );
|
|
|
|
|
|
AlphaColorMode *alphaMode = new AlphaColorMode( 0x77 );
|
|
AlphaColorMode *alphaMode = new AlphaColorMode( 0x77 );
|
|
@@ -547,6 +557,8 @@ void Spiel::ladeDaten()
|
|
resources->zResource( R_SPIELER_RECHTS, s->getFarbe(), maskMode->getThis() );
|
|
resources->zResource( R_SPIELER_RECHTS, s->getFarbe(), maskMode->getThis() );
|
|
resources->zResource( R_SPIELER_LINKS, s->getFarbe(), maskMode->getThis() );
|
|
resources->zResource( R_SPIELER_LINKS, s->getFarbe(), maskMode->getThis() );
|
|
}
|
|
}
|
|
|
|
+ resources->setSchrift( schrift->getThis() );
|
|
|
|
+ spielerGUI = new SpielerGUI( resources );
|
|
maskMode->release();
|
|
maskMode->release();
|
|
spielKlient->setLadenProzent( 100 );
|
|
spielKlient->setLadenProzent( 100 );
|
|
gamePath->release();
|
|
gamePath->release();
|
|
@@ -625,6 +637,11 @@ void Spiel::stknVerarbeitung()
|
|
break;
|
|
break;
|
|
case 2:
|
|
case 2:
|
|
spielerNummer = *(int *)( msg + 1 );
|
|
spielerNummer = *(int *)( msg + 1 );
|
|
|
|
+ for( auto s = spieler.getIterator(); s; s++ )
|
|
|
|
+ {
|
|
|
|
+ if( s->getId() == spielerNummer )
|
|
|
|
+ spielerGUI->setSpieler( (Spieler *)s->getThis() );
|
|
|
|
+ }
|
|
n->setVerarbeitet();
|
|
n->setVerarbeitet();
|
|
break;
|
|
break;
|
|
case 3:
|
|
case 3:
|
|
@@ -697,7 +714,46 @@ bool Spiel::tick( double zeit )
|
|
|
|
|
|
void Spiel::render( Bild &zRObj )
|
|
void Spiel::render( Bild &zRObj )
|
|
{
|
|
{
|
|
-
|
|
+ if( spielerGUI )
|
|
|
|
+ spielerGUI->render( zRObj );
|
|
|
|
+ Spieler *i = 0;
|
|
|
|
+ for( auto s = spieler.getIterator(); s; s++ )
|
|
|
|
+ {
|
|
|
|
+ if( s->getId() == spielerNummer )
|
|
|
|
+ i = s;
|
|
|
|
+ }
|
|
|
|
+ if( !i )
|
|
|
|
+ return;
|
|
|
|
+ if( zRObj.setDrawOptions( 300, 0, zRObj.getBreite() - 300, zRObj.getHeight() ) )
|
|
|
|
+ {
|
|
|
|
+ zRObj.addScrollOffset( i->getX() - ( zRObj.getBreite() - 300 ) / 2, i->getY() - zRObj.getHeight() / 2 );
|
|
|
|
+ for( auto f = feuer.getIterator(); f; f++ )
|
|
|
|
+ f->render( zRObj );
|
|
|
|
+ for( auto s = schalter.getIterator(); s; s++ )
|
|
|
|
+ s->render( zRObj );
|
|
|
|
+ for( auto t = tunnel.getIterator(); t; t++ )
|
|
|
|
+ t->render( zRObj );
|
|
|
|
+ for( auto b = basen.getIterator(); b; b++ )
|
|
|
|
+ b->render( zRObj );
|
|
|
|
+ for( auto u = umlenkungen.getIterator(); u; u++ )
|
|
|
|
+ u->render( zRObj );
|
|
|
|
+ for( auto s = schienen.getIterator(); s; s++ )
|
|
|
|
+ s->render( zRObj );
|
|
|
|
+ for( auto i = items.getIterator(); i; i++ )
|
|
|
|
+ i->render( zRObj );
|
|
|
|
+ for( auto b = barieren.getIterator(); b; b++ )
|
|
|
|
+ b->render( zRObj );
|
|
|
|
+
|
|
|
|
+ for( auto s = spieler.getIterator(); s; s++ )
|
|
|
|
+ s->render( zRObj );
|
|
|
|
+ for( auto s = shots.getIterator(); s; s++ )
|
|
|
|
+ s->render( zRObj );
|
|
|
|
+
|
|
|
|
+ zRObj.releaseDrawOptions();
|
|
|
|
+ }
|
|
|
|
+ chat->render( zRObj );
|
|
|
|
+ if( end )
|
|
|
|
+ end->render( zRObj );
|
|
}
|
|
}
|
|
|
|
|
|
void Spiel::setMapSize( int width, int height )
|
|
void Spiel::setMapSize( int width, int height )
|
|
@@ -1055,7 +1111,14 @@ int Spiel::getTickCount() const
|
|
void Spiel::setEnde( Team *zGewinner )
|
|
void Spiel::setEnde( Team *zGewinner )
|
|
{
|
|
{
|
|
zWinner = zGewinner;
|
|
zWinner = zGewinner;
|
|
-
|
|
+ Spieler *i = 0;
|
|
|
|
+ for( auto s = spieler.getIterator(); s; s++ )
|
|
|
|
+ {
|
|
|
|
+ if( s->getId() == spielerNummer )
|
|
|
|
+ i = s;
|
|
|
|
+ }
|
|
|
|
+ end = new Ende( schrift );
|
|
|
|
+ end->setGewonnen( ( zGewinner && i ) ? ( i->zTeam() == zGewinner ) : -1 );
|
|
}
|
|
}
|
|
|
|
|
|
Trigger *Spiel::getRandomTrigger()
|
|
Trigger *Spiel::getRandomTrigger()
|
|
@@ -1518,6 +1581,11 @@ ResourceRegistry *Spiel::zResources() const
|
|
return resources;
|
|
return resources;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+int Spiel::läuft() const
|
|
|
|
+{
|
|
|
|
+ return !end || !end->getWeiter();
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
|
|
SpielV *Spiel::getThis()
|
|
SpielV *Spiel::getThis()
|
|
{
|
|
{
|