fix encounters image URL
Browse files
src/lib/components/Pages/Encounters.svelte
CHANGED
|
@@ -13,6 +13,7 @@
|
|
| 13 |
let encounters: Encounter[] = [];
|
| 14 |
let isLoading = true;
|
| 15 |
let isRefreshing = false;
|
|
|
|
| 16 |
|
| 17 |
// Battle state
|
| 18 |
let showBattle = false;
|
|
@@ -41,12 +42,41 @@
|
|
| 41 |
console.log('Using existing encounters:', currentEncounters.length);
|
| 42 |
encounters = currentEncounters;
|
| 43 |
}
|
|
|
|
|
|
|
|
|
|
| 44 |
} catch (error) {
|
| 45 |
console.error('Error loading encounters:', error);
|
| 46 |
}
|
| 47 |
isLoading = false;
|
| 48 |
}
|
| 49 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 50 |
async function handleRefresh() {
|
| 51 |
isRefreshing = true;
|
| 52 |
try {
|
|
@@ -54,6 +84,9 @@
|
|
| 54 |
console.log('Force refreshing encounters...');
|
| 55 |
encounters = await EncounterService.generateEncounters();
|
| 56 |
|
|
|
|
|
|
|
|
|
|
| 57 |
// Update game state with new refresh time
|
| 58 |
const gameState = await getOrCreateGameState();
|
| 59 |
await db.gameState.update(gameState.id!, {
|
|
@@ -124,6 +157,7 @@
|
|
| 124 |
try {
|
| 125 |
await EncounterService.forceEncounterRefresh();
|
| 126 |
encounters = await EncounterService.generateEncounters();
|
|
|
|
| 127 |
} catch (error) {
|
| 128 |
console.error('Error refreshing encounters:', error);
|
| 129 |
}
|
|
@@ -381,27 +415,25 @@
|
|
| 381 |
{#if encounter.type === EncounterType.WILD_PICLET && encounter.picletTypeId}
|
| 382 |
{#if encounter.title === 'Your First Piclet!'}
|
| 383 |
<div class="piclet-silhouette">
|
| 384 |
-
|
| 385 |
-
|
| 386 |
-
|
| 387 |
-
|
| 388 |
-
|
| 389 |
-
|
| 390 |
-
|
| 391 |
-
|
| 392 |
-
|
| 393 |
-
<div class="silhouette-fallback" style="display: none">?</div>
|
| 394 |
</div>
|
| 395 |
{:else}
|
| 396 |
-
|
| 397 |
-
|
| 398 |
-
|
| 399 |
-
|
| 400 |
-
|
| 401 |
-
|
| 402 |
-
}
|
| 403 |
-
|
| 404 |
-
<div class="fallback-icon" style="display: none">{getEncounterIcon(encounter)}</div>
|
| 405 |
{/if}
|
| 406 |
{:else}
|
| 407 |
<span class="type-icon">{getEncounterIcon(encounter)}</span>
|
|
|
|
| 13 |
let encounters: Encounter[] = [];
|
| 14 |
let isLoading = true;
|
| 15 |
let isRefreshing = false;
|
| 16 |
+
let monsterImages: Map<string, string> = new Map();
|
| 17 |
|
| 18 |
// Battle state
|
| 19 |
let showBattle = false;
|
|
|
|
| 42 |
console.log('Using existing encounters:', currentEncounters.length);
|
| 43 |
encounters = currentEncounters;
|
| 44 |
}
|
| 45 |
+
|
| 46 |
+
// Load monster images for wild piclet encounters
|
| 47 |
+
await loadMonsterImages();
|
| 48 |
} catch (error) {
|
| 49 |
console.error('Error loading encounters:', error);
|
| 50 |
}
|
| 51 |
isLoading = false;
|
| 52 |
}
|
| 53 |
|
| 54 |
+
async function loadMonsterImages() {
|
| 55 |
+
const wildEncounters = encounters.filter(e =>
|
| 56 |
+
e.type === EncounterType.WILD_PICLET && e.picletTypeId
|
| 57 |
+
);
|
| 58 |
+
|
| 59 |
+
for (const encounter of wildEncounters) {
|
| 60 |
+
if (!encounter.picletTypeId) continue;
|
| 61 |
+
|
| 62 |
+
// Convert picletTypeId to monster name format
|
| 63 |
+
const monsterName = encounter.picletTypeId
|
| 64 |
+
.replace(/-/g, ' ')
|
| 65 |
+
.replace(/\b\w/g, l => l.toUpperCase());
|
| 66 |
+
|
| 67 |
+
const monster = await db.monsters
|
| 68 |
+
.where('name')
|
| 69 |
+
.equals(monsterName)
|
| 70 |
+
.first();
|
| 71 |
+
|
| 72 |
+
if (monster && monster.imageData) {
|
| 73 |
+
monsterImages.set(encounter.picletTypeId, monster.imageData);
|
| 74 |
+
}
|
| 75 |
+
}
|
| 76 |
+
// Trigger reactive update
|
| 77 |
+
monsterImages = monsterImages;
|
| 78 |
+
}
|
| 79 |
+
|
| 80 |
async function handleRefresh() {
|
| 81 |
isRefreshing = true;
|
| 82 |
try {
|
|
|
|
| 84 |
console.log('Force refreshing encounters...');
|
| 85 |
encounters = await EncounterService.generateEncounters();
|
| 86 |
|
| 87 |
+
// Load monster images for new encounters
|
| 88 |
+
await loadMonsterImages();
|
| 89 |
+
|
| 90 |
// Update game state with new refresh time
|
| 91 |
const gameState = await getOrCreateGameState();
|
| 92 |
await db.gameState.update(gameState.id!, {
|
|
|
|
| 157 |
try {
|
| 158 |
await EncounterService.forceEncounterRefresh();
|
| 159 |
encounters = await EncounterService.generateEncounters();
|
| 160 |
+
await loadMonsterImages();
|
| 161 |
} catch (error) {
|
| 162 |
console.error('Error refreshing encounters:', error);
|
| 163 |
}
|
|
|
|
| 415 |
{#if encounter.type === EncounterType.WILD_PICLET && encounter.picletTypeId}
|
| 416 |
{#if encounter.title === 'Your First Piclet!'}
|
| 417 |
<div class="piclet-silhouette">
|
| 418 |
+
{#if monsterImages.has(encounter.picletTypeId)}
|
| 419 |
+
<img
|
| 420 |
+
src={monsterImages.get(encounter.picletTypeId)}
|
| 421 |
+
alt="Mystery Piclet"
|
| 422 |
+
class="silhouette-img"
|
| 423 |
+
/>
|
| 424 |
+
{:else}
|
| 425 |
+
<div class="silhouette-fallback">?</div>
|
| 426 |
+
{/if}
|
|
|
|
| 427 |
</div>
|
| 428 |
{:else}
|
| 429 |
+
{#if monsterImages.has(encounter.picletTypeId)}
|
| 430 |
+
<img
|
| 431 |
+
src={monsterImages.get(encounter.picletTypeId)}
|
| 432 |
+
alt="Wild Piclet"
|
| 433 |
+
/>
|
| 434 |
+
{:else}
|
| 435 |
+
<div class="fallback-icon">{getEncounterIcon(encounter)}</div>
|
| 436 |
+
{/if}
|
|
|
|
| 437 |
{/if}
|
| 438 |
{:else}
|
| 439 |
<span class="type-icon">{getEncounterIcon(encounter)}</span>
|