From 4107a66997803ab9d04b7ddc1d2cab2bfacd8c88 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Davy=20H=C3=A9lard?= Date: Wed, 6 Dec 2023 20:49:49 +0100 Subject: [PATCH] Start games without loading screen if assets are ready before half the fade-in --- .../loadingscreen-pixi-renderer.ts | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/GDJS/Runtime/pixi-renderers/loadingscreen-pixi-renderer.ts b/GDJS/Runtime/pixi-renderers/loadingscreen-pixi-renderer.ts index 8f6c532f5a47..9da6f52710f5 100644 --- a/GDJS/Runtime/pixi-renderers/loadingscreen-pixi-renderer.ts +++ b/GDJS/Runtime/pixi-renderers/loadingscreen-pixi-renderer.ts @@ -38,13 +38,17 @@ namespace gdjs { _lastFrameTimeInMs: float = 0; _progressPercent: float = 0; + private _isWatermarkEnabled: boolean; + constructor( runtimeGamePixiRenderer: gdjs.RuntimeGamePixiRenderer, imageManager: gdjs.PixiImageManager, loadingScreenData: LoadingScreenData, + isWatermarkEnabled: boolean, isFirstScene: boolean ) { this._loadingScreenData = loadingScreenData; + this._isWatermarkEnabled = isWatermarkEnabled; this._isFirstLayout = isFirstScene; this._loadingScreenContainer = new PIXI.Container(); this._pixiRenderer = runtimeGamePixiRenderer.getPIXIRenderer(); @@ -272,8 +276,22 @@ namespace gdjs { totalElapsedTime; this.setPercent(100); + const fadeInDuration = Math.min( + this._loadingScreenData.showGDevelopSplash + ? this._loadingScreenData.logoAndProgressLogoFadeInDelay + + this._loadingScreenData.logoAndProgressFadeInDuration + : Number.POSITIVE_INFINITY, + this._loadingScreenData.backgroundImageResourceName || + this._loadingScreenData.backgroundColor + ? this._loadingScreenData.backgroundFadeInDuration + : Number.POSITIVE_INFINITY + ); + // Ensure we have shown the loading screen for at least minDuration. - if (remainingTime <= 0) { + if ( + remainingTime <= 0 || + (this._isWatermarkEnabled && totalElapsedTime < fadeInDuration / 2) + ) { this._state = LoadingScreenState.FINISHED; return Promise.resolve(); }