Update gameplay wiring tests for procedural systems
This commit is contained in:
parent
8b5ba130d9
commit
8cc479fdee
@ -187,7 +187,7 @@ test('player and pirate broadsides use the cannonball image asset', async () =>
|
||||
|
||||
assert.match(source, /import cannonballUrl from '.\/assets\/cannonball\.png\?url'/);
|
||||
assert.match(source, /this\.load\.image\('cannonball', cannonballUrl\)/);
|
||||
assert.match(source, /this\.fireBroadside\(this\.player, side, this\.playerShots, 'cannonball'/);
|
||||
assert.match(source, /this\.fireBroadside\([\s\S]*?this\.player,[\s\S]*?this\.playerShots,[\s\S]*?'cannonball',[\s\S]*?this\.playerStats\?\.cannonDamage/);
|
||||
assert.match(source, /this\.fireBroadside\(pirate, side, this\.pirateShots, 'cannonball'/);
|
||||
assert.match(source, /shot\.setDepth\(8\)\.setDisplaySize\(14, 14\)/);
|
||||
assert.doesNotMatch(source, /generateTexture\('player-shot'/);
|
||||
@ -202,7 +202,7 @@ test('pirate cannonballs damage other pirates but ignore their source ship', asy
|
||||
assert.match(source, /const pirateShot = playerShot \? null : resolveTaggedProjectile\(first, second, 'pirate'\)/);
|
||||
assert.match(source, /if \(projectileOwner === 'pirate' && sourceShip === pirate\) return/);
|
||||
assert.match(source, /friendlyFire: projectileOwner === 'pirate'/);
|
||||
assert.match(source, /if \(projectileOwner === 'player'\) this\.defeated \+= 1/);
|
||||
assert.match(source, /if \(projectileOwner === 'player'\) \{[\s\S]*?this\.defeated \+= 1;[\s\S]*?this\.spawnSalvageWreck\(/);
|
||||
});
|
||||
|
||||
test('player uses the four-frame north-facing sheet as a forward propulsion animation', async () => {
|
||||
@ -216,7 +216,8 @@ test('player uses the four-frame north-facing sheet as a forward propulsion anim
|
||||
assert.match(source, /key: 'player-forward'/);
|
||||
assert.match(source, /generateFrameNumbers\('player-airship', \{ start: 0, end: 3 \}\)/);
|
||||
assert.match(source, /const forwardThrust = clamp\(this\.playerSpeed \/ PLAYER_MAX_SPEED, 0, 1\)/);
|
||||
assert.match(source, /this\.player\.anims\.timeScale = 0\.65 \+ forwardThrust \* 1\.35/);
|
||||
assert.match(source, /const effectiveForwardThrust = clamp\(this\.playerSpeed \/ stats\.maxSpeed, 0, 1\)/);
|
||||
assert.match(source, /this\.player\.anims\.timeScale = 0\.65 \+ effectiveForwardThrust \* 1\.35/);
|
||||
assert.match(source, /this\.player\.setFrame\(0\)/);
|
||||
assert.doesNotMatch(source, /key: 'player-idle'/);
|
||||
});
|
||||
@ -229,7 +230,8 @@ test('player propulsion smoke emits at world engine positions with per-particle
|
||||
assert.match(source, /frequency: -1/);
|
||||
assert.match(source, /this\.updatePlayerSmoke\(deltaMs\)/);
|
||||
assert.match(source, /const forwardThrust = clamp\(this\.playerSpeed \/ PLAYER_MAX_SPEED, 0, 1\)/);
|
||||
assert.match(source, /if \(this\.gameState !== 'playing' \|\| forwardThrust <= 0\.04\)/);
|
||||
assert.match(source, /const effectiveForwardThrust = clamp\([\s\S]*?this\.playerStats\?\.maxSpeed \|\| PLAYER_MAX_SPEED[\s\S]*?\)/);
|
||||
assert.match(source, /if \(this\.gameState !== 'playing' \|\| effectiveForwardThrust <= 0\.04\)/);
|
||||
assert.match(source, /const sternX = this\.player\.x - forwardX \* PLAYER_SMOKE_REAR_OFFSET/);
|
||||
assert.match(source, /const sternY = this\.player\.y - forwardY \* PLAYER_SMOKE_REAR_OFFSET/);
|
||||
assert.match(source, /PLAYER_SMOKE_ENGINE_OFFSET \* engineSide/);
|
||||
@ -250,8 +252,9 @@ test('environment physics adds wind, soft island collision, turbulence, and proj
|
||||
assert.match(source, /this\.createEnvironmentPhysics\(\)/);
|
||||
assert.match(source, /this\.physics\.add\.staticImage/);
|
||||
assert.match(source, /obstacle\.body\.setCircle\(island\.radius\)/);
|
||||
assert.match(source, /this\.physics\.add\.collider\(this\.player, obstacle, \(\) => \{[\s\S]*?this\.playerSpeed \*= 0\.7;/);
|
||||
assert.match(source, /this\.physics\.add\.collider\(this\.pirates, obstacle\)/);
|
||||
assert.match(source, /const islands = this\.world\?\.islands \|\| ENVIRONMENT_ISLANDS/);
|
||||
assert.match(source, /this\.physics\.add\.overlap\(this\.player, obstacle, \(\) => \{[\s\S]*?this\.playerSpeed \*= 0\.985;/);
|
||||
assert.doesNotMatch(source, /this\.physics\.add\.collider\(this\.pirates, obstacle\)/);
|
||||
assert.match(source, /this\.physics\.add\.overlap\(\s*this\.playerShots,[\s\S]*?this\.hitEnvironmentProjectile/);
|
||||
assert.match(source, /this\.environmentWind = environmentWindAt\(\{/);
|
||||
assert.match(source, /const pirateWind = environmentWindAt\(\{/);
|
||||
@ -260,6 +263,23 @@ test('environment physics adds wind, soft island collision, turbulence, and proj
|
||||
assert.match(source, /windSpeed: this\.environmentWind\?\.strength/);
|
||||
});
|
||||
|
||||
test('procedural world and ship progression are wired into live gameplay', async () => {
|
||||
const source = await read('src/game-v4.js');
|
||||
|
||||
assert.match(source, /generateWorld\(\{/);
|
||||
assert.match(source, /this\.player\.setPosition\(this\.world\.spawn\.x, this\.world\.spawn\.y\)/);
|
||||
assert.match(source, /pirateSpawnPointsForWave\(/);
|
||||
assert.match(source, /for \(const route of this\.world\.tradeRoutes\)/);
|
||||
assert.match(source, /for \(const territory of this\.world\.pirateTerritories\)/);
|
||||
assert.match(source, /this\.salvageWrecks = this\.physics\.add\.group\(\)/);
|
||||
assert.match(source, /collectSalvageWreck\(/);
|
||||
assert.match(source, /bestAffordableMarketUpgrade\(/);
|
||||
assert.match(source, /buyAndInstallModule\(/);
|
||||
assert.match(source, /installModule\(this\.progression, moduleId\)/);
|
||||
assert.match(source, /this\.playerBroadsideReloadMs = this\.playerStats\.reloadMs/);
|
||||
assert.match(source, /stats\.windExposure/);
|
||||
});
|
||||
|
||||
test('rolling clouds include large dense banks that phase in and out with the wind', async () => {
|
||||
const source = await read('src/game-v4.js');
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user