From 9439441b8d8a5508a3b41ff9b15c46b782ea2ab2 Mon Sep 17 00:00:00 2001 From: Erik Onarheim Date: Sat, 4 May 2024 19:08:41 -0500 Subject: [PATCH] fix: Loader suppressPlayButton is now respected --- CHANGELOG.md | 2 +- sandbox/src/game.ts | 1 + src/engine/Engine.ts | 2 +- src/spec/LoaderSpec.ts | 43 +++++++++++++++++++++++++++++++++++++++++- 4 files changed, 45 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fd1793dfc..a7480c548 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,7 +24,7 @@ This project adheres to [Semantic Versioning](http://semver.org/). ### Fixed -- +- Fixed issue where `ex.Loader.suppressPlayButton = true` did not work. Only using the `ex.Engine({suppressPlayButton: true})` worked ### Updates diff --git a/sandbox/src/game.ts b/sandbox/src/game.ts index 357d131cf..6bfa3fff6 100644 --- a/sandbox/src/game.ts +++ b/sandbox/src/game.ts @@ -156,6 +156,7 @@ var boot = new ex.Loader(); // fullscreenAfterLoad: true, // fullscreenContainer: document.getElementById('container') // }); +// boot.suppressPlayButton = true; boot.addResource(heartImageSource); boot.addResource(heartTex); boot.addResource(imageRun); diff --git a/src/engine/Engine.ts b/src/engine/Engine.ts index 07dd39219..98ea3f3b8 100644 --- a/src/engine/Engine.ts +++ b/src/engine/Engine.ts @@ -1795,7 +1795,7 @@ O|===|* >________________>\n\ this._hideLoader = hideLoader; if (loader instanceof Loader) { - loader.suppressPlayButton = this._suppressPlayButton; + loader.suppressPlayButton = loader.suppressPlayButton || this._suppressPlayButton; } this._loader.onInitialize(this); diff --git a/src/spec/LoaderSpec.ts b/src/spec/LoaderSpec.ts index b65fa2064..8d5b08b1c 100644 --- a/src/spec/LoaderSpec.ts +++ b/src/spec/LoaderSpec.ts @@ -1,11 +1,24 @@ import * as ex from '@excalibur'; -import { ExcaliburMatchers, ensureImagesLoaded } from 'excalibur-jasmine'; +import { ExcaliburAsyncMatchers, ExcaliburMatchers, ensureImagesLoaded } from 'excalibur-jasmine'; import { TestUtils } from './util/TestUtils'; describe('A loader', () => { let engine: ex.Engine; + + const reset = () => { + engine.stop(); + engine.dispose(); + engine = null; + (window).devicePixelRatio = 1; + const playButton = document.getElementById('excalibur-play'); + if (playButton) { + const body = playButton.parentNode.parentNode; + body.removeChild(playButton.parentNode); + } + }; beforeEach(() => { jasmine.addMatchers(ExcaliburMatchers); + jasmine.addAsyncMatchers(ExcaliburAsyncMatchers); engine = TestUtils.engine(); }); @@ -342,4 +355,32 @@ describe('A loader', () => { fail(); }); }); + + it('should not show the play button when suppressPlayButton is turned on', (done) => { + reset(); + engine = TestUtils.engine({ suppressPlayButton: false }); + engine.currentScene.add( + new ex.Actor({ + pos: new ex.Vector(250, 250), + width: 20, + height: 20, + color: ex.Color.Red + }) + ); + + const testClock = engine.clock as ex.TestClock; + const loader = new ex.Loader([new ex.ImageSource('src/spec/images/SpriteSpec/icon.png')]); + loader.suppressPlayButton = true; + + TestUtils.runToReady(engine, loader).then(() => { + // With suppress play there is another 500 ms delay in engine load() + testClock.step(1); + engine.graphicsContext.flush(); + expectAsync(engine.canvas) + .toEqualImage('src/spec/images/EngineSpec/engine-suppress-play.png') + .then(() => { + done(); + }); + }); + }); });