From 6684696f73474f0efc51a50c5b8ec42cc6b997fe Mon Sep 17 00:00:00 2001
From: Paolo Brasolin <paolo.brasolin@eurac.edu>
Date: Thu, 14 Apr 2022 09:37:35 +0200
Subject: [PATCH] feat: #fe modernize asset handling

---
 frontend/src/js/assets.ts           | 77 +++++++++++++++++++++++++++++
 frontend/src/js/background_scene.ts | 25 +++++-----
 frontend/src/js/fight_scene.ts      | 33 +++++++------
 frontend/src/js/game_over_scene.ts  |  3 +-
 frontend/src/js/welcome_scene.ts    |  3 +-
 5 files changed, 111 insertions(+), 30 deletions(-)
 create mode 100644 frontend/src/js/assets.ts

diff --git a/frontend/src/js/assets.ts b/frontend/src/js/assets.ts
new file mode 100644
index 0000000..f88c7e9
--- /dev/null
+++ b/frontend/src/js/assets.ts
@@ -0,0 +1,77 @@
+import loBeep from "url:/public/assets/audio/Cancel 1.mp3";
+import mdBeep from "url:/public/assets/audio/Text 1.mp3";
+import hiBeep from "url:/public/assets/audio/Confirm 1.mp3";
+import hitCritter from "url:/public/assets/audio/Hit damage 1.mp3";
+import hitPlayer from "url:/public/assets/audio/Boss hit 1.mp3";
+import gameOver from "url:/public/assets/audio/Bubble heavy 2.mp3";
+
+export const SFX = {
+  LoBeep: loBeep as string,
+  MdBeep: mdBeep as string,
+  HiBeep: hiBeep as string,
+  HitCritter: hitCritter as string,
+  HitPlayer: hitPlayer as string,
+  GameOver: gameOver as string,
+};
+
+import buildup from "url:/public/assets/music/buildup.mp3";
+import loopOne from "url:/public/assets/music/loop.mp3";
+import loopTwo from "url:/public/assets/music/loopTwo.mp3";
+import loopThree from "url:/public/assets/music/loopThree.mp3";
+import failure from "url:/public/assets/music/loose.mp3";
+
+export const MFX = {
+  Buildup: buildup as string,
+  LoopOne: loopOne as string,
+  LoopTwo: loopTwo as string,
+  LoopThree: loopThree as string,
+  Failure: failure as string,
+};
+
+import oetzi from "url:/public/assets/sprites/player/oezi.png";
+import deer from "url:/public/assets/sprites/player/deer.png";
+import boar from "url:/public/assets/sprites/player/boar.png";
+import wolf from "url:/public/assets/sprites/player/wolf.png";
+import bear from "url:/public/assets/sprites/player/bear.png";
+import spearStill from "url:/public/assets/sprites/player/spear.png";
+import spearWobble from "url:/public/assets/sprites/player/spearhit.png";
+
+export const SPR = {
+  Oetzi: oetzi as string,
+  Deer: deer as string,
+  Boar: boar as string,
+  Wolf: wolf as string,
+  Bear: bear as string,
+  SpearStill: spearStill as string,
+  SpearWobble: spearWobble as string,
+};
+
+import l00 from "url:/public/assets/background_layers/Layer_0011_0.png";
+import l01 from "url:/public/assets/background_layers/Layer_0010_1.png";
+import l02 from "url:/public/assets/background_layers/Layer_0009_2.png";
+import l03 from "url:/public/assets/background_layers/Layer_0008_3.png";
+import l04 from "url:/public/assets/background_layers/Layer_0007_Lights.png";
+import l05 from "url:/public/assets/background_layers/Layer_0006_4.png";
+import l06 from "url:/public/assets/background_layers/Layer_0005_5.png";
+import l07 from "url:/public/assets/background_layers/Layer_0004_Lights.png";
+import l08 from "url:/public/assets/background_layers/Layer_0003_6.png";
+import l09 from "url:/public/assets/background_layers/Layer_0002_7.png";
+import l10 from "url:/public/assets/background_layers/Layer_0001_8.png";
+import l11 from "url:/public/assets/background_layers/Layer_0000_9.png";
+
+export const BKG = {
+  L00: l00 as string,
+  L01: l01 as string,
+  L02: l02 as string,
+  L03: l03 as string,
+  L04: l04 as string,
+  L05: l05 as string,
+  L06: l06 as string,
+  L07: l07 as string,
+  L08: l08 as string,
+  L09: l09 as string,
+  L10: l10 as string,
+  L11: l11 as string,
+};
+
+export default { SFX, MFX, SPR, BKG };
diff --git a/frontend/src/js/background_scene.ts b/frontend/src/js/background_scene.ts
index 1319081..3bd0597 100644
--- a/frontend/src/js/background_scene.ts
+++ b/frontend/src/js/background_scene.ts
@@ -1,19 +1,20 @@
 import "phaser";
+import { BKG } from "./assets";
 
 const LAYERS_HEIGHT = 793;
 const LAYERS = {
-  b00: "assets/background_layers/Layer_0011_0.png",
-  b01: "assets/background_layers/Layer_0010_1.png",
-  b02: "assets/background_layers/Layer_0009_2.png",
-  b03: "assets/background_layers/Layer_0008_3.png",
-  b04: "assets/background_layers/Layer_0007_Lights.png",
-  b05: "assets/background_layers/Layer_0006_4.png",
-  b06: "assets/background_layers/Layer_0005_5.png",
-  b07: "assets/background_layers/Layer_0004_Lights.png",
-  b08: "assets/background_layers/Layer_0003_6.png",
-  b09: "assets/background_layers/Layer_0002_7.png",
-  b10: "assets/background_layers/Layer_0001_8.png",
-  b11: "assets/background_layers/Layer_0000_9.png",
+  b00: BKG.L00,
+  b01: BKG.L01,
+  b02: BKG.L02,
+  b03: BKG.L03,
+  b04: BKG.L04,
+  b05: BKG.L05,
+  b06: BKG.L06,
+  b07: BKG.L07,
+  b08: BKG.L08,
+  b09: BKG.L09,
+  b10: BKG.L10,
+  b11: BKG.L11,
 };
 
 // prettier-ignore
diff --git a/frontend/src/js/fight_scene.ts b/frontend/src/js/fight_scene.ts
index 344c358..2a67223 100644
--- a/frontend/src/js/fight_scene.ts
+++ b/frontend/src/js/fight_scene.ts
@@ -12,6 +12,7 @@ import Foe from "./foe";
 import Typewriter from "./typewriter";
 import HUD from "./hud";
 import BackgroundScene from "./background_scene";
+import { SFX, MFX, SPR } from "./assets";
 
 const DEVICE_KEY = "OETZI/DEVICE_ID";
 
@@ -64,46 +65,46 @@ export default class FightScene extends Phaser.Scene {
   }
 
   preloadSoundsEffects() {
-    this.load.audio("sfx_lo_beep", "assets/audio/Cancel 1.mp3");
-    this.load.audio("sfx_md_beep", "assets/audio/Text 1.mp3");
-    this.load.audio("sfx_hi_beep", "assets/audio/Confirm 1.mp3");
-    this.load.audio("sfx_hit_critter", "assets/audio/Hit damage 1.mp3");
-    this.load.audio("sfx_hit_player", "assets/audio/Boss hit 1.mp3");
-    this.load.audio("sfx_game_over", "assets/audio/Bubble heavy 2.mp3");
+    this.load.audio("sfx_lo_beep", SFX.LoBeep);
+    this.load.audio("sfx_md_beep", SFX.MdBeep);
+    this.load.audio("sfx_hi_beep", SFX.HiBeep);
+    this.load.audio("sfx_hit_critter", SFX.HitCritter);
+    this.load.audio("sfx_hit_player", SFX.HitPlayer);
+    this.load.audio("sfx_game_over", SFX.GameOver);
   }
 
   preloadMusicThemes() {
-    this.load.audio("bkg_main_1", "assets/music/loop.mp3");
-    this.load.audio("bkg_main_2", "assets/music/loopTwo.mp3");
-    this.load.audio("bkg_main_3", "assets/music/loopThree.mp3");
+    this.load.audio("bkg_main_1", MFX.LoopOne);
+    this.load.audio("bkg_main_2", MFX.LoopTwo);
+    this.load.audio("bkg_main_3", MFX.LoopThree);
   }
 
   preloadSprites() {
-    this.load.spritesheet("oezi", "assets/sprites/player/oezi.png", {
+    this.load.spritesheet("oezi", SPR.Oetzi, {
       frameWidth: 27,
       frameHeight: 35,
     });
-    this.load.spritesheet("deer", "assets/sprites/player/deer.png", {
+    this.load.spritesheet("deer", SPR.Deer, {
       frameWidth: 72,
       frameHeight: 52,
     });
-    this.load.spritesheet("boar", "assets/sprites/player/boar.png", {
+    this.load.spritesheet("boar", SPR.Boar, {
       frameWidth: 52,
       frameHeight: 28,
     });
-    this.load.spritesheet("wolf", "assets/sprites/player/wolf.png", {
+    this.load.spritesheet("wolf", SPR.Wolf, {
       frameWidth: 54,
       frameHeight: 35,
     });
-    this.load.spritesheet("bear", "assets/sprites/player/bear.png", {
+    this.load.spritesheet("bear", SPR.Bear, {
       frameWidth: 60,
       frameHeight: 31,
     });
-    this.load.spritesheet("spear", "assets/sprites/player/spear.png", {
+    this.load.spritesheet("spear", SPR.SpearStill, {
       frameWidth: 31,
       frameHeight: 7,
     });
-    this.load.spritesheet("spearhit", "assets/sprites/player/spearhit.png", {
+    this.load.spritesheet("spearhit", SPR.SpearWobble, {
       frameWidth: 14,
       frameHeight: 33,
     });
diff --git a/frontend/src/js/game_over_scene.ts b/frontend/src/js/game_over_scene.ts
index cfd7ca6..84210b7 100644
--- a/frontend/src/js/game_over_scene.ts
+++ b/frontend/src/js/game_over_scene.ts
@@ -1,6 +1,7 @@
 import "phaser";
 import BackgroundScene from "./background_scene";
 import { formatTime, ICONS } from "./hud";
+import { MFX } from "./assets";
 
 export default class GameOverScene extends Phaser.Scene {
   music!: Phaser.Sound.BaseSound;
@@ -10,7 +11,7 @@ export default class GameOverScene extends Phaser.Scene {
   }
 
   preload() {
-    this.load.audio("bkg_failure", "assets/music/loose.mp3");
+    this.load.audio("bkg_failure", MFX.Failure);
   }
 
   musicHardReplace(
diff --git a/frontend/src/js/welcome_scene.ts b/frontend/src/js/welcome_scene.ts
index 99316f8..fc84334 100644
--- a/frontend/src/js/welcome_scene.ts
+++ b/frontend/src/js/welcome_scene.ts
@@ -1,4 +1,5 @@
 import "phaser";
+import { MFX } from "./assets";
 
 export default class WelcomeScene extends Phaser.Scene {
   music!: Phaser.Sound.BaseSound;
@@ -8,7 +9,7 @@ export default class WelcomeScene extends Phaser.Scene {
   }
 
   preload() {
-    this.load.audio("bkg_buildup", "assets/music/buildup.mp3");
+    this.load.audio("bkg_buildup", MFX.Buildup);
   }
 
   musicHardReplace(
-- 
GitLab