|
@@ -18,198 +18,64 @@ void SpielAuswahlKSGSAktion( void *p, RCArray< KSGSVariable > *parameter, KSGSVa
|
|
( (SpielDaten*)p )->ksgsAktion( parameter, retVal );
|
|
( (SpielDaten*)p )->ksgsAktion( parameter, retVal );
|
|
}
|
|
}
|
|
|
|
|
|
-// Inhalt der SpielDaten Klasse aus SpielAuswahl.h
|
|
|
|
-// Konstruktor
|
|
|
|
-SpielDaten::SpielDaten( Schrift *zSchrift, const char *name, int id )
|
|
|
|
- : Thread()
|
|
|
|
|
|
+SpielDaten::Loader::Loader( SpielDaten *sd, int aktion )
|
|
{
|
|
{
|
|
|
|
+ this->sd = sd;
|
|
|
|
+ this->aktion = aktion;
|
|
beenden = 0;
|
|
beenden = 0;
|
|
- this->name = new Text( name );
|
|
|
|
- hintergrund = 0;
|
|
|
|
- aAnimation = 0;
|
|
|
|
- beschreibung = 0;
|
|
|
|
- ksgs = 0;
|
|
|
|
- rahmen = new LRahmen();
|
|
|
|
- rahmen->setFarbe( 0xFFFFFFFF );
|
|
|
|
- rahmen->setRamenBreite( 1 );
|
|
|
|
- tickVal = 0;
|
|
|
|
- animation = 0;
|
|
|
|
- ausgewählt = 0;
|
|
|
|
- pos = Punkt( 0, 500 );
|
|
|
|
- gr = Punkt( 200, 100 );
|
|
|
|
- schrift = zSchrift->getThis();
|
|
|
|
- spielId = id;
|
|
|
|
- aktion = 1;
|
|
|
|
- geladen = 0;
|
|
|
|
- erlaubt = 0;
|
|
|
|
- auswahl = new AlphaFeld();
|
|
|
|
- auswahl->setFarbe( 0x0000FF00 );
|
|
|
|
- auswahl->setStrength( 8 );
|
|
|
|
- auswahl->setSize( 200, 100 );
|
|
|
|
- ladenBild = 0;
|
|
|
|
- rend = 0;
|
|
|
|
- ref = 1;
|
|
|
|
- alpha = 0;
|
|
|
|
- tAlpha = 0;
|
|
|
|
|
|
+ ref = 2;
|
|
start();
|
|
start();
|
|
}
|
|
}
|
|
|
|
|
|
-// Destruktor
|
|
|
|
-SpielDaten::~SpielDaten()
|
|
|
|
|
|
+void SpielDaten::Loader::setBeenden()
|
|
{
|
|
{
|
|
beenden = 1;
|
|
beenden = 1;
|
|
- if( run )
|
|
|
|
- this->warteAufThread( 5000 );
|
|
|
|
- if( run )
|
|
|
|
- ende();
|
|
|
|
- if( schrift )
|
|
|
|
- schrift->release();
|
|
|
|
- name->release();
|
|
|
|
- if( hintergrund )
|
|
|
|
- hintergrund->release();
|
|
|
|
- if( aAnimation )
|
|
|
|
- aAnimation->release();
|
|
|
|
- if( beschreibung )
|
|
|
|
- {
|
|
|
|
- beschreibung->zurücksetzen();
|
|
|
|
- beschreibung->release();
|
|
|
|
- }
|
|
|
|
- if( ksgs )
|
|
|
|
- {
|
|
|
|
- dllDateien->releaseDLL( "KSGScript.dll" );
|
|
|
|
- ksgs = 0;
|
|
|
|
- }
|
|
|
|
- rahmen->release();
|
|
|
|
- auswahl->release();
|
|
|
|
}
|
|
}
|
|
|
|
|
|
-// nicht constant
|
|
|
|
-void SpielDaten::ksgsAktion( RCArray< KSGSVariable > *parameter, KSGSVariable **retVal )
|
|
|
|
-{}
|
|
|
|
-
|
|
|
|
-void SpielDaten::setSichtbar( bool sichtbar )
|
|
|
|
-{
|
|
|
|
- if( sichtbar )
|
|
|
|
- animation |= 0x1;
|
|
|
|
- else
|
|
|
|
- {
|
|
|
|
- animation &= ~0x1;
|
|
|
|
- setAuswahl( 0 );
|
|
|
|
- auswahl->setFarbe( auswahl->getFarbe() & 0xFFFFFF );
|
|
|
|
- }
|
|
|
|
- if( !erlaubt && sichtbar && ausgewählt )
|
|
|
|
- updateH->setSichtbar( spielId, 1 );
|
|
|
|
- hauptScreen->lock();
|
|
|
|
- if( run && aktion == (sichtbar ? 2 : 0) )
|
|
|
|
- {
|
|
|
|
- hauptScreen->unlock();
|
|
|
|
- rend = 1;
|
|
|
|
- return;
|
|
|
|
- }
|
|
|
|
- beenden = 1;
|
|
|
|
- if( run )
|
|
|
|
- this->warteAufThread( 1000 );
|
|
|
|
- if( run )
|
|
|
|
- ende();
|
|
|
|
- beenden = 0;
|
|
|
|
- aktion = sichtbar ? 2 : 0;
|
|
|
|
- start();
|
|
|
|
- hauptScreen->unlock();
|
|
|
|
- rend = 1;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-void SpielDaten::setSichtbar()
|
|
|
|
-{
|
|
|
|
- animation |= 1;
|
|
|
|
- if( ausgewählt && geladen == 2 )
|
|
|
|
- {
|
|
|
|
- animation |= 0x4;
|
|
|
|
- beschreibung->setPosition( beschreibung->getX(), 0 );
|
|
|
|
- }
|
|
|
|
- if( !erlaubt && ausgewählt )
|
|
|
|
- updateH->setSichtbar( spielId, 1 );
|
|
|
|
- hauptScreen->lock();
|
|
|
|
- if( geladen != 2 && !( aktion == 2 && run ) )
|
|
|
|
- {
|
|
|
|
- beenden = 1;
|
|
|
|
- if( run )
|
|
|
|
- this->warteAufThread( 1000 );
|
|
|
|
- if( run )
|
|
|
|
- ende();
|
|
|
|
- beenden = 0;
|
|
|
|
- aktion = 2;
|
|
|
|
- start();
|
|
|
|
- }
|
|
|
|
- hauptScreen->unlock();
|
|
|
|
- rend = 1;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-void SpielDaten::setAuswahl( bool auswahl )
|
|
|
|
-{
|
|
|
|
- if( ausgewählt == auswahl )
|
|
|
|
- return;
|
|
|
|
- ausgewählt = auswahl;
|
|
|
|
- if( auswahl )
|
|
|
|
- {
|
|
|
|
- if( aAnimation )
|
|
|
|
- aAnimation->setSichtbar( 1 );
|
|
|
|
- if( beschreibung && ksgs )
|
|
|
|
- beschreibung->neuLaden();
|
|
|
|
- animation |= 0x4;
|
|
|
|
- }
|
|
|
|
- else
|
|
|
|
- animation &= ~0x4;
|
|
|
|
- if( !erlaubt && ausgewählt )
|
|
|
|
- updateH->setSichtbar( spielId, 1 );
|
|
|
|
- if( !erlaubt && !ausgewählt )
|
|
|
|
- updateH->setSichtbar( spielId, 0 );
|
|
|
|
- rend = 1;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-void SpielDaten::thread()
|
|
|
|
|
|
+void SpielDaten::Loader::thread()
|
|
{
|
|
{
|
|
Text *pfad = new Text( "data/spiele/" );
|
|
Text *pfad = new Text( "data/spiele/" );
|
|
- pfad->append( name->getText() );
|
|
|
|
|
|
+ pfad->append( sd->name->getText() );
|
|
pfad->append( "/data/game.ini" );
|
|
pfad->append( "/data/game.ini" );
|
|
if( !DateiExistiert( pfad->getThis() ) )
|
|
if( !DateiExistiert( pfad->getThis() ) )
|
|
{
|
|
{
|
|
if( !aktion )
|
|
if( !aktion )
|
|
{
|
|
{
|
|
- if( aAnimation )
|
|
|
|
- aAnimation->setSichtbar( 0 );
|
|
|
|
- geladen = 0;
|
|
|
|
- ausgewählt = 0;
|
|
|
|
|
|
+ if( sd->aAnimation )
|
|
|
|
+ sd->aAnimation->setSichtbar( 0 );
|
|
|
|
+ sd->geladen = 0;
|
|
|
|
+ sd->ausgewählt = 0;
|
|
hauptScreen->lock();
|
|
hauptScreen->lock();
|
|
- if( aAnimation )
|
|
|
|
- aAnimation = aAnimation->release();
|
|
|
|
|
|
+ if( sd->aAnimation )
|
|
|
|
+ sd->aAnimation = sd->aAnimation->release();
|
|
hauptScreen->unlock();
|
|
hauptScreen->unlock();
|
|
- if( hintergrund )
|
|
|
|
- hintergrund = hintergrund->release();
|
|
|
|
- if( beschreibung )
|
|
|
|
|
|
+ if( sd->hintergrund )
|
|
|
|
+ sd->hintergrund = sd->hintergrund->release();
|
|
|
|
+ if( sd->beschreibung )
|
|
{
|
|
{
|
|
- beschreibung->zurücksetzen();
|
|
|
|
- beschreibung = beschreibung->release();
|
|
|
|
|
|
+ sd->beschreibung->zurücksetzen();
|
|
|
|
+ sd->beschreibung = sd->beschreibung->release();
|
|
}
|
|
}
|
|
- if( ksgs )
|
|
|
|
|
|
+ if( sd->ksgs )
|
|
{
|
|
{
|
|
dllDateien->releaseDLL( "KSGScript.dll" );
|
|
dllDateien->releaseDLL( "KSGScript.dll" );
|
|
- ksgs = 0;
|
|
|
|
|
|
+ sd->ksgs = 0;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else
|
|
else
|
|
{
|
|
{
|
|
- if( !hintergrund )
|
|
|
|
- hintergrund = new Bild();
|
|
|
|
- hintergrund->neuBild( 200, 100, 0xFF000000 );
|
|
|
|
- schrift->lock();
|
|
|
|
- schrift->setSchriftSize( 12 );
|
|
|
|
- schrift->setDrawPosition( 10, 10 );
|
|
|
|
- schrift->renderText( name, *hintergrund, 0xFFFFFFFF );
|
|
|
|
- schrift->unlock();
|
|
|
|
- if( !geladen )
|
|
|
|
- geladen = 1;
|
|
|
|
- rend = 1;
|
|
|
|
- int dgId = infoKlient->getDateiGruppeIdVonSpiel( spielId );
|
|
|
|
|
|
+ if( !sd->hintergrund )
|
|
|
|
+ sd->hintergrund = new Bild();
|
|
|
|
+ sd->hintergrund->neuBild( 200, 100, 0xFF000000 );
|
|
|
|
+ sd->schrift->lock();
|
|
|
|
+ sd->schrift->setSchriftSize( 12 );
|
|
|
|
+ sd->schrift->setDrawPosition( 10, 10 );
|
|
|
|
+ sd->schrift->renderText( sd->name, *sd->hintergrund, 0xFFFFFFFF );
|
|
|
|
+ sd->schrift->unlock();
|
|
|
|
+ if( !sd->geladen )
|
|
|
|
+ sd->geladen = 1;
|
|
|
|
+ sd->rend = 1;
|
|
|
|
+ int dgId = infoKlient->getDateiGruppeIdVonSpiel( sd->spielId );
|
|
if( dgId )
|
|
if( dgId )
|
|
{
|
|
{
|
|
KSGTDatei *dg = new KSGTDatei( "data/dg.ksgt" );
|
|
KSGTDatei *dg = new KSGTDatei( "data/dg.ksgt" );
|
|
@@ -256,25 +122,25 @@ void SpielDaten::thread()
|
|
}
|
|
}
|
|
if( aktion == 2 && !beenden )
|
|
if( aktion == 2 && !beenden )
|
|
{
|
|
{
|
|
- if( beschreibung )
|
|
|
|
|
|
+ if( sd->beschreibung )
|
|
{
|
|
{
|
|
- beschreibung->zurücksetzen();
|
|
|
|
- beschreibung = beschreibung->release();
|
|
|
|
|
|
+ sd->beschreibung->zurücksetzen();
|
|
|
|
+ sd->beschreibung = sd->beschreibung->release();
|
|
}
|
|
}
|
|
- if( !ksgs )
|
|
|
|
- ksgs = dllDateien->ladeDLL( "KSGScript.dll", "data/bin/KSGScript.dll" );
|
|
|
|
- if( ksgs )
|
|
|
|
|
|
+ if( !sd->ksgs )
|
|
|
|
+ sd->ksgs = dllDateien->ladeDLL( "KSGScript.dll", "data/bin/KSGScript.dll" );
|
|
|
|
+ if( sd->ksgs )
|
|
{
|
|
{
|
|
- KSGSGetZeichnung getKSGScript = (KSGSGetZeichnung)GetProcAddress( ksgs, KSGS_START_FUNKTION );
|
|
|
|
|
|
+ KSGSGetZeichnung getKSGScript = (KSGSGetZeichnung)GetProcAddress( sd->ksgs, KSGS_START_FUNKTION );
|
|
if( getKSGScript )
|
|
if( getKSGScript )
|
|
{
|
|
{
|
|
- beschreibung = getKSGScript();
|
|
|
|
- beschreibung->setBildschirmZ( hauptScreen->getThis() );
|
|
|
|
- beschreibung->setSchriftZ( schrift->getThis() );
|
|
|
|
- beschreibung->setSize( 578, 428 );
|
|
|
|
- beschreibung->setRückrufParam( this );
|
|
|
|
- beschreibung->setRückrufFunktion( SpielAuswahlKSGSAktion );
|
|
|
|
- beschreibung->setScriptDatei( "data/script/SpielNichtAktuell.ksgs" );
|
|
|
|
|
|
+ sd->beschreibung = getKSGScript();
|
|
|
|
+ sd->beschreibung->setBildschirmZ( hauptScreen->getThis() );
|
|
|
|
+ sd->beschreibung->setSchriftZ( sd->schrift->getThis() );
|
|
|
|
+ sd->beschreibung->setSize( 578, 428 );
|
|
|
|
+ sd->beschreibung->setRückrufParam( sd );
|
|
|
|
+ sd->beschreibung->setRückrufFunktion( SpielAuswahlKSGSAktion );
|
|
|
|
+ sd->beschreibung->setScriptDatei( "data/script/SpielNichtAktuell.ksgs" );
|
|
}
|
|
}
|
|
else
|
|
else
|
|
{
|
|
{
|
|
@@ -290,15 +156,14 @@ void SpielDaten::thread()
|
|
new Text( "Die DLL-Datei 'data/bin/KSGScript.dll' konnte nicht geladen werden." ),
|
|
new Text( "Die DLL-Datei 'data/bin/KSGScript.dll' konnte nicht geladen werden." ),
|
|
new Text( "Ok" ), 0, NachrichtType::nachricht, 0 );
|
|
new Text( "Ok" ), 0, NachrichtType::nachricht, 0 );
|
|
}
|
|
}
|
|
- if( beschreibung )
|
|
|
|
- geladen = 2;
|
|
|
|
- if( beschreibung && ksgs && ausgewählt )
|
|
|
|
- beschreibung->neuLaden();
|
|
|
|
|
|
+ if( sd->beschreibung )
|
|
|
|
+ sd->geladen = 2;
|
|
|
|
+ if( sd->beschreibung && sd->ksgs && sd->ausgewählt )
|
|
|
|
+ sd->beschreibung->neuLaden();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
pfad->release();
|
|
pfad->release();
|
|
- rend = 1;
|
|
|
|
- run = 0;
|
|
|
|
|
|
+ sd->rend = 1;
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
Datei *ini = new Datei();
|
|
Datei *ini = new Datei();
|
|
@@ -306,54 +171,54 @@ void SpielDaten::thread()
|
|
ini->open( Datei::Style::lesen );
|
|
ini->open( Datei::Style::lesen );
|
|
if( !aktion )
|
|
if( !aktion )
|
|
{
|
|
{
|
|
- if( aAnimation )
|
|
|
|
- aAnimation->setSichtbar( 0 );
|
|
|
|
- geladen = 0;
|
|
|
|
- ausgewählt = 0;
|
|
|
|
|
|
+ if( sd->aAnimation )
|
|
|
|
+ sd->aAnimation->setSichtbar( 0 );
|
|
|
|
+ sd->geladen = 0;
|
|
|
|
+ sd->ausgewählt = 0;
|
|
hauptScreen->lock();
|
|
hauptScreen->lock();
|
|
- if( aAnimation )
|
|
|
|
- aAnimation = aAnimation->release();
|
|
|
|
|
|
+ if( sd->aAnimation )
|
|
|
|
+ sd->aAnimation = sd->aAnimation->release();
|
|
hauptScreen->unlock();
|
|
hauptScreen->unlock();
|
|
- if( hintergrund )
|
|
|
|
- hintergrund = hintergrund->release();
|
|
|
|
- if( beschreibung )
|
|
|
|
|
|
+ if( sd->hintergrund )
|
|
|
|
+ sd->hintergrund = sd->hintergrund->release();
|
|
|
|
+ if( sd->beschreibung )
|
|
{
|
|
{
|
|
- beschreibung->zurücksetzen();
|
|
|
|
- beschreibung = beschreibung->release();
|
|
|
|
|
|
+ sd->beschreibung->zurücksetzen();
|
|
|
|
+ sd->beschreibung = sd->beschreibung->release();
|
|
}
|
|
}
|
|
- if( ksgs )
|
|
|
|
|
|
+ if( sd->ksgs )
|
|
{
|
|
{
|
|
dllDateien->releaseDLL( "KSGScript.dll" );
|
|
dllDateien->releaseDLL( "KSGScript.dll" );
|
|
- ksgs = 0;
|
|
|
|
|
|
+ sd->ksgs = 0;
|
|
}
|
|
}
|
|
- rend = 1;
|
|
|
|
|
|
+ sd->rend = 1;
|
|
}
|
|
}
|
|
else
|
|
else
|
|
{
|
|
{
|
|
Text *pf = ini->leseZeile();
|
|
Text *pf = ini->leseZeile();
|
|
pf->remove( pf->getLength() - 1 );
|
|
pf->remove( pf->getLength() - 1 );
|
|
pf->insert( 0, "/bilder/" );
|
|
pf->insert( 0, "/bilder/" );
|
|
- pf->insert( 0, name->getText() );
|
|
|
|
|
|
+ pf->insert( 0, sd->name->getText() );
|
|
pf->insert( 0, "data/spiele/" );
|
|
pf->insert( 0, "data/spiele/" );
|
|
if( pf->hat( ".ltdb/" ) )
|
|
if( pf->hat( ".ltdb/" ) )
|
|
{
|
|
{
|
|
- if( !hintergrund )
|
|
|
|
|
|
+ if( !sd->hintergrund )
|
|
{
|
|
{
|
|
LTDBDatei *bildDatei = new LTDBDatei();
|
|
LTDBDatei *bildDatei = new LTDBDatei();
|
|
bildDatei->setDatei( pf->getTeilText( 0, pf->positionVon( ".ltdb" ) + 5 ) );
|
|
bildDatei->setDatei( pf->getTeilText( 0, pf->positionVon( ".ltdb" ) + 5 ) );
|
|
bildDatei->leseDaten( 0 );
|
|
bildDatei->leseDaten( 0 );
|
|
- hintergrund = bildDatei->laden( 0, pf->getTeilText( pf->positionVon( ".ltdb" ) + 6 ) );
|
|
|
|
|
|
+ sd->hintergrund = bildDatei->laden( 0, pf->getTeilText( pf->positionVon( ".ltdb" ) + 6 ) );
|
|
bildDatei->release();
|
|
bildDatei->release();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else
|
|
else
|
|
{
|
|
{
|
|
- if( !hintergrund )
|
|
|
|
|
|
+ if( !sd->hintergrund )
|
|
{
|
|
{
|
|
LTDBDatei *bildDatei = new LTDBDatei();
|
|
LTDBDatei *bildDatei = new LTDBDatei();
|
|
bildDatei->setDatei( pf->getThis() );
|
|
bildDatei->setDatei( pf->getThis() );
|
|
bildDatei->leseDaten( 0 );
|
|
bildDatei->leseDaten( 0 );
|
|
- hintergrund = bildDatei->laden( 0, bildDatei->zBildListe()->get( 0 ) );
|
|
|
|
|
|
+ sd->hintergrund = bildDatei->laden( 0, bildDatei->zBildListe()->get( 0 ) );
|
|
bildDatei->release();
|
|
bildDatei->release();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -363,31 +228,31 @@ void SpielDaten::thread()
|
|
pf = ini->leseZeile();
|
|
pf = ini->leseZeile();
|
|
pf->remove( pf->getLength() - 1 );
|
|
pf->remove( pf->getLength() - 1 );
|
|
pf->insert( 0, "/data/" );
|
|
pf->insert( 0, "/data/" );
|
|
- pf->insert( 0, name->getText() );
|
|
|
|
|
|
+ pf->insert( 0, sd->name->getText() );
|
|
pf->insert( 0, "data/spiele/" );
|
|
pf->insert( 0, "data/spiele/" );
|
|
Datei *idDatei = new Datei();
|
|
Datei *idDatei = new Datei();
|
|
idDatei->setDatei( pf->getText() );
|
|
idDatei->setDatei( pf->getText() );
|
|
idDatei->open( Datei::Style::lesen );
|
|
idDatei->open( Datei::Style::lesen );
|
|
- idDatei->lese( (char*)&spielId, 4 );
|
|
|
|
|
|
+ idDatei->lese( (char*)&sd->spielId, 4 );
|
|
idDatei->close();
|
|
idDatei->close();
|
|
idDatei->release();
|
|
idDatei->release();
|
|
pf->release();
|
|
pf->release();
|
|
- if( !geladen )
|
|
|
|
- geladen = 1;
|
|
|
|
- rend = 1;
|
|
|
|
|
|
+ if( !sd->geladen )
|
|
|
|
+ sd->geladen = 1;
|
|
|
|
+ sd->rend = 1;
|
|
ini->setLPosition( 0, 0 );
|
|
ini->setLPosition( 0, 0 );
|
|
if( aktion == 2 && !beenden )
|
|
if( aktion == 2 && !beenden )
|
|
{
|
|
{
|
|
pf = ini->leseZeile();
|
|
pf = ini->leseZeile();
|
|
pf->remove( pf->getLength() - 1 );
|
|
pf->remove( pf->getLength() - 1 );
|
|
pf->insert( 0, "/bilder/" );
|
|
pf->insert( 0, "/bilder/" );
|
|
- pf->insert( 0, name->getText() );
|
|
|
|
|
|
+ pf->insert( 0, sd->name->getText() );
|
|
pf->insert( 0, "data/spiele/" );
|
|
pf->insert( 0, "data/spiele/" );
|
|
if( !pf->hat( ".ltdb/" ) )
|
|
if( !pf->hat( ".ltdb/" ) )
|
|
{
|
|
{
|
|
hauptScreen->lock();
|
|
hauptScreen->lock();
|
|
- if( aAnimation )
|
|
|
|
- aAnimation = aAnimation->release();
|
|
|
|
|
|
+ if( sd->aAnimation )
|
|
|
|
+ sd->aAnimation = sd->aAnimation->release();
|
|
hauptScreen->unlock();
|
|
hauptScreen->unlock();
|
|
LTDBDatei *add = new LTDBDatei();
|
|
LTDBDatei *add = new LTDBDatei();
|
|
add->setDatei( pf->getThis() );
|
|
add->setDatei( pf->getThis() );
|
|
@@ -396,36 +261,36 @@ void SpielDaten::thread()
|
|
ad->ladeAnimation( add );
|
|
ad->ladeAnimation( add );
|
|
ad->setWiederhohlend( 1 );
|
|
ad->setWiederhohlend( 1 );
|
|
ad->setFPS( 30 );
|
|
ad->setFPS( 30 );
|
|
- aAnimation = new Animation2D();
|
|
|
|
- aAnimation->setSize( 200, 100 );
|
|
|
|
- aAnimation->setPosition( 0, 0 );
|
|
|
|
- aAnimation->setAnimationDataZ( ad );
|
|
|
|
|
|
+ sd->aAnimation = new Animation2D();
|
|
|
|
+ sd->aAnimation->setSize( 200, 100 );
|
|
|
|
+ sd->aAnimation->setPosition( 0, 0 );
|
|
|
|
+ sd->aAnimation->setAnimationDataZ( ad );
|
|
}
|
|
}
|
|
pf->release();
|
|
pf->release();
|
|
pf = ini->leseZeile();
|
|
pf = ini->leseZeile();
|
|
pf->remove( pf->getLength() - 1 );
|
|
pf->remove( pf->getLength() - 1 );
|
|
pf->insert( 0, "/data/" );
|
|
pf->insert( 0, "/data/" );
|
|
- pf->insert( 0, name->getText() );
|
|
|
|
|
|
+ pf->insert( 0, sd->name->getText() );
|
|
pf->insert( 0, "data/spiele/" );
|
|
pf->insert( 0, "data/spiele/" );
|
|
- if( beschreibung )
|
|
|
|
|
|
+ if( sd->beschreibung )
|
|
{
|
|
{
|
|
- beschreibung->zurücksetzen();
|
|
|
|
- beschreibung = beschreibung->release();
|
|
|
|
|
|
+ sd->beschreibung->zurücksetzen();
|
|
|
|
+ sd->beschreibung = sd->beschreibung->release();
|
|
}
|
|
}
|
|
- if( !ksgs )
|
|
|
|
- ksgs = dllDateien->ladeDLL( "KSGScript.dll", "data/bin/KSGScript.dll" );
|
|
|
|
- if( ksgs )
|
|
|
|
|
|
+ if( !sd->ksgs )
|
|
|
|
+ sd->ksgs = dllDateien->ladeDLL( "KSGScript.dll", "data/bin/KSGScript.dll" );
|
|
|
|
+ if( sd->ksgs )
|
|
{
|
|
{
|
|
- KSGSGetZeichnung getKSGScript = (KSGSGetZeichnung)GetProcAddress( ksgs, KSGS_START_FUNKTION );
|
|
|
|
|
|
+ KSGSGetZeichnung getKSGScript = (KSGSGetZeichnung)GetProcAddress( sd->ksgs, KSGS_START_FUNKTION );
|
|
if( getKSGScript )
|
|
if( getKSGScript )
|
|
{
|
|
{
|
|
- beschreibung = getKSGScript();
|
|
|
|
- beschreibung->setBildschirmZ( hauptScreen->getThis() );
|
|
|
|
- beschreibung->setSchriftZ( schrift->getThis() );
|
|
|
|
- beschreibung->setSize( 578, 428 );
|
|
|
|
- beschreibung->setRückrufParam( this );
|
|
|
|
- beschreibung->setRückrufFunktion( SpielAuswahlKSGSAktion );
|
|
|
|
- beschreibung->setScriptDatei( pf->getText() );
|
|
|
|
|
|
+ sd->beschreibung = getKSGScript();
|
|
|
|
+ sd->beschreibung->setBildschirmZ( hauptScreen->getThis() );
|
|
|
|
+ sd->beschreibung->setSchriftZ( sd->schrift->getThis() );
|
|
|
|
+ sd->beschreibung->setSize( 578, 428 );
|
|
|
|
+ sd->beschreibung->setRückrufParam( sd );
|
|
|
|
+ sd->beschreibung->setRückrufFunktion( SpielAuswahlKSGSAktion );
|
|
|
|
+ sd->beschreibung->setScriptDatei( pf->getText() );
|
|
}
|
|
}
|
|
else
|
|
else
|
|
{
|
|
{
|
|
@@ -442,20 +307,165 @@ void SpielDaten::thread()
|
|
new Text( "Ok" ), 0, NachrichtType::nachricht, 0 );
|
|
new Text( "Ok" ), 0, NachrichtType::nachricht, 0 );
|
|
}
|
|
}
|
|
pf->release();
|
|
pf->release();
|
|
- if( beschreibung )
|
|
|
|
- geladen = 2;
|
|
|
|
- if( beschreibung && ksgs && ausgewählt )
|
|
|
|
- beschreibung->neuLaden();
|
|
|
|
- rend = 1;
|
|
|
|
|
|
+ if( sd->beschreibung )
|
|
|
|
+ sd->geladen = 2;
|
|
|
|
+ if( sd->beschreibung && sd->ksgs && sd->ausgewählt )
|
|
|
|
+ sd->beschreibung->neuLaden();
|
|
|
|
+ sd->rend = 1;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
pfad->release();
|
|
pfad->release();
|
|
ini->close();
|
|
ini->close();
|
|
ini->release();
|
|
ini->release();
|
|
- if( !erlaubt )
|
|
|
|
- updateErlaubt();
|
|
|
|
- aktion = 0;
|
|
|
|
- run = 0;
|
|
|
|
|
|
+ if( !sd->erlaubt )
|
|
|
|
+ sd->updateErlaubt();
|
|
|
|
+ sd->rend = 1;
|
|
|
|
+ release();
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+SpielDaten::Loader *SpielDaten::Loader::release()
|
|
|
|
+{
|
|
|
|
+ if( !--ref )
|
|
|
|
+ delete this;
|
|
|
|
+ return 0;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+int SpielDaten::Loader::getAktion() const
|
|
|
|
+{
|
|
|
|
+ return aktion;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// Inhalt der SpielDaten Klasse aus SpielAuswahl.h
|
|
|
|
+// Konstruktor
|
|
|
|
+SpielDaten::SpielDaten( Schrift *zSchrift, const char *name, int id )
|
|
|
|
+{
|
|
|
|
+ this->name = new Text( name );
|
|
|
|
+ hintergrund = 0;
|
|
|
|
+ aAnimation = 0;
|
|
|
|
+ beschreibung = 0;
|
|
|
|
+ ksgs = 0;
|
|
|
|
+ rahmen = new LRahmen();
|
|
|
|
+ rahmen->setFarbe( 0xFFFFFFFF );
|
|
|
|
+ rahmen->setRamenBreite( 1 );
|
|
|
|
+ tickVal = 0;
|
|
|
|
+ animation = 0;
|
|
|
|
+ ausgewählt = 0;
|
|
|
|
+ pos = Punkt( 0, 500 );
|
|
|
|
+ gr = Punkt( 200, 100 );
|
|
|
|
+ schrift = zSchrift->getThis();
|
|
|
|
+ spielId = id;
|
|
|
|
+ geladen = 0;
|
|
|
|
+ erlaubt = 0;
|
|
|
|
+ auswahl = new AlphaFeld();
|
|
|
|
+ auswahl->setFarbe( 0x0000FF00 );
|
|
|
|
+ auswahl->setStrength( 8 );
|
|
|
|
+ auswahl->setSize( 200, 100 );
|
|
|
|
+ ladenBild = 0;
|
|
|
|
+ rend = 0;
|
|
|
|
+ ref = 1;
|
|
|
|
+ alpha = 0;
|
|
|
|
+ tAlpha = 0;
|
|
|
|
+ loader = new Loader( this, 1 );
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// Destruktor
|
|
|
|
+SpielDaten::~SpielDaten()
|
|
|
|
+{
|
|
|
|
+ if( loader && loader->isRunning() )
|
|
|
|
+ loader->warteAufThread( INT_MAX );
|
|
|
|
+ loader->release();
|
|
|
|
+ if( schrift )
|
|
|
|
+ schrift->release();
|
|
|
|
+ name->release();
|
|
|
|
+ if( hintergrund )
|
|
|
|
+ hintergrund->release();
|
|
|
|
+ if( aAnimation )
|
|
|
|
+ aAnimation->release();
|
|
|
|
+ if( beschreibung )
|
|
|
|
+ {
|
|
|
|
+ beschreibung->zurücksetzen();
|
|
|
|
+ beschreibung->release();
|
|
|
|
+ }
|
|
|
|
+ if( ksgs )
|
|
|
|
+ {
|
|
|
|
+ dllDateien->releaseDLL( "KSGScript.dll" );
|
|
|
|
+ ksgs = 0;
|
|
|
|
+ }
|
|
|
|
+ rahmen->release();
|
|
|
|
+ auswahl->release();
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// nicht constant
|
|
|
|
+void SpielDaten::ksgsAktion( RCArray< KSGSVariable > *parameter, KSGSVariable **retVal )
|
|
|
|
+{}
|
|
|
|
+
|
|
|
|
+void SpielDaten::setSichtbar( bool sichtbar )
|
|
|
|
+{
|
|
|
|
+ if( sichtbar )
|
|
|
|
+ animation |= 0x1;
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ animation &= ~0x1;
|
|
|
|
+ setAuswahl( 0 );
|
|
|
|
+ auswahl->setFarbe( auswahl->getFarbe() & 0xFFFFFF );
|
|
|
|
+ }
|
|
|
|
+ if( !erlaubt && sichtbar && ausgewählt )
|
|
|
|
+ updateH->setSichtbar( spielId, 1 );
|
|
|
|
+ hauptScreen->lock();
|
|
|
|
+ if( loader->getAktion() == (sichtbar ? 2 : 0) )
|
|
|
|
+ {
|
|
|
|
+ hauptScreen->unlock();
|
|
|
|
+ rend = 1;
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ loader->setBeenden();
|
|
|
|
+ Loader *altLoader = loader;
|
|
|
|
+ loader = new Loader( this, sichtbar ? 2 : 0 );
|
|
|
|
+ altLoader->release();
|
|
|
|
+ hauptScreen->unlock();
|
|
|
|
+ rend = 1;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+void SpielDaten::setSichtbar()
|
|
|
|
+{
|
|
|
|
+ animation |= 1;
|
|
|
|
+ if( ausgewählt && geladen == 2 )
|
|
|
|
+ {
|
|
|
|
+ animation |= 0x4;
|
|
|
|
+ beschreibung->setPosition( beschreibung->getX(), 0 );
|
|
|
|
+ }
|
|
|
|
+ if( !erlaubt && ausgewählt )
|
|
|
|
+ updateH->setSichtbar( spielId, 1 );
|
|
|
|
+ hauptScreen->lock();
|
|
|
|
+ if( geladen != 2 && loader->getAktion() != 2 )
|
|
|
|
+ {
|
|
|
|
+ Loader *altLoader = loader;
|
|
|
|
+ loader = new Loader( this, 2 );
|
|
|
|
+ altLoader->release();
|
|
|
|
+ }
|
|
|
|
+ hauptScreen->unlock();
|
|
|
|
+ rend = 1;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+void SpielDaten::setAuswahl( bool auswahl )
|
|
|
|
+{
|
|
|
|
+ if( ausgewählt == auswahl )
|
|
|
|
+ return;
|
|
|
|
+ ausgewählt = auswahl;
|
|
|
|
+ if( auswahl )
|
|
|
|
+ {
|
|
|
|
+ if( aAnimation )
|
|
|
|
+ aAnimation->setSichtbar( 1 );
|
|
|
|
+ if( beschreibung && ksgs )
|
|
|
|
+ beschreibung->neuLaden();
|
|
|
|
+ animation |= 0x4;
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ animation &= ~0x4;
|
|
|
|
+ if( !erlaubt && ausgewählt )
|
|
|
|
+ updateH->setSichtbar( spielId, 1 );
|
|
|
|
+ if( !erlaubt && !ausgewählt )
|
|
|
|
+ updateH->setSichtbar( spielId, 0 );
|
|
rend = 1;
|
|
rend = 1;
|
|
}
|
|
}
|
|
|
|
|