|
@@ -10,6 +10,8 @@
|
|
|
#include <Schrift.h>
|
|
|
#include <DateiSystem.h>
|
|
|
#include <Rahmen.h>
|
|
|
+#include <AsynchronCall.h>
|
|
|
+#include <Bildschirm.h>
|
|
|
|
|
|
// Inhalt der MenüVerloren Klasse aus Menü.h
|
|
|
// Kontruktor
|
|
@@ -83,13 +85,14 @@ Men
|
|
|
|
|
|
// Inhalt der MenüSpiel Klasse aus Menü.h
|
|
|
// Konstruktor
|
|
|
-MenüSpiel::MenüSpiel( Schrift *zSchrift, Bildschirm *zScreen )
|
|
|
+MenüSpiel::MenüSpiel( Schrift *zSchrift, Bildschirm *zScreen, MinigameKlientV *klient )
|
|
|
{
|
|
|
scoreT = initTextFeld( 690, 10, 100, 20, zSchrift, TextFeld::Style::Text, "Score: 0" );
|
|
|
beenden = initKnopf( 690, 40, 100, 20, zSchrift, Knopf::Style::Sichtbar, "Beenden" );
|
|
|
- map = new Map();
|
|
|
+ map = new Map( klient );
|
|
|
verloren = new MenüVerloren( zSchrift );
|
|
|
beendet = 0;
|
|
|
+ timePuffer = 0;
|
|
|
ref = 1;
|
|
|
}
|
|
|
|
|
@@ -105,7 +108,61 @@ Men
|
|
|
// nicht constant
|
|
|
void MenüSpiel::reset()
|
|
|
{
|
|
|
- map->reset();
|
|
|
+ InitDatei *opd = new InitDatei( "data/Minigames/Snake/data/optionen.ini" );
|
|
|
+ if( !opd->laden() )
|
|
|
+ DateiPfadErstellen( "data/Minigames/Snake/data/optionen.ini" );
|
|
|
+ Text optionen = "Width=";
|
|
|
+ if( opd->wertExistiert( "Breite" ) )
|
|
|
+ optionen += (int)*opd->zWert( "Breite" );
|
|
|
+ else
|
|
|
+ {
|
|
|
+ opd->addWert( "Breite", "80" );
|
|
|
+ optionen += 80;
|
|
|
+ }
|
|
|
+ optionen += ",Height=";
|
|
|
+ if( opd->wertExistiert( "Höhe" ) )
|
|
|
+ optionen += (int)*opd->zWert( "Höhe" );
|
|
|
+ else
|
|
|
+ {
|
|
|
+ opd->addWert( "Höhe", "50" );
|
|
|
+ optionen += 50;
|
|
|
+ }
|
|
|
+ optionen += ",Ziele=";
|
|
|
+ if( opd->wertExistiert( "Ziele" ) )
|
|
|
+ optionen += (int)*opd->zWert( "Ziele" );
|
|
|
+ else
|
|
|
+ {
|
|
|
+ opd->addWert( "Ziele", "1" );
|
|
|
+ optionen += 1;
|
|
|
+ }
|
|
|
+ optionen += ",Anhang=";
|
|
|
+ if( opd->wertExistiert( "Anhängen" ) )
|
|
|
+ optionen += (int)*opd->zWert( "Anhängen" );
|
|
|
+ else
|
|
|
+ {
|
|
|
+ opd->addWert( "Anhängen", "10" );
|
|
|
+ optionen += 10;
|
|
|
+ }
|
|
|
+ optionen += ",Speed=";
|
|
|
+ if( opd->wertExistiert( "Geschwindigkeit" ) )
|
|
|
+ optionen += (int)*opd->zWert( "Geschwindigkeit" );
|
|
|
+ else
|
|
|
+ {
|
|
|
+ opd->addWert( "Geschwindigkeit", "10" );
|
|
|
+ optionen += 10;
|
|
|
+ }
|
|
|
+ optionen += ",Fortsetzen=";
|
|
|
+ if( opd->wertExistiert( "Fortsetzen" ) )
|
|
|
+ optionen += (int)*opd->zWert( "Fortsetzen" ) != 0;
|
|
|
+ else
|
|
|
+ {
|
|
|
+ opd->addWert( "Fortsetzen", "0" );
|
|
|
+ optionen += 0;
|
|
|
+ }
|
|
|
+ opd->speichern();
|
|
|
+ opd->release();
|
|
|
+ optionen += ",Seed=0";
|
|
|
+ map->reset( &optionen );
|
|
|
beendet = 0;
|
|
|
scoreT->setText( "Score: " );
|
|
|
scoreT->zText()->append( map->getScore() );
|
|
@@ -146,8 +203,13 @@ void Men
|
|
|
|
|
|
bool MenüSpiel::tick( double tickVal )
|
|
|
{
|
|
|
+ timePuffer += tickVal;
|
|
|
bool ret = beenden->tick( tickVal );
|
|
|
- ret |= map->tick( tickVal );
|
|
|
+ while( timePuffer >= 0.01 )
|
|
|
+ {
|
|
|
+ ret |= map->tick( 0.01 );
|
|
|
+ timePuffer -= 0.01;
|
|
|
+ }
|
|
|
scoreT->setText( "Score: " );
|
|
|
scoreT->zText()->append( map->getScore() );
|
|
|
if( map->istBeendet() )
|
|
@@ -186,17 +248,132 @@ Men
|
|
|
}
|
|
|
|
|
|
|
|
|
+// Inhalt der MenüWiederhohlung Klasse
|
|
|
+// Konstruktor
|
|
|
+MenüWiederhohlung::MenüWiederhohlung( Schrift *zSchrift, Bildschirm *zScreen, Datei *datei, Text *zOptionen )
|
|
|
+{
|
|
|
+ scoreT = initTextFeld( 690, 10, 100, 20, zSchrift, TextFeld::Style::Text, "Score: 0" );
|
|
|
+ beenden = initKnopf( 690, 40, 100, 20, zSchrift, Knopf::Style::Sichtbar, "Beenden" );
|
|
|
+ this->datei = datei;
|
|
|
+ if( !datei->istOffen() )
|
|
|
+ datei->open( Datei::Style::lesen );
|
|
|
+ __int64 seed;
|
|
|
+ datei->lese( (char*)&seed, 8 );
|
|
|
+ zOptionen->append( ",Fortsetzen=0,Seed=" );
|
|
|
+ zOptionen->append( seed );
|
|
|
+ map = new Map( 0 );
|
|
|
+ map->reset( zOptionen );
|
|
|
+ beendet = 0;
|
|
|
+ nowTime = 0;
|
|
|
+ nextTime = 0;
|
|
|
+ datei->lese( (char*)&nextTime, 8 );
|
|
|
+ timePuffer = 0;
|
|
|
+ ref = 1;
|
|
|
+}
|
|
|
+
|
|
|
+// Destruktor
|
|
|
+MenüWiederhohlung::~MenüWiederhohlung()
|
|
|
+{
|
|
|
+ scoreT->release();
|
|
|
+ beenden->release();
|
|
|
+ map->release();
|
|
|
+ datei->close();
|
|
|
+ datei->release();
|
|
|
+}
|
|
|
+
|
|
|
+// nicht constant
|
|
|
+void MenüWiederhohlung::doMausEreignis( MausEreignis &me )
|
|
|
+{
|
|
|
+ bool vera = me.verarbeitet;
|
|
|
+ beenden->doMausEreignis( me );
|
|
|
+ if( !vera && me.verarbeitet && me.id == ME_RLinks )
|
|
|
+ beendet = 1;
|
|
|
+ if( map->istBeendet() )
|
|
|
+ beendet = 1;
|
|
|
+}
|
|
|
+
|
|
|
+void MenüWiederhohlung::doTastaturEreignis( TastaturEreignis &te )
|
|
|
+{}
|
|
|
+
|
|
|
+bool MenüWiederhohlung::tick( double tickVal )
|
|
|
+{
|
|
|
+ bool ret = beenden->tick( tickVal );
|
|
|
+ // TODO Replay Activity
|
|
|
+ while( nextTime >= 0 && nowTime + tickVal >= nextTime )
|
|
|
+ {
|
|
|
+ while( nowTime < nextTime )
|
|
|
+ {
|
|
|
+ ret |= map->tick( 0.01 );
|
|
|
+ tickVal -= 0.01;
|
|
|
+ nowTime += 0.01;
|
|
|
+ }
|
|
|
+ char aktion;
|
|
|
+ datei->lese( &aktion, 1 );
|
|
|
+ if( datei->istEnde() )
|
|
|
+ nextTime = -1;
|
|
|
+ else
|
|
|
+ datei->lese( (char*)&nextTime, 8 );
|
|
|
+ TastaturEreignis te;
|
|
|
+ te.taste = aktion;
|
|
|
+ te.verarbeitet = 0;
|
|
|
+ te.id = TE_Press;
|
|
|
+ map->doTastaturEreignis( te );
|
|
|
+ }
|
|
|
+ timePuffer += tickVal;
|
|
|
+ while( timePuffer > 0 )
|
|
|
+ {
|
|
|
+ ret |= map->tick( 0.01 );
|
|
|
+ nowTime += 0.01;
|
|
|
+ timePuffer -= 0.01;
|
|
|
+ }
|
|
|
+ scoreT->setText( "Score: " );
|
|
|
+ scoreT->zText()->append( map->getScore() );
|
|
|
+ return ret;
|
|
|
+}
|
|
|
+
|
|
|
+void MenüWiederhohlung::render( Bild &zRObj )
|
|
|
+{
|
|
|
+ map->render( zRObj );
|
|
|
+ scoreT->render( zRObj );
|
|
|
+ beenden->render( zRObj );
|
|
|
+}
|
|
|
+
|
|
|
+// constant
|
|
|
+bool MenüWiederhohlung::istBeendet() const
|
|
|
+{
|
|
|
+ return beendet;
|
|
|
+}
|
|
|
+
|
|
|
+// Reference Counting
|
|
|
+MenüWiederhohlung *MenüWiederhohlung::getThis()
|
|
|
+{
|
|
|
+ ref++;
|
|
|
+ return this;
|
|
|
+}
|
|
|
+
|
|
|
+MenüWiederhohlung *MenüWiederhohlung::release()
|
|
|
+{
|
|
|
+ if( !--ref )
|
|
|
+ delete this;
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
// Inhalt der MenüStatistik Klasse aus Menü.h
|
|
|
// Konstruktor
|
|
|
-MenüStatistik::MenüStatistik( Schrift *zSchrift, Bildschirm *zScreen )
|
|
|
+MenüStatistik::MenüStatistik( Schrift *zSchrift, Bildschirm *zScreen, MinigameKlientV *klient )
|
|
|
{
|
|
|
+ this->klient = klient;
|
|
|
+ wiederH = 0;
|
|
|
+ screen = zScreen->getThis();
|
|
|
ansichtT = initTextFeld( 245, 10, 50, 20, zSchrift, TextFeld::Style::Text | TextFeld::Style::VCenter, "Ansicht:" );
|
|
|
ansicht = initAuswahlBox( 295, 10, 120, 20, zSchrift, AuswahlBox::Style::Normal | AuswahlBox::Style::Hintergrund, { "Tabelle", "Diagramm" } );
|
|
|
optionen = initKontrollKnopf( 425, 10, 130, 20, zSchrift, KontrollKnopf::Style::Normal, "Optionen beachten" );
|
|
|
- gesammtT = initObjTabelle( 115, 40, 570, 420, zSchrift, ObjTabelle::Style::normal, { { "Score", 70, 0, 0 }, { "Datum", 145, 0, 0 }, { "Breite", 70, 0, 0 }, { "Höhe", 70, 0, 0 }, { "Ziele", 70, 0, 0 }, { "Anhängen", 70, 0, 0 }, { "Tempo", 70, 0, 0 } }, 20 );
|
|
|
- optionenT = initObjTabelle( 115, 40, 570, 420, zSchrift, ObjTabelle::Style::normal, { { "Score", 70, 0, 0 }, { "Datum", 145, 0, 0 }, { "Breite", 70, 0, 0 }, { "Höhe", 70, 0, 0 }, { "Ziele", 70, 0, 0 }, { "Anhängen", 70, 0, 0 }, { "Tempo", 70, 0, 0 } }, 20 );
|
|
|
- gesammtD = initLinienDiagramm( 100, 40, 600, 420, zSchrift, LDiag::Style::DatenRahmen, 0 );
|
|
|
- optionenD = initLinienDiagramm( 100, 40, 600, 420, zSchrift, LDiag::Style::DatenRahmen, 0 );
|
|
|
+ worldBestT = initObjTabelle( 115, 40, 570, 120, zSchrift, ObjTabelle::Style::normal | ObjTabelle::Style::VScroll, { { "Score", 60, 0, 0 },{ "Spieler", 100, 0, 0 },{ "Ansehen", 55, 0, 0 },{ "Breite", 70, 0, 0 },{ "Höhe", 70, 0, 0 },{ "Ziele", 70, 0, 0 },{ "Anhängen", 60, 0, 0 },{ "Tempo", 65, 0, 0 } }, 20 );
|
|
|
+ gesammtT = initObjTabelle( 115, 170, 570, 290, zSchrift, ObjTabelle::Style::normal | ObjTabelle::Style::VScroll, { { "Score", 70, 0, 0 }, { "Datum", 145, 0, 0 }, { "Breite", 70, 0, 0 }, { "Höhe", 70, 0, 0 }, { "Ziele", 70, 0, 0 }, { "Anhängen", 65, 0, 0 }, { "Tempo", 60, 0, 0 } }, 20 );
|
|
|
+ optionenT = initObjTabelle( 115, 170, 570, 290, zSchrift, ObjTabelle::Style::normal | ObjTabelle::Style::VScroll, { { "Score", 70, 0, 0 }, { "Datum", 145, 0, 0 }, { "Breite", 70, 0, 0 }, { "Höhe", 70, 0, 0 }, { "Ziele", 70, 0, 0 }, { "Anhängen", 65, 0, 0 }, { "Tempo", 60, 0, 0 } }, 20 );
|
|
|
+ gesammtD = initLinienDiagramm( 100, 170, 600, 290, zSchrift, LDiag::Style::DatenRahmen, 0 );
|
|
|
+ optionenD = initLinienDiagramm( 100, 170, 600, 290, zSchrift, LDiag::Style::DatenRahmen, 0 );
|
|
|
releasen = initKnopf( 10, 470, 100, 20, zSchrift, Knopf::Style::Sichtbar, "Zurücksetzen" );
|
|
|
zurück = initKnopf( 350, 470, 100, 20, zSchrift, Knopf::Style::Sichtbar, "Zurück" );
|
|
|
schrift = zSchrift->getThis();
|
|
@@ -214,6 +391,23 @@ Men
|
|
|
}
|
|
|
for( int j = 0; j < 7; j++ )
|
|
|
( (TextFeld*)optionenT->zZeichnung( j, 0 ) )->release();
|
|
|
+ while( !asyncFinished )
|
|
|
+ {
|
|
|
+ Sleep( 100 );
|
|
|
+ }
|
|
|
+ anz = worldBestT->getZeilenAnzahl();
|
|
|
+ for( int i = 0; i < anz; i++ )
|
|
|
+ {
|
|
|
+ for( int j = 0; j < 8; j++ )
|
|
|
+ {
|
|
|
+ if( j == 2 )
|
|
|
+ ( (Knopf*)worldBestT->zZeichnung( j, 0 ) )->release();
|
|
|
+ else
|
|
|
+ ( (TextFeld*)worldBestT->zZeichnung( j, 0 ) )->release();
|
|
|
+ }
|
|
|
+ worldBestT->removeZeile( 0 );
|
|
|
+ }
|
|
|
+ worldBestT->release();
|
|
|
ansichtT->release();
|
|
|
ansicht->release();
|
|
|
optionen->release();
|
|
@@ -224,11 +418,17 @@ Men
|
|
|
releasen->release();
|
|
|
zurück->release();
|
|
|
schrift->release();
|
|
|
+ klient->release();
|
|
|
+ if( wiederH )
|
|
|
+ wiederH->release();
|
|
|
+ screen->release();
|
|
|
}
|
|
|
|
|
|
// nicht constant
|
|
|
void MenüStatistik::reset()
|
|
|
{
|
|
|
+ if( wiederH )
|
|
|
+ wiederH = wiederH->release();
|
|
|
int anz = gesammtT->getZeilenAnzahl();
|
|
|
for( int i = 1; i < anz; i++ )
|
|
|
{
|
|
@@ -239,6 +439,81 @@ void Men
|
|
|
anz = optionenT->getZeilenAnzahl();
|
|
|
for( int i = 1; i < anz; i++ )
|
|
|
optionenT->removeZeile( 1 );
|
|
|
+ anz = worldBestT->getZeilenAnzahl();
|
|
|
+ for( int i = 1; i < anz; i++ )
|
|
|
+ {
|
|
|
+ for( int j = 0; j < 8; j++ )
|
|
|
+ {
|
|
|
+ if( j == 2 )
|
|
|
+ ( (Knopf*)worldBestT->zZeichnung( j, 1 ) )->release();
|
|
|
+ else
|
|
|
+ ( (TextFeld*)worldBestT->zZeichnung( j, 1 ) )->release();
|
|
|
+ }
|
|
|
+ worldBestT->removeZeile( 1 );
|
|
|
+ }
|
|
|
+ ObjTabelle *tmpWBT = worldBestT->getThis();
|
|
|
+ MinigameKlientV *tmpKlient = klient->getThis();
|
|
|
+ Schrift *tmpSchrift = schrift->getThis();
|
|
|
+ new AsynchronCall( [ this, tmpWBT, tmpKlient, tmpSchrift ]()
|
|
|
+ {
|
|
|
+ Array< int > score;
|
|
|
+ RCArray< Text > player;
|
|
|
+ RCArray< Text > option;
|
|
|
+ int anz = tmpKlient->getMinigameBestscoreList( "Snake", &score, &player, &option );
|
|
|
+ for( int i = 0; i < anz; i++ )
|
|
|
+ {
|
|
|
+ TextFeld *scoreT = initTextFeld( 0, 0, 0, 0, tmpSchrift, TextFeld::Style::Text | TextFeld::Style::VCenter, Text( score.get( i ) ) );
|
|
|
+ TextFeld *spielerT = initTextFeld( 0, 0, 0, 0, tmpSchrift, TextFeld::Style::Text | TextFeld::Style::VCenter, player.z( i )->getText() );
|
|
|
+ Text optionen = option.z( i )->getText();
|
|
|
+ Text *breite = optionen.getTeilText( optionen.positionVon( '=' ) + 1, optionen.positionVon( ',' ) );
|
|
|
+ Text *höhe = optionen.getTeilText( optionen.positionVon( '=', 1 ) + 1, optionen.positionVon( ',', 1 ) );
|
|
|
+ Text *ziele = optionen.getTeilText( optionen.positionVon( '=', 2 ) + 1, optionen.positionVon( ',', 2 ) );
|
|
|
+ Text *anhang = optionen.getTeilText( optionen.positionVon( '=', 3 ) + 1, optionen.positionVon( ',', 3 ) );
|
|
|
+ Text *tempo = optionen.getTeilText( optionen.positionVon( '=', 4 ) + 1 );
|
|
|
+ TextFeld *breiteT = initTextFeld( 0, 0, 0, 0, tmpSchrift, TextFeld::Style::Text | TextFeld::Style::VCenter, breite->getText() );
|
|
|
+ breite->release();
|
|
|
+ TextFeld *höheT = initTextFeld( 0, 0, 0, 0, tmpSchrift, TextFeld::Style::Text | TextFeld::Style::VCenter, höhe->getText() );
|
|
|
+ höhe->release();
|
|
|
+ TextFeld *zieleT = initTextFeld( 0, 0, 0, 0, tmpSchrift, TextFeld::Style::Text | TextFeld::Style::VCenter, ziele->getText() );
|
|
|
+ ziele->release();
|
|
|
+ TextFeld *anhangT = initTextFeld( 0, 0, 0, 0, tmpSchrift, TextFeld::Style::Text | TextFeld::Style::VCenter, anhang->getText() );
|
|
|
+ anhang->release();
|
|
|
+ TextFeld *tempoT = initTextFeld( 0, 0, 0, 0, tmpSchrift, TextFeld::Style::Text | TextFeld::Style::VCenter, tempo->getText() );
|
|
|
+ tempo->release();
|
|
|
+ Knopf *ansehenK = initKnopf( 0, 0, 0, 0, tmpSchrift, Knopf::Style::Normal, "Ansehen" );
|
|
|
+ ansehenK->setMausEreignis( [ this, optionen ]( void *p, void *obj, MausEreignis me ) -> bool
|
|
|
+ {
|
|
|
+ if( me.id == ME_RLinks && !me.verarbeitet )
|
|
|
+ {
|
|
|
+ ( (Knopf*)obj )->removeStyle( Knopf::Style::Erlaubt );
|
|
|
+ getThis();
|
|
|
+ new AsynchronCall( [ this, optionen, obj ]()
|
|
|
+ {
|
|
|
+ Datei *d = klient->downloadGameCapture( "Snake", optionen );
|
|
|
+ ( (Knopf*)obj )->addStyle( Knopf::Style::Erlaubt );
|
|
|
+ if( wiederH )
|
|
|
+ wiederH = wiederH->release();
|
|
|
+ Text options = optionen.getText();
|
|
|
+ wiederH = new MenüWiederhohlung( schrift, screen, d, &options );
|
|
|
+ release();
|
|
|
+ } );
|
|
|
+ }
|
|
|
+ return 1;
|
|
|
+ } );
|
|
|
+ tmpWBT->addZeile( optionen.getText() );
|
|
|
+ tmpWBT->setZeichnungZ( 0, i + 1, scoreT );
|
|
|
+ tmpWBT->setZeichnungZ( 1, i + 1, spielerT );
|
|
|
+ tmpWBT->setZeichnungZ( 2, i + 1, ansehenK );
|
|
|
+ tmpWBT->setZeichnungZ( 3, i + 1, breiteT );
|
|
|
+ tmpWBT->setZeichnungZ( 4, i + 1, höheT );
|
|
|
+ tmpWBT->setZeichnungZ( 5, i + 1, zieleT );
|
|
|
+ tmpWBT->setZeichnungZ( 6, i + 1, anhangT );
|
|
|
+ tmpWBT->setZeichnungZ( 7, i + 1, tempoT );
|
|
|
+ }
|
|
|
+ tmpKlient->release();
|
|
|
+ tmpWBT->release();
|
|
|
+ tmpSchrift->release();
|
|
|
+ }, &asyncFinished );
|
|
|
InitDatei *opd = new InitDatei( "data/Minigames/Snake/data/optionen.ini" );
|
|
|
opd->laden();
|
|
|
if( !opd->wertExistiert( "Breite" ) )
|
|
@@ -373,8 +648,16 @@ void Men
|
|
|
|
|
|
void MenüStatistik::doMausEreignis( MausEreignis &me )
|
|
|
{
|
|
|
+ if( wiederH )
|
|
|
+ {
|
|
|
+ wiederH->doMausEreignis( me );
|
|
|
+ return;
|
|
|
+ }
|
|
|
ansicht->doMausEreignis( me );
|
|
|
optionen->doMausEreignis( me );
|
|
|
+ gesammtT->doMausEreignis( me );
|
|
|
+ optionenT->doMausEreignis( me );
|
|
|
+ worldBestT->doMausEreignis( me );
|
|
|
bool vera = me.verarbeitet;
|
|
|
releasen->doMausEreignis( me );
|
|
|
if( !vera && me.verarbeitet && me.id == ME_RLinks )
|
|
@@ -415,6 +698,13 @@ void Men
|
|
|
|
|
|
bool MenüStatistik::tick( double tickVal )
|
|
|
{
|
|
|
+ if( wiederH )
|
|
|
+ {
|
|
|
+ bool ret = wiederH->tick( tickVal );
|
|
|
+ if( wiederH->istBeendet() )
|
|
|
+ wiederH = wiederH->release();
|
|
|
+ return ret;
|
|
|
+ }
|
|
|
bool ret = ansicht->tick( tickVal );
|
|
|
ret |= optionen->tick( tickVal );
|
|
|
ret |= releasen->tick( tickVal );
|
|
@@ -423,11 +713,25 @@ bool Men
|
|
|
ret |= optionenT->tick( tickVal );
|
|
|
ret |= gesammtD->tick( tickVal );
|
|
|
ret |= optionenD->tick( tickVal );
|
|
|
+ ret |= worldBestT->tick( tickVal );
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
|
void MenüStatistik::render( Bild &zRObj )
|
|
|
{
|
|
|
+ if( wiederH )
|
|
|
+ {
|
|
|
+ wiederH->render( zRObj );
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ schrift->setSchriftSize( 12 );
|
|
|
+ Text weltScore = "Welt Score:";
|
|
|
+ schrift->setDrawPosition( 10, 40 );
|
|
|
+ schrift->renderText( &weltScore, zRObj, 0xFFFFFFFF );
|
|
|
+ Text localScore = "Dein Score:";
|
|
|
+ schrift->setDrawPosition( 10, 170 );
|
|
|
+ schrift->renderText( &localScore, zRObj, 0xFFFFFFFF );
|
|
|
+ worldBestT->render( zRObj );
|
|
|
if( !ansicht->getAuswahl() )
|
|
|
{
|
|
|
if( optionen->hatStyle( KontrollKnopf::Style::Selected ) )
|
|
@@ -455,6 +759,11 @@ bool Men
|
|
|
return beendet;
|
|
|
}
|
|
|
|
|
|
+bool MenüStatistik::istWiederhohlung() const
|
|
|
+{
|
|
|
+ return wiederH != 0;
|
|
|
+}
|
|
|
+
|
|
|
// Reference Counting
|
|
|
MenüStatistik *MenüStatistik::getThis()
|
|
|
{
|
|
@@ -689,14 +998,14 @@ Men
|
|
|
|
|
|
// Inhalt der Menü Klasse aus Menü.h
|
|
|
// Konstruktor
|
|
|
-Menü::Menü( Schrift *zSchrift, Bildschirm *zScreen )
|
|
|
+Menü::Menü( Schrift *zSchrift, Bildschirm *zScreen, MinigameKlientV *klient )
|
|
|
{
|
|
|
spielen = initKnopf( 350, 180, 100, 20, zSchrift, Knopf::Style::Sichtbar, "Spielen" );
|
|
|
- spielenF = new MenüSpiel( zSchrift, zScreen );
|
|
|
+ spielenF = new MenüSpiel( zSchrift, zScreen, klient->getThis() );
|
|
|
optionen = initKnopf( 350, 220, 100, 20, zSchrift, Knopf::Style::Sichtbar, "Optionen" );
|
|
|
optionenF = new MenüOptionen( zSchrift, zScreen );
|
|
|
statistik = initKnopf( 350, 260, 100, 20, zSchrift, Knopf::Style::Sichtbar, "Statistik" );
|
|
|
- statistikF = new MenüStatistik( zSchrift, zScreen );
|
|
|
+ statistikF = new MenüStatistik( zSchrift, zScreen, klient );
|
|
|
beenden = initKnopf( 350, 300, 100, 20, zSchrift, Knopf::Style::Sichtbar, "Beenden" );
|
|
|
ram = new LRahmen();
|
|
|
ram->setFarbe( 0xFFFFFFFF );
|
|
@@ -825,7 +1134,7 @@ bool Men
|
|
|
|
|
|
void Menü::render( Bild &zRObj )
|
|
|
{
|
|
|
- if( status != 3 && hintergrund )
|
|
|
+ if( status != 3 && hintergrund && ( status != 2 || !statistikF->istWiederhohlung() ) )
|
|
|
zRObj.drawBild( 0, 0, hintergrund->getBreite(), hintergrund->getHeight(), *hintergrund );
|
|
|
switch( status )
|
|
|
{
|
|
@@ -847,7 +1156,7 @@ void Men
|
|
|
optionenF->render( zRObj );
|
|
|
break;
|
|
|
case 2:
|
|
|
- if( hintergrund )
|
|
|
+ if( hintergrund && !statistikF->istWiederhohlung() )
|
|
|
zRObj.alphaRegion( 0, 0, hintergrund->getBreite(), hintergrund->getHeight(), 0xD0000000 );
|
|
|
statistikF->render( zRObj );
|
|
|
break;
|