🔧 FIX: PrologueScene - Added Hardcoded Fallback Dialogue!
PROBLEM: prologue.json missing → PrologueScene crashed SOLUTION: Added fallback hardcoded Slovenian dialogue ✅ NEW FEATURES: - Fallback dialogue when JSON missing - 6 intro scenes (Narrator + Kai) - Story: Leto 2084, virus, Ana missing, Kai searching - Background colors for atmosphere - Character portraits (emoji for now) - Shake effect on lab chaos scene FLOW: 1. Menu → NEW GAME 2. PrologueScene starts ✅ 3. Shows intro story (6 dialogues) 4. Press ENTER/CLICK to advance 5. ESC to skip → GameScene 6. After prologue → GameScene Intro besedilo zdaj dela! 🎬
This commit is contained in:
@@ -31,19 +31,12 @@ class PrologueScene extends Phaser.Scene {
|
|||||||
}
|
}
|
||||||
|
|
||||||
preload() {
|
preload() {
|
||||||
this.load.json('prologue_data', 'assets/dialogue/prologue.json');
|
// Try to load JSON, but we'll use fallback if it doesn't exist
|
||||||
|
this.load.on('loaderror', (file) => {
|
||||||
// Dynamically load audio based on JSON content
|
console.warn(`⚠️ Failed to load: ${file.key}`);
|
||||||
this.load.on('filecomplete-json-prologue_data', (key, type, data) => {
|
|
||||||
if (Array.isArray(data)) {
|
|
||||||
data.forEach(line => {
|
|
||||||
if (line.id) {
|
|
||||||
// Assuming .wav format as generated by our script
|
|
||||||
this.load.audio(line.id, `assets/audio/voiceover/prologue/${line.id}.wav`);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
this.load.json('prologue_data', 'assets/dialogue/prologue.json');
|
||||||
}
|
}
|
||||||
|
|
||||||
create() {
|
create() {
|
||||||
@@ -58,12 +51,57 @@ class PrologueScene extends Phaser.Scene {
|
|||||||
// Black background
|
// Black background
|
||||||
this.add.rectangle(0, 0, width, height, 0x000000).setOrigin(0);
|
this.add.rectangle(0, 0, width, height, 0x000000).setOrigin(0);
|
||||||
|
|
||||||
// Initialize dialogue data from JSON
|
// Initialize dialogue data from JSON OR fallback
|
||||||
this.dialogueData = this.cache.json.get('prologue_data');
|
this.dialogueData = this.cache.json.get('prologue_data');
|
||||||
|
|
||||||
if (!this.dialogueData) {
|
if (!this.dialogueData) {
|
||||||
console.error('❌ Failed to load prologue dialogue data!');
|
console.warn('⚠️ Using fallback hardcoded dialogue!');
|
||||||
this.dialogueData = [];
|
// FALLBACK: Hardcoded Slovenian dialogue
|
||||||
|
this.dialogueData = [
|
||||||
|
{
|
||||||
|
speaker: "NARRATOR",
|
||||||
|
text: "Leto 2084. Svet je padel.",
|
||||||
|
background: "lab",
|
||||||
|
bgColor: 0x1a1a2e,
|
||||||
|
portrait: null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
speaker: "NARRATOR",
|
||||||
|
text: "Zombi virus je uničil civilizacijo. Preživeli se borijo za vsak nov dan.",
|
||||||
|
background: "ruins",
|
||||||
|
bgColor: 0x2d1b00,
|
||||||
|
portrait: null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
speaker: "KAI",
|
||||||
|
text: "Ime mi je Kai. Z sestro Ano sva raziskovala virus... potem se je vse spremenilo.",
|
||||||
|
background: "lab",
|
||||||
|
bgColor: 0x1a1a2e,
|
||||||
|
portrait: "kai_neutral"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
speaker: "KAI",
|
||||||
|
text: "Zombiji so vdrli v laboratorij. Ana... Ana je izginila.",
|
||||||
|
background: "lab_chaos",
|
||||||
|
bgColor: 0x3d0000,
|
||||||
|
portrait: "kai_worried",
|
||||||
|
shake: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
speaker: "KAI",
|
||||||
|
text: "Moram jo najti. Karkoli se je zgodilo... ostajam njen brat.",
|
||||||
|
background: "farm",
|
||||||
|
bgColor: 0x2d4a1e,
|
||||||
|
portrait: "kai_determined"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
speaker: "NARRATOR",
|
||||||
|
text: "In tako se začne Kaijevo potovanje skozi Mrtvo dolino...",
|
||||||
|
background: "farm",
|
||||||
|
bgColor: 0x2d4a1e,
|
||||||
|
portrait: null
|
||||||
|
}
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create UI elements
|
// Create UI elements
|
||||||
@@ -226,7 +264,7 @@ class PrologueScene extends Phaser.Scene {
|
|||||||
// Wait for audio to finish OR standard delay?
|
// Wait for audio to finish OR standard delay?
|
||||||
// Ideally wait for audio duration, but fallback to delay
|
// Ideally wait for audio duration, but fallback to delay
|
||||||
let delay = this.autoAdvanceDelay;
|
let delay = this.autoAdvanceDelay;
|
||||||
if (this.currentVoice && this.currentVoice.duration) {
|
if (this.currentVoice && this.currentVoice.duration) {
|
||||||
// Add a small buffer after speech ends
|
// Add a small buffer after speech ends
|
||||||
delay = (this.currentVoice.duration * 1000) + 1000;
|
delay = (this.currentVoice.duration * 1000) + 1000;
|
||||||
}
|
}
|
||||||
@@ -249,8 +287,8 @@ class PrologueScene extends Phaser.Scene {
|
|||||||
|
|
||||||
// Safety check for empty text
|
// Safety check for empty text
|
||||||
if (!text) {
|
if (!text) {
|
||||||
this.canAdvance = true;
|
this.canAdvance = true;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const timer = this.time.addEvent({
|
const timer = this.time.addEvent({
|
||||||
|
|||||||
Reference in New Issue
Block a user