Эх сурвалжийг харах

Minigame API erweitert so das jetzt loading overlays angezeigt werden können

Kolja Strohm 5 жил өмнө
parent
commit
748cb6b3d6

+ 34 - 4
KSGClient/NachLogin/MiniGames/Minigames.cpp

@@ -221,6 +221,8 @@ MiniGames::MiniGames( Schrift * zSchrift, Fenster * zNachLoginFenster, int x )
     mgl = 0;
     mgInitialized = 0;
     fullscreen = 0;
+    slo = 0;
+    minAlpha = 0;
     new MGSuchen( (MiniGames *)getThis() );
 }
 
@@ -287,6 +289,19 @@ void MiniGames::setFullScreenMode( bool enabled )
         nachLogin->showBars();
 }
 
+void MiniGames::showLoadingOverlay( unsigned char minAlpha )
+{
+    slo = 1;
+    this->minAlpha = minAlpha;
+    laden->setSichtbar( 1 );
+}
+
+void MiniGames::hideLoadingOverlay()
+{
+    slo = 0;
+    laden->setSichtbar( 0 );
+}
+
 void MiniGames::filter()
 {
     Text filter = suchName->zText()->getText();
@@ -381,6 +396,7 @@ bool MiniGames::tick( double z )
             mgl = (MGLaden *)mgl->release();
             nachLogin->zNachrichtenListe()->addNachricht( new Text( "Fehler" ), new Text( "Das Minigame konnte nicht geladen werden." ), new Text( "Ok" ) );
             mgInitialized = 0;
+            slo = 0;
         }
         else if( !mgInitialized )
         {
@@ -389,9 +405,10 @@ bool MiniGames::tick( double z )
             mgl->zGame()->setBildschirmZ( hauptScreen );
             mgInitialized = 1;
         }
-        laden->setSichtbar( 0 );
+        if( !slo )
+            laden->setSichtbar( 0 );
     }
-    if( mgl &&mgl->zGame() && !alpha2 )
+    if( mgl && mgl->zGame() && !alpha2 )
     {
         if( sichtbar && !animation )
             rend |= mgl->zGame()->tick( z );
@@ -503,8 +520,20 @@ bool MiniGames::tick( double z )
                 animation |= 0x1;
             }
         }
+        if( slo && alpha != minAlpha )
+        {
+            alpha -= val * 2;
+            if( alpha < minAlpha )
+                alpha = minAlpha;
+        }
+        else if( !slo && alpha != 255 )
+        {
+            alpha += val * 2;
+            if( alpha > 255 )
+                alpha = 255;
+        }
     }
-    if( mgl &&alpha2 )
+    if( mgl && alpha2 )
     {
         alpha2 -= val;
         if( alpha2 < 0 )
@@ -542,10 +571,11 @@ void MiniGames::render( Bild & zRObj )
     for( int i = 0; i < anz; i++ )
         games->z( i )->render( zRObj );
     zRObj.releaseAlpha();
-    laden->render( zRObj );
     if( mgl &&mgl->fertig() && mgl->zGame() )
         mgl->zGame()->render( zRObj );
     zRObj.releaseAlpha();
+    laden->setPosition( gr.x / 2 - laden->getBreite() / 2, gr.y / 2 - laden->getHeight() / 2 );
+    laden->render( zRObj );
     zRObj.releaseDrawOptions();
 }
 

+ 4 - 0
KSGClient/NachLogin/MiniGames/Minigames.h

@@ -73,6 +73,8 @@ private:
 	double tickVal;
     bool fullscreen;
 	int alpha2;
+    bool slo;
+    unsigned char minAlpha;
 
 public:
 	// Konstruktor
@@ -84,6 +86,8 @@ public:
 	void addMiniGame( MiniGame *mg );
 	void setAktuell( bool aktuell, int dg = 0 );
     void setFullScreenMode( bool enabled ) override;
+    void showLoadingOverlay( unsigned char minAlpha ) override;
+    void hideLoadingOverlay() override;
 	void filter();
 	void doMausEreignis( MausEreignis &me ) override;
 	void doTastaturEreignis( TastaturEreignis &te ) override;