asset downloading from server works now

This commit is contained in:
Dennis Postma 2024-06-30 02:04:09 +02:00
parent 270b14d8e5
commit 8c7d817bfb
2 changed files with 18 additions and 9 deletions

View File

@ -21,7 +21,7 @@ import config from '@/config'
import Tileset = Phaser.Tilemaps.Tileset
import TilemapLayer = Phaser.Tilemaps.TilemapLayer
import { Container, TilemapLayer as TilemapLayerC, useScene, Image } from 'phavuer'
import { onBeforeMount, onBeforeUnmount, onMounted, ref, type Ref, watch } from 'vue'
import { onBeforeMount, onBeforeUnmount, onMounted } from 'vue'
import Controls from '@/components/utilities/Controls.vue'
import { useSocketStore } from '@/stores/socket'
import Toolbar from '@/components/utilities/zoneEditor/Toolbar.vue'
@ -29,8 +29,7 @@ import Tiles from '@/components/utilities/zoneEditor/Tiles.vue'
import { useZoneEditorStore } from '@/stores/zoneEditor'
import ZoneSettings from '@/components/utilities/zoneEditor/ZoneSettings.vue'
import Decorations from '@/components/utilities/zoneEditor/Decorations.vue'
import { generateTilemap, tileToWorldX, tileToWorldXY, tileToWorldY } from '@/services/zone'
import type { Zone } from '@/types'
import { tileToWorldXY } from '@/services/zone'
import GmPanel from '@/components/utilities/GmPanel.vue'
// Phavuer logic

View File

@ -1,7 +1,6 @@
<template>
<div class="game-container">
<GmTools />
<Game class="game" :config="gameConfig" @create="createGame" v-if="!zoneEditorStore.active">
<Scene name="main" @preload="preloadScene" @create="createScene">
<div class="top-ui">
@ -64,11 +63,22 @@ const createGame = (game: Phaser.Game) => {
}
const preloadScene = (scene: Phaser.Scene) => {
/**
* @TODO
* Write logic that downloads all assets from out websocket or http server in base64 format
* Don't forget to check how intensive that operation is with sockets for performance
*/
type Asset = {
key: string
value: string
type: 'base64' | 'link'
}
socket.connection.emit('assets:download', {}, (response: Asset[]) => {
response.forEach((asset) => {
if (asset.type === 'base64') {
scene.textures.addBase64(asset.key, asset.value)
}
if (asset.type === 'link') {
scene.load.image(asset.key, asset.value)
}
})
})
scene.load.image('tiles', '/assets/zone/tiles.png')
scene.load.image('walls', '/assets/zone/walls.png')
scene.load.image('wall1', '/assets/zone/wall1.png')