Skip to content

Commit 126aa1e

Browse files
committed
fix no start after load.scenePlugin()
1 parent c49849f commit 126aa1e

File tree

2 files changed

+56
-37
lines changed

2 files changed

+56
-37
lines changed

src/DisplayListWatcher.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,12 @@ export class DisplayListWatcher extends Phaser.Plugins.ScenePlugin {
6060
events.on(SceneEvents.START, this.start, this)
6161
events.on(SceneEvents.SHUTDOWN, this.stop, this)
6262
events.on(SceneEvents.DESTROY, this.destroy, this)
63+
64+
console.debug('isBooted', this.systems.settings.isBooted)
65+
66+
if (this.systems.settings.isBooted) {
67+
this.start()
68+
}
6369
}
6470

6571
startIfFontWasAdded(cache, key) {

src/DisplayListWatcher.test.js

Lines changed: 50 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -43,37 +43,7 @@ vi.mock('phaser', () => {
4343
this.pluginManager = pluginManager
4444
this.game = pluginManager.game
4545
this.scene = scene
46-
this.systems = {
47-
cache: {
48-
bitmapFont: {
49-
events: new EventEmitter(),
50-
add: vi.fn(),
51-
exists: vi.fn().mockReturnValue(true)
52-
}
53-
},
54-
events: new EventEmitter(),
55-
input: {
56-
keyboard: Object.assign(new EventEmitter(), {
57-
addKey: vi.fn(() => new EventEmitter()),
58-
removeKey: vi.fn().mockReturnThis()
59-
})
60-
},
61-
make: {
62-
bitmapText: vi.fn(() => ({
63-
destroy: vi.fn(),
64-
renderCanvas: vi.fn(),
65-
renderWebGL: vi.fn(),
66-
setText: vi.fn().mockReturnThis()
67-
}))
68-
},
69-
renderer: { type: Phaser.WEBGL },
70-
scale: { width: 1024, height: 768 },
71-
settings: { key: 'testScene' },
72-
textures: Object.assign(new EventEmitter(), {
73-
addBase64: vi.fn().mockReturnThis(),
74-
exists: vi.fn().mockReturnValue(true)
75-
})
76-
}
46+
this.systems = scene.sys
7747
}
7848
}
7949
},
@@ -145,16 +115,35 @@ describe('new DisplayListWatcher(scene, pluginManager)', () => {
145115
game.plugins = pluginManager
146116
scene = {
147117
sys: {
118+
cache: {
119+
bitmapFont: {
120+
events: new EventEmitter(),
121+
add: vi.fn(),
122+
exists: vi.fn().mockReturnValue(true)
123+
}
124+
},
148125
events: new EventEmitter(),
149-
input: { keyboard: { addKey: () => new EventEmitter() } },
126+
input: {
127+
keyboard: Object.assign(new EventEmitter(), {
128+
addKey: vi.fn(() => new EventEmitter()),
129+
removeKey: vi.fn().mockReturnThis()
130+
})
131+
},
150132
make: {
151-
bitmapText: () => {
152-
return { setText: vi.fn().mockReturnThis(), destroy: vi.fn() }
153-
}
133+
bitmapText: vi.fn(() => ({
134+
destroy: vi.fn(),
135+
renderCanvas: vi.fn(),
136+
renderWebGL: vi.fn(),
137+
setText: vi.fn().mockReturnThis()
138+
}))
154139
},
155-
renderer: { type: 2 },
140+
renderer: { type: Phaser.WEBGL },
156141
scale: { width: 1024, height: 768 },
157-
settings: { key: 'default' }
142+
settings: { key: 'testScene', isBooted: false },
143+
textures: Object.assign(new EventEmitter(), {
144+
addBase64: vi.fn().mockReturnThis(),
145+
exists: vi.fn().mockReturnValue(true)
146+
})
158147
}
159148
}
160149

@@ -289,6 +278,30 @@ describe('new DisplayListWatcher(scene, pluginManager)', () => {
289278
plugin.destroy()
290279
})
291280

281+
test('boot() calls start() if the scene has already booted', () => {
282+
const plugin = new DisplayListWatcher(scene, pluginManager)
283+
const startSpy = vi.spyOn(plugin, 'start')
284+
285+
scene.sys.settings.key = 'bootedScene'
286+
scene.sys.settings.isBooted = true
287+
288+
plugin.boot()
289+
290+
expect(startSpy).toHaveBeenCalledTimes(1)
291+
})
292+
293+
test('boot() does not call start() if the scene has not booted', () => {
294+
const plugin = new DisplayListWatcher(scene, pluginManager)
295+
const startSpy = vi.spyOn(plugin, 'start')
296+
297+
scene.sys.settings.key = 'unbootedScene'
298+
scene.sys.settings.isBooted = false
299+
300+
plugin.boot()
301+
302+
expect(startSpy).not.toHaveBeenCalled()
303+
})
304+
292305
test('after boot(), scene START event causes plugin start()', () => {
293306
const plugin = new DisplayListWatcher(scene, pluginManager)
294307
const startSpy = vi.spyOn(plugin, 'start')

0 commit comments

Comments
 (0)