Add fourth sequential asset expansion batch
This commit is contained in:
@@ -65,6 +65,16 @@ export function portraitTextureKey(key: string) {
|
||||
return portraitAssets[slug] ? `portrait-${slug}` : undefined;
|
||||
}
|
||||
|
||||
export function portraitTextureKeysForKey(key: string) {
|
||||
const slug = portraitSlugForKey(key);
|
||||
const prefix = `${slug}-`;
|
||||
const slugs = Object.keys(portraitAssets)
|
||||
.filter((candidate) => candidate === slug || candidate.startsWith(prefix))
|
||||
.sort();
|
||||
|
||||
return Array.from(new Set(slugs.map((candidate) => `portrait-${candidate}`)));
|
||||
}
|
||||
|
||||
export function portraitKeyForSpeaker(speaker?: string) {
|
||||
return speaker ? speakerPortraitKeys[speaker] : undefined;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import Phaser from 'phaser';
|
||||
import { soundDirector } from '../audio/SoundDirector';
|
||||
import { portraitKeyForSpeaker, portraitTextureKey } from '../data/portraitAssets';
|
||||
import { portraitKeyForSpeaker, portraitTextureKeysForKey } from '../data/portraitAssets';
|
||||
import { storyBackgroundAssets, storyBackgroundKeysFor } from '../data/storyAssets';
|
||||
import { prologuePages, type PortraitKey, type StoryPage } from '../data/scenario';
|
||||
import { palette } from '../ui/palette';
|
||||
@@ -238,8 +238,7 @@ export class StoryScene extends Phaser.Scene {
|
||||
this.applyBackground(page);
|
||||
this.chapterText?.setText(page.chapter);
|
||||
|
||||
const portraitKey = this.pagePortraitKey(page);
|
||||
const textureKey = portraitKey ? portraitTextureKey(portraitKey) : undefined;
|
||||
const textureKey = this.pagePortraitTextureKey(page);
|
||||
|
||||
if (textureKey && this.textures.exists(textureKey)) {
|
||||
this.portraitFrame?.setVisible(true);
|
||||
@@ -268,6 +267,20 @@ export class StoryScene extends Phaser.Scene {
|
||||
return page.portrait ?? portraitKeyForSpeaker(page.speaker);
|
||||
}
|
||||
|
||||
private pagePortraitTextureKey(page: StoryPage) {
|
||||
const portraitKey = this.pagePortraitKey(page);
|
||||
if (!portraitKey) {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
const keys = portraitTextureKeysForKey(portraitKey).filter((key) => this.textures.exists(key));
|
||||
if (keys.length <= 1) {
|
||||
return keys[0];
|
||||
}
|
||||
|
||||
return keys[this.hashString(page.id) % keys.length];
|
||||
}
|
||||
|
||||
private pageBackgroundKey(page: StoryPage) {
|
||||
const keys = storyBackgroundKeysFor(page.background).filter((key) => this.textures.exists(key));
|
||||
if (keys.length <= 1) {
|
||||
|
||||
Reference in New Issue
Block a user