From c1dc600f288f0a0af1aa3073d23727a40ca77b2f Mon Sep 17 00:00:00 2001
From: Dennis Postma <dennis@directonline.io>
Date: Fri, 20 Sep 2024 12:30:11 +0200
Subject: [PATCH] Fixes for dynamic zone asset loading

---
 package-lock.json            | 146 +++++++++++++++++------------------
 src/components/zone/Zone.vue |  27 ++++---
 src/screens/Game.vue         |  37 +++------
 3 files changed, 101 insertions(+), 109 deletions(-)

diff --git a/package-lock.json b/package-lock.json
index 30b26ed..ea53fa8 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1436,9 +1436,9 @@
       }
     },
     "node_modules/@rollup/rollup-android-arm-eabi": {
-      "version": "4.22.0",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.22.0.tgz",
-      "integrity": "sha512-/IZQvg6ZR0tAkEi4tdXOraQoWeJy9gbQ/cx4I7k9dJaCk9qrXEcdouxRVz5kZXt5C2bQ9pILoAA+KB4C/d3pfw==",
+      "version": "4.22.1",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.22.1.tgz",
+      "integrity": "sha512-GrXxNVBes13Q3wSBjdZlmu4VulFhfNs1eP2/pX5dmx6cE1XgfV2/BfqdGt4d2Z7Zqp+qnYSf7zvIB4buc+2DwA==",
       "cpu": [
         "arm"
       ],
@@ -1450,9 +1450,9 @@
       ]
     },
     "node_modules/@rollup/rollup-android-arm64": {
-      "version": "4.22.0",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.22.0.tgz",
-      "integrity": "sha512-ETHi4bxrYnvOtXeM7d4V4kZWixib2jddFacJjsOjwbgYSRsyXYtZHC4ht134OsslPIcnkqT+TKV4eU8rNBKyyQ==",
+      "version": "4.22.1",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.22.1.tgz",
+      "integrity": "sha512-Cr/dpKRc4tjK13SCZJrSDXSaKjL/fekn04BWMCJ+Pj4vPCp8rixvtArrnWUYycOdRNi7kx3MSClcvEP7C2nvCw==",
       "cpu": [
         "arm64"
       ],
@@ -1464,9 +1464,9 @@
       ]
     },
     "node_modules/@rollup/rollup-darwin-arm64": {
-      "version": "4.22.0",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.22.0.tgz",
-      "integrity": "sha512-ZWgARzhSKE+gVUX7QWaECoRQsPwaD8ZR0Oxb3aUpzdErTvlEadfQpORPXkKSdKbFci9v8MJfkTtoEHnnW9Ulng==",
+      "version": "4.22.1",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.22.1.tgz",
+      "integrity": "sha512-IwEyoeCZoO1lpY5Er5t3UK/Aq5q2W/ubLmu3pYW4as0htn4NbJagBaVNr1aVhRTXUxrYvcPhxQCqodShnocLdA==",
       "cpu": [
         "arm64"
       ],
@@ -1478,9 +1478,9 @@
       ]
     },
     "node_modules/@rollup/rollup-darwin-x64": {
-      "version": "4.22.0",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.22.0.tgz",
-      "integrity": "sha512-h0ZAtOfHyio8Az6cwIGS+nHUfRMWBDO5jXB8PQCARVF6Na/G6XS2SFxDl8Oem+S5ZsHQgtsI7RT4JQnI1qrlaw==",
+      "version": "4.22.1",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.22.1.tgz",
+      "integrity": "sha512-LSbJhEOTz557VBcJOWspdGyiFbMTNgLxbWnup7bDj1elpNTK04E3M1qLlvGzPKPmk+uG6XlbT8xAUSKkyn0g8w==",
       "cpu": [
         "x64"
       ],
@@ -1492,9 +1492,9 @@
       ]
     },
     "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
-      "version": "4.22.0",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.22.0.tgz",
-      "integrity": "sha512-9pxQJSPwFsVi0ttOmqLY4JJ9pg9t1gKhK0JDbV1yUEETSx55fdyCjt39eBQ54OQCzAF0nVGO6LfEH1KnCPvelA==",
+      "version": "4.22.1",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.22.1.tgz",
+      "integrity": "sha512-F4DgRk//u604Np1eFoGUzE9TgGE6LMvjnX2tM24ePB34JlED9utc4T3iK5x8CWC/agH+zuN7q/hJF5AtWR+JOA==",
       "cpu": [
         "arm"
       ],
@@ -1506,9 +1506,9 @@
       ]
     },
     "node_modules/@rollup/rollup-linux-arm-musleabihf": {
-      "version": "4.22.0",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.22.0.tgz",
-      "integrity": "sha512-YJ5Ku5BmNJZb58A4qSEo3JlIG4d3G2lWyBi13ABlXzO41SsdnUKi3HQHe83VpwBVG4jHFTW65jOQb8qyoR+qzg==",
+      "version": "4.22.1",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.22.1.tgz",
+      "integrity": "sha512-Gl5pbijcb6QOJRvHkmU/O1G65ZnKxwSHhPQRuGdmcxmX/mBM+wNHoai7wvpCoPVsdhkc+KUqgu/MydP8wovGAA==",
       "cpu": [
         "arm"
       ],
@@ -1520,9 +1520,9 @@
       ]
     },
     "node_modules/@rollup/rollup-linux-arm64-gnu": {
-      "version": "4.22.0",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.22.0.tgz",
-      "integrity": "sha512-U4G4u7f+QCqHlVg1Nlx+qapZy+QoG+NV6ux+upo/T7arNGwKvKP2kmGM4W5QTbdewWFgudQxi3kDNST9GT1/mg==",
+      "version": "4.22.1",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.22.1.tgz",
+      "integrity": "sha512-GsvZqPloVOrh3G2nmZmwNSNGqWLf3L3a0nFDO1zecwucAYxEFgZkrvqQrVMT+zUjChaHPBp0eoTOQMWSKFcV8w==",
       "cpu": [
         "arm64"
       ],
@@ -1534,9 +1534,9 @@
       ]
     },
     "node_modules/@rollup/rollup-linux-arm64-musl": {
-      "version": "4.22.0",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.22.0.tgz",
-      "integrity": "sha512-aQpNlKmx3amwkA3a5J6nlXSahE1ijl0L9KuIjVOUhfOh7uw2S4piR3mtpxpRtbnK809SBtyPsM9q15CPTsY7HQ==",
+      "version": "4.22.1",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.22.1.tgz",
+      "integrity": "sha512-+vZ1jrJeEEYLbMqeKDfgcl8v7zjymdAGTr7xUdQL6c4nC+S+BZHo3Mrp/9ij2qpAveC0Iaz9DIiFplcO0joapQ==",
       "cpu": [
         "arm64"
       ],
@@ -1548,9 +1548,9 @@
       ]
     },
     "node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
-      "version": "4.22.0",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.22.0.tgz",
-      "integrity": "sha512-9fx6Zj/7vve/Fp4iexUFRKb5+RjLCff6YTRQl4CoDhdMfDoobWmhAxQWV3NfShMzQk1Q/iCnageFyGfqnsmeqQ==",
+      "version": "4.22.1",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.22.1.tgz",
+      "integrity": "sha512-6psD9nKw+wLj9bMhArTkzKt5etA6kb+cBJQws4MovI9gQSRkdX4nyYZofBfgTtaZtymQl7uRfe1I75guePal5A==",
       "cpu": [
         "ppc64"
       ],
@@ -1562,9 +1562,9 @@
       ]
     },
     "node_modules/@rollup/rollup-linux-riscv64-gnu": {
-      "version": "4.22.0",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.22.0.tgz",
-      "integrity": "sha512-VWQiCcN7zBgZYLjndIEh5tamtnKg5TGxyZPWcN9zBtXBwfcGSZ5cHSdQZfQH/GB4uRxk0D3VYbOEe/chJhPGLQ==",
+      "version": "4.22.1",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.22.1.tgz",
+      "integrity": "sha512-xzbqImk1h5abj0bPU5XQVrqBhLHl2zTygG6+vES2TrgmNSiaPzn39aqI8QtdqmGYz507ZVI2qocTTfVwW23SmQ==",
       "cpu": [
         "riscv64"
       ],
@@ -1576,9 +1576,9 @@
       ]
     },
     "node_modules/@rollup/rollup-linux-s390x-gnu": {
-      "version": "4.22.0",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.22.0.tgz",
-      "integrity": "sha512-EHmPnPWvyYqncObwqrosb/CpH3GOjE76vWVs0g4hWsDRUVhg61hBmlVg5TPXqF+g+PvIbqkC7i3h8wbn4Gp2Fg==",
+      "version": "4.22.1",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.22.1.tgz",
+      "integrity": "sha512-Hz5iwqYv08PpEC75z0GAgLlOY+cLAb0PVx578mLW0naugNfG0WQqoDzQoJWiivmtTdgmwoH5YXDnjZJb7MDlhA==",
       "cpu": [
         "s390x"
       ],
@@ -1590,9 +1590,9 @@
       ]
     },
     "node_modules/@rollup/rollup-linux-x64-gnu": {
-      "version": "4.22.0",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.22.0.tgz",
-      "integrity": "sha512-tsSWy3YQzmpjDKnQ1Vcpy3p9Z+kMFbSIesCdMNgLizDWFhrLZIoN21JSq01g+MZMDFF+Y1+4zxgrlqPjid5ohg==",
+      "version": "4.22.1",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.22.1.tgz",
+      "integrity": "sha512-ot1DPlQZGGiZYNyE/PF3jbT6juuG0W5oiguHQEvjoZZ3+FSxMfdJnBz1P71QeqICSOlSFG9Z31oA/uXyuxDEVw==",
       "cpu": [
         "x64"
       ],
@@ -1604,9 +1604,9 @@
       ]
     },
     "node_modules/@rollup/rollup-linux-x64-musl": {
-      "version": "4.22.0",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.22.0.tgz",
-      "integrity": "sha512-anr1Y11uPOQrpuU8XOikY5lH4Qu94oS6j0xrulHk3NkLDq19MlX8Ng/pVipjxBJ9a2l3+F39REZYyWQFkZ4/fw==",
+      "version": "4.22.1",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.22.1.tgz",
+      "integrity": "sha512-euksHNkKlXS9RKKHSBBPtloSEUGPg1eRVGfOkXSSIj5W9LdkMfOefsTlVf2g8kuayZW/98nIJ83Fnou9OaZNXA==",
       "cpu": [
         "x64"
       ],
@@ -1618,9 +1618,9 @@
       ]
     },
     "node_modules/@rollup/rollup-win32-arm64-msvc": {
-      "version": "4.22.0",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.22.0.tgz",
-      "integrity": "sha512-7LB+Bh+Ut7cfmO0m244/asvtIGQr5pG5Rvjz/l1Rnz1kDzM02pSX9jPaS0p+90H5I1x4d1FkCew+B7MOnoatNw==",
+      "version": "4.22.1",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.22.1.tgz",
+      "integrity": "sha512-jDS/ShZxlA3HKtgm25CcbApOVsr/0Zkdu/E+3xK4UO0PT912yqyh7jNpTmZZJAiPDQoSDI9FOqrjSbnlpW6IFg==",
       "cpu": [
         "arm64"
       ],
@@ -1632,9 +1632,9 @@
       ]
     },
     "node_modules/@rollup/rollup-win32-ia32-msvc": {
-      "version": "4.22.0",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.22.0.tgz",
-      "integrity": "sha512-+3qZ4rer7t/QsC5JwMpcvCVPRcJt1cJrYS/TMJZzXIJbxWFQEVhrIc26IhB+5Z9fT9umfVc+Es2mOZgl+7jdJQ==",
+      "version": "4.22.1",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.22.1.tgz",
+      "integrity": "sha512-yNEeuvH2b+susSgUCfpRelIRjB1CmErHyqA7KsQ/NCjY401rpChVqw5df/H5AUPCKNDqgBMbtrtl9F6z7N9LTg==",
       "cpu": [
         "ia32"
       ],
@@ -1646,9 +1646,9 @@
       ]
     },
     "node_modules/@rollup/rollup-win32-x64-msvc": {
-      "version": "4.22.0",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.22.0.tgz",
-      "integrity": "sha512-YdicNOSJONVx/vuPkgPTyRoAPx3GbknBZRCOUkK84FJ/YTfs/F0vl/YsMscrB6Y177d+yDRcj+JWMPMCgshwrA==",
+      "version": "4.22.1",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.22.1.tgz",
+      "integrity": "sha512-UgdylcqjcgJSNMhrjMJpJ4T3zriTmiUd2COh1mJHwDShrhhMkpZ/j4M5e4GsvBFviaxtrJtufr0FnKfm2UfOSw==",
       "cpu": [
         "x64"
       ],
@@ -3343,9 +3343,9 @@
       }
     },
     "node_modules/electron-to-chromium": {
-      "version": "1.5.25",
-      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.25.tgz",
-      "integrity": "sha512-kMb204zvK3PsSlgvvwzI3wBIcAw15tRkYk+NQdsjdDtcQWTp2RABbMQ9rUBy8KNEOM+/E6ep+XC3AykiWZld4g==",
+      "version": "1.5.26",
+      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.26.tgz",
+      "integrity": "sha512-Z+OMe9M/V6Ep9n/52+b7lkvYEps26z4Yz3vjWL1V61W0q+VLF1pOHhMY17sa4roz4AWmULSI8E6SAojZA5L0YQ==",
       "dev": true,
       "license": "ISC"
     },
@@ -6028,9 +6028,9 @@
       }
     },
     "node_modules/rollup": {
-      "version": "4.22.0",
-      "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.22.0.tgz",
-      "integrity": "sha512-W21MUIFPZ4+O2Je/EU+GP3iz7PH4pVPUXSbEZdatQnxo29+3rsUjgrJmzuAZU24z7yRAnFN6ukxeAhZh/c7hzg==",
+      "version": "4.22.1",
+      "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.22.1.tgz",
+      "integrity": "sha512-rit4zY5uPX0jrzTidez3rFr0MD30Rpu3S8VxwXFDfBVAzkk9U28s5MF3/R6u5bIHN6CQnf7zbiwVQbqBkyrU/A==",
       "dev": true,
       "license": "MIT",
       "dependencies": {
@@ -6044,22 +6044,22 @@
         "npm": ">=8.0.0"
       },
       "optionalDependencies": {
-        "@rollup/rollup-android-arm-eabi": "4.22.0",
-        "@rollup/rollup-android-arm64": "4.22.0",
-        "@rollup/rollup-darwin-arm64": "4.22.0",
-        "@rollup/rollup-darwin-x64": "4.22.0",
-        "@rollup/rollup-linux-arm-gnueabihf": "4.22.0",
-        "@rollup/rollup-linux-arm-musleabihf": "4.22.0",
-        "@rollup/rollup-linux-arm64-gnu": "4.22.0",
-        "@rollup/rollup-linux-arm64-musl": "4.22.0",
-        "@rollup/rollup-linux-powerpc64le-gnu": "4.22.0",
-        "@rollup/rollup-linux-riscv64-gnu": "4.22.0",
-        "@rollup/rollup-linux-s390x-gnu": "4.22.0",
-        "@rollup/rollup-linux-x64-gnu": "4.22.0",
-        "@rollup/rollup-linux-x64-musl": "4.22.0",
-        "@rollup/rollup-win32-arm64-msvc": "4.22.0",
-        "@rollup/rollup-win32-ia32-msvc": "4.22.0",
-        "@rollup/rollup-win32-x64-msvc": "4.22.0",
+        "@rollup/rollup-android-arm-eabi": "4.22.1",
+        "@rollup/rollup-android-arm64": "4.22.1",
+        "@rollup/rollup-darwin-arm64": "4.22.1",
+        "@rollup/rollup-darwin-x64": "4.22.1",
+        "@rollup/rollup-linux-arm-gnueabihf": "4.22.1",
+        "@rollup/rollup-linux-arm-musleabihf": "4.22.1",
+        "@rollup/rollup-linux-arm64-gnu": "4.22.1",
+        "@rollup/rollup-linux-arm64-musl": "4.22.1",
+        "@rollup/rollup-linux-powerpc64le-gnu": "4.22.1",
+        "@rollup/rollup-linux-riscv64-gnu": "4.22.1",
+        "@rollup/rollup-linux-s390x-gnu": "4.22.1",
+        "@rollup/rollup-linux-x64-gnu": "4.22.1",
+        "@rollup/rollup-linux-x64-musl": "4.22.1",
+        "@rollup/rollup-win32-arm64-msvc": "4.22.1",
+        "@rollup/rollup-win32-ia32-msvc": "4.22.1",
+        "@rollup/rollup-win32-x64-msvc": "4.22.1",
         "fsevents": "~2.3.2"
       }
     },
@@ -6115,9 +6115,9 @@
       "license": "MIT"
     },
     "node_modules/sass": {
-      "version": "1.79.1",
-      "resolved": "https://registry.npmjs.org/sass/-/sass-1.79.1.tgz",
-      "integrity": "sha512-+mA7svoNKeL0DiJqZGeR/ZGUu8he4I8o3jyUcOFyo4eBJrwNgIMmAEwCMo/N2Y3wdjOBcRzoNxZIOtrtMX8EXg==",
+      "version": "1.79.2",
+      "resolved": "https://registry.npmjs.org/sass/-/sass-1.79.2.tgz",
+      "integrity": "sha512-YmT1aoF1MwHsZEu/eXhbAJNsPGAhNP4UixW9ckEwWCvPcVdVF0/C104OGDVEqtoctKq0N+wM20O/rj+sSPsWeg==",
       "dev": true,
       "license": "MIT",
       "dependencies": {
diff --git a/src/components/zone/Zone.vue b/src/components/zone/Zone.vue
index 0ed55ea..69be63c 100644
--- a/src/components/zone/Zone.vue
+++ b/src/components/zone/Zone.vue
@@ -25,26 +25,32 @@ type zoneLoadData = {
   characters: CharacterT[]
 }
 
-gameStore.connection?.emit('zone:character:join', { zoneId: gameStore.character!.zoneId }, (response: zoneLoadData) => {
+gameStore.connection?.emit('zone:character:join', { zoneId: gameStore.character!.zoneId }, async (response: zoneLoadData) => {
+  await assetStore.fetchAssetsByZoneId(response.zone.id)
+
   zoneStore.setZone(response.zone)
   zoneStore.setCharacters(response.characters)
 })
 
 // Event listeners
-/**
- * Fetch assets from the server when a new zone is loaded
- */
-gameStore.connection?.on('zone:character:load_assets', async (zoneId: number) => {
-  await assetStore.fetchAssetsByZoneId(zoneId)
-})
-
-gameStore.connection?.on('zone:teleport', (data: zoneLoadData) => {
+gameStore.connection?.on('zone:teleport', async (data: zoneLoadData) => {
   if (zoneStore.zone?.id === data.zone.id) return
+
+  /**
+   * @TODO : Update character via global event server-side, remove this and listen for it somewhere not here
+   */
+  gameStore.setCharacter({
+    ...gameStore.character!,
+    zoneId: data.zone.id
+  })
+
+  await assetStore.fetchAssetsByZoneId(data.zone.id)
+
   zoneStore.setZone(data.zone)
   zoneStore.setCharacters(data.characters)
 })
 
-gameStore.connection?.on('zone:character:join', (data: ExtendedCharacterT) => {
+gameStore.connection?.on('zone:character:join', async (data: ExtendedCharacterT) => {
   zoneStore.addCharacter(data)
 })
 
@@ -61,7 +67,6 @@ onBeforeMount(() => {})
 
 onBeforeUnmount(() => {
   zoneStore.reset()
-  gameStore.connection?.off('zone:character:load_assets')
   gameStore.connection?.off('zone:teleport')
   gameStore.connection?.off('zone:character:join')
   gameStore.connection?.off('zone:character:leave')
diff --git a/src/screens/Game.vue b/src/screens/Game.vue
index 5eec7f1..5070b60 100644
--- a/src/screens/Game.vue
+++ b/src/screens/Game.vue
@@ -1,5 +1,5 @@
 <template>
-  <div v-if="assetsLoaded" class="flex justify-center items-center h-dvh relative">
+  <div class="flex justify-center items-center h-dvh relative">
     <GmTools v-if="isLoaded && gameStore.character?.role === 'gm'" />
     <GmPanel v-if="isLoaded && gameStore.character?.role === 'gm'" />
     <Inventory />
@@ -37,7 +37,7 @@
 <script setup lang="ts">
 import config from '@/config'
 import 'phaser'
-import { watch, ref, onBeforeUnmount, onMounted } from 'vue'
+import { watch, ref, onBeforeUnmount } from 'vue'
 import { Game, Scene } from 'phavuer'
 import { useGameStore } from '@/stores/game'
 import { useZoneEditorStore } from '@/stores/zoneEditor'
@@ -50,28 +50,17 @@ import GmTools from '@/components/gameMaster/GmTools.vue'
 import ZoneEditor from '@/components/gameMaster/zoneEditor/ZoneEditor.vue'
 import GmPanel from '@/components/gameMaster/GmPanel.vue'
 import Inventory from '@/components/gui/UserPanel.vue'
-import AwaitLoaderPlugin from 'phaser3-rex-plugins/plugins/awaitloader-plugin.js'
 
 const gameStore = useGameStore()
 const zoneEditorStore = useZoneEditorStore()
 const assetStore = useAssetStore()
 const isLoaded = ref(false)
-const assetsLoaded = ref(false)
 
 const gameConfig = {
   name: 'New Quest',
   width: window.innerWidth,
   height: window.innerHeight,
   type: Phaser.AUTO, // AUTO, CANVAS, WEBGL, HEADLESS
-  plugins: {
-    global: [
-      {
-        key: 'rexAwaitLoader',
-        plugin: AwaitLoaderPlugin,
-        start: true
-      }
-    ]
-  },
   render: {
     pixelArt: true,
     antialias: true,
@@ -143,6 +132,9 @@ const preloadScene = (scene: Phaser.Scene) => {
 }
 
 const createScene = (scene: Phaser.Scene) => {
+  /**
+   * Create sprite animations
+   */
   assetStore.assets.forEach((asset) => {
     if (asset.group !== 'sprite_animations') return
     scene.anims.create({
@@ -157,30 +149,25 @@ const createScene = (scene: Phaser.Scene) => {
   /**
    * Watch for changes in assets and reload them
    */
-  watch(() => assetStore.assets, (newAssets) => {
-    console.log('new assets', newAssets)
-    newAssets.forEach(() => {
-      loadAssets(scene)
-    }, { deep: true })
-
-    scene.load.start()
+  watch(() => assetStore.assets, async () => {
+    loadAssets(scene)
   })
 }
 
 const loadAssets = (scene: Phaser.Scene) => {
   assetStore.assets.forEach((asset) => {
+    console.log('asset', asset)
     if (asset.group === 'sprite_animations') {
       scene.load.spritesheet(asset.key, config.server_endpoint + asset.url, { frameWidth: asset.frameWidth ?? 0, frameHeight: asset.frameHeight ?? 0 })
     } else {
       scene.load.image(asset.key, config.server_endpoint + asset.url)
     }
   })
-}
 
-onMounted(async () => {
-  await assetStore.fetchAssetsByZoneId(gameStore.character!.zoneId)
-  assetsLoaded.value = true
-})
+  // scene.load.once(Phaser.Loader.Events.COMPLETE, () => {})
+
+  scene.load.start()
+}
 
 onBeforeUnmount(() => {
   gameStore.disconnectSocket()