Fraser commited on
Commit
2652bf8
·
1 Parent(s): c61508c

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
- <img
385
- src={`https://storage.googleapis.com/piclodia/${encounter.picletTypeId}.png`}
386
- alt="Mystery Piclet"
387
- class="silhouette-img"
388
- on:error={(e) => {
389
- e.currentTarget.style.display = 'none';
390
- e.currentTarget.nextElementSibling.style.display = 'block';
391
- }}
392
- />
393
- <div class="silhouette-fallback" style="display: none">?</div>
394
  </div>
395
  {:else}
396
- <img
397
- src={`https://storage.googleapis.com/piclodia/${encounter.picletTypeId}.png`}
398
- alt="Wild Piclet"
399
- on:error={(e) => {
400
- e.currentTarget.style.display = 'none';
401
- e.currentTarget.nextElementSibling.style.display = 'block';
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>