#366 : Add storage logic to asset manager

This commit is contained in:
Dennis Postma 2025-02-18 16:37:21 +01:00
parent 7097eb1580
commit 2d7d598c94
6 changed files with 50 additions and 52 deletions

View File

@ -64,21 +64,21 @@ if (selectedCharacterHair.value) {
characterSpriteId.value = selectedCharacterHair.value.sprite?.id characterSpriteId.value = selectedCharacterHair.value.sprite?.id
} }
function removeCharacterHair() { async function removeCharacterHair() {
if (!selectedCharacterHair.value) return if (!selectedCharacterHair.value) return
socketManager.emit(SocketEvent.GM_CHARACTERHAIR_REMOVE, { id: selectedCharacterHair.value.id }, (response: boolean) => { socketManager.emit(SocketEvent.GM_CHARACTERHAIR_REMOVE, { id: selectedCharacterHair.value.id }, async (response: boolean) => {
if (!response) { if (!response) {
console.error('Failed to remove character hair') console.error('Failed to remove character hair')
return return
} }
downloadCache('character_hair', new CharacterHairStorage()) await downloadCache('character_hair', new CharacterHairStorage())
refreshCharacterHairList() await refreshCharacterHairList()
}) })
} }
function refreshCharacterHairList(unsetSelectedCharacterHair = true) { async function refreshCharacterHairList(unsetSelectedCharacterHair = true) {
socketManager.emit(SocketEvent.GM_CHARACTERHAIR_LIST, {}, (response: CharacterHair[]) => { socketManager.emit(SocketEvent.GM_CHARACTERHAIR_LIST, {}, (response: CharacterHair[]) => {
assetManagerStore.setCharacterHairList(response) assetManagerStore.setCharacterHairList(response)
@ -88,7 +88,7 @@ function refreshCharacterHairList(unsetSelectedCharacterHair = true) {
}) })
} }
function saveCharacterHair() { async function saveCharacterHair() {
const characterHairData = { const characterHairData = {
id: selectedCharacterHair.value!.id, id: selectedCharacterHair.value!.id,
name: characterName.value, name: characterName.value,
@ -97,14 +97,14 @@ function saveCharacterHair() {
spriteId: characterSpriteId.value spriteId: characterSpriteId.value
} }
socketManager.emit(SocketEvent.GM_CHARACTERHAIR_UPDATE, characterHairData, (response: boolean) => { socketManager.emit(SocketEvent.GM_CHARACTERHAIR_UPDATE, characterHairData, async (response: boolean) => {
if (!response) { if (!response) {
console.error('Failed to save character type') console.error('Failed to save character type')
return return
} }
downloadCache('character_hair', new CharacterHairStorage()) await downloadCache('character_hair', new CharacterHairStorage())
refreshCharacterHairList(false) await refreshCharacterHairList(false)
}) })
} }

View File

@ -73,21 +73,21 @@ if (selectedCharacterType.value) {
characterSpriteId.value = selectedCharacterType.value.sprite?.id characterSpriteId.value = selectedCharacterType.value.sprite?.id
} }
function removeCharacterType() { async function removeCharacterType() {
if (!selectedCharacterType.value) return if (!selectedCharacterType.value) return
socketManager.emit(SocketEvent.GM_CHARACTERTYPE_REMOVE, { id: selectedCharacterType.value.id }, (response: boolean) => { socketManager.emit(SocketEvent.GM_CHARACTERTYPE_REMOVE, { id: selectedCharacterType.value.id }, async (response: boolean) => {
if (!response) { if (!response) {
console.error('Failed to remove character type') console.error('Failed to remove character type')
return return
} }
downloadCache('character_types', new CharacterTypeStorage()) await downloadCache('character_types', new CharacterTypeStorage())
refreshCharacterTypeList() await refreshCharacterTypeList()
}) })
} }
function refreshCharacterTypeList(unsetSelectedCharacterType = true) { async function refreshCharacterTypeList(unsetSelectedCharacterType = true) {
socketManager.emit(SocketEvent.GM_CHARACTERTYPE_LIST, {}, (response: CharacterType[]) => { socketManager.emit(SocketEvent.GM_CHARACTERTYPE_LIST, {}, (response: CharacterType[]) => {
assetManagerStore.setCharacterTypeList(response) assetManagerStore.setCharacterTypeList(response)
@ -97,7 +97,7 @@ function refreshCharacterTypeList(unsetSelectedCharacterType = true) {
}) })
} }
function saveCharacterType() { async function saveCharacterType() {
const characterTypeData = { const characterTypeData = {
id: selectedCharacterType.value!.id, id: selectedCharacterType.value!.id,
name: characterName.value, name: characterName.value,
@ -107,14 +107,14 @@ function saveCharacterType() {
spriteId: characterSpriteId.value spriteId: characterSpriteId.value
} }
socketManager.emit(SocketEvent.GM_CHARACTERTYPE_UPDATE, characterTypeData, (response: boolean) => { socketManager.emit(SocketEvent.GM_CHARACTERTYPE_UPDATE, characterTypeData, async (response: boolean) => {
if (!response) { if (!response) {
console.error('Failed to save character type') console.error('Failed to save character type')
return return
} }
downloadCache('character_types', new CharacterTypeStorage()) await downloadCache('character_types', new CharacterTypeStorage())
refreshCharacterTypeList(false) await refreshCharacterTypeList(false)
}) })
} }

View File

@ -62,7 +62,7 @@ import type { MapObject } from '@/application/types'
import { downloadCache } from '@/application/utilities' import { downloadCache } from '@/application/utilities'
import ChipsInput from '@/components/forms/ChipsInput.vue' import ChipsInput from '@/components/forms/ChipsInput.vue'
import { socketManager } from '@/managers/SocketManager' import { socketManager } from '@/managers/SocketManager'
import { CharacterTypeStorage, MapObjectStorage } from '@/storage/storages' import { MapObjectStorage } from '@/storage/storages'
import { useAssetManagerStore } from '@/stores/assetManagerStore' import { useAssetManagerStore } from '@/stores/assetManagerStore'
import { computed, onBeforeUnmount, onMounted, ref, watch } from 'vue' import { computed, onBeforeUnmount, onMounted, ref, watch } from 'vue'
@ -81,7 +81,6 @@ const mapObjectFrameHeight = ref(0)
const imageRef = ref<HTMLImageElement | null>(null) const imageRef = ref<HTMLImageElement | null>(null)
const isDragging = ref(false) const isDragging = ref(false)
const draggedPointIndex = ref(-1) const draggedPointIndex = ref(-1)
const mapObjectStorage = new MapObjectStorage()
if (!selectedMapObject.value) { if (!selectedMapObject.value) {
console.error('No map mapObject selected') console.error('No map mapObject selected')
@ -98,21 +97,20 @@ if (selectedMapObject.value) {
mapObjectFrameHeight.value = selectedMapObject.value.frameHeight mapObjectFrameHeight.value = selectedMapObject.value.frameHeight
} }
function removeObject() { async function removeObject() {
if (!selectedMapObject.value) return if (!selectedMapObject.value) return
socketManager.emit(SocketEvent.GM_MAPOBJECT_REMOVE, { mapObjectId: selectedMapObject.value.id }, async (response: boolean) => {
socketManager.emit(SocketEvent.GM_MAPOBJECT_REMOVE, { mapObject: selectedMapObject.value.id }, (response: boolean) => {
if (!response) { if (!response) {
console.error('Failed to remove mapObject') console.error('Failed to remove mapObject')
return return
} }
downloadCache('map_object', new MapObjectStorage()) await downloadCache('map_objects', new MapObjectStorage())
refreshObjectList() await refreshObjectList()
}) })
} }
function refreshObjectList(unsetSelectedMapObject = true) { async function refreshObjectList(unsetSelectedMapObject = true) {
socketManager.emit(SocketEvent.GM_MAPOBJECT_LIST, {}, (response: MapObject[]) => { socketManager.emit(SocketEvent.GM_MAPOBJECT_LIST, {}, (response: MapObject[]) => {
assetManagerStore.setMapObjectList(response) assetManagerStore.setMapObjectList(response)
@ -122,7 +120,7 @@ function refreshObjectList(unsetSelectedMapObject = true) {
}) })
} }
function saveObject() { async function saveObject() {
if (!selectedMapObject.value) { if (!selectedMapObject.value) {
console.error('No mapObject selected') console.error('No mapObject selected')
return return
@ -141,14 +139,14 @@ function saveObject() {
frameWidth: mapObjectFrameWidth.value, frameWidth: mapObjectFrameWidth.value,
frameHeight: mapObjectFrameHeight.value frameHeight: mapObjectFrameHeight.value
}, },
(response: boolean) => { async (response: boolean) => {
if (!response) { if (!response) {
console.error('Failed to save mapObject') console.error('Failed to save mapObject')
return return
} }
downloadCache('map_object', new MapObjectStorage()) await downloadCache('map_objects', new MapObjectStorage())
refreshObjectList(false) await refreshObjectList(false)
} }
) )
} }

View File

@ -97,31 +97,31 @@ if (selectedSprite.value) {
spriteActions.value = sortSpriteActions(selectedSprite.value.spriteActions) spriteActions.value = sortSpriteActions(selectedSprite.value.spriteActions)
} }
function deleteSprite() { async function deleteSprite() {
socketManager.emit(SocketEvent.GM_SPRITE_DELETE, { id: selectedSprite.value?.id }, (response: boolean) => { socketManager.emit(SocketEvent.GM_SPRITE_DELETE, { id: selectedSprite.value?.id }, async (response: boolean) => {
if (!response) { if (!response) {
console.error('Failed to delete sprite') console.error('Failed to delete sprite')
return return
} }
downloadCache('sprite', new SpriteStorage()) await downloadCache('sprite', new SpriteStorage())
refreshSpriteList() await refreshSpriteList()
}) })
} }
function copySprite() { async function copySprite() {
socketManager.emit(SocketEvent.GM_SPRITE_COPY, { id: selectedSprite.value?.id }, (response: boolean) => { socketManager.emit(SocketEvent.GM_SPRITE_COPY, { id: selectedSprite.value?.id }, async (response: boolean) => {
if (!response) { if (!response) {
console.error('Failed to copy sprite') console.error('Failed to copy sprite')
return return
} }
downloadCache('sprite', new SpriteStorage()) await downloadCache('sprite', new SpriteStorage())
refreshSpriteList(false) await refreshSpriteList(false)
}) })
} }
function refreshSpriteList(unsetSelectedSprite = true) { async function refreshSpriteList(unsetSelectedSprite = true) {
socketManager.emit(SocketEvent.GM_SPRITE_LIST, {}, (response: Sprite[]) => { socketManager.emit(SocketEvent.GM_SPRITE_LIST, {}, (response: Sprite[]) => {
assetManagerStore.setSpriteList(response) assetManagerStore.setSpriteList(response)
@ -131,7 +131,7 @@ function refreshSpriteList(unsetSelectedSprite = true) {
}) })
} }
function saveSprite() { async function saveSprite() {
if (!selectedSprite.value) { if (!selectedSprite.value) {
console.error('No sprite selected') console.error('No sprite selected')
return return
@ -154,14 +154,14 @@ function saveSprite() {
}) ?? [] }) ?? []
} }
socketManager.emit(SocketEvent.GM_SPRITE_UPDATE, updatedSprite, (response: boolean) => { socketManager.emit(SocketEvent.GM_SPRITE_UPDATE, updatedSprite, async (response: boolean) => {
if (!response) { if (!response) {
console.error('Failed to save sprite') console.error('Failed to save sprite')
return return
} }
downloadCache('sprite', new SpriteStorage()) await downloadCache('sprite', new SpriteStorage())
refreshSpriteList(false) await refreshSpriteList(false)
}) })
} }

View File

@ -62,12 +62,12 @@ async function deleteTile() {
return return
} }
downloadCache('tile', new TileStorage()) await downloadCache('tiles', new TileStorage())
refreshTileList() await refreshTileList()
}) })
} }
function refreshTileList(unsetSelectedTile = true) { async function refreshTileList(unsetSelectedTile = true) {
socketManager.emit(SocketEvent.GM_TILE_LIST, {}, (response: Tile[]) => { socketManager.emit(SocketEvent.GM_TILE_LIST, {}, (response: Tile[]) => {
assetManagerStore.setTileList(response) assetManagerStore.setTileList(response)
@ -77,7 +77,7 @@ function refreshTileList(unsetSelectedTile = true) {
}) })
} }
function saveTile() { async function saveTile() {
if (!selectedTile.value) { if (!selectedTile.value) {
console.error('No tile selected') console.error('No tile selected')
return return
@ -90,14 +90,14 @@ function saveTile() {
name: tileName.value, name: tileName.value,
tags: tileTags.value tags: tileTags.value
}, },
(response: boolean) => { async (response: boolean) => {
if (!response) { if (!response) {
console.error('Failed to save tile') console.error('Failed to save tile')
return return
} }
downloadCache('tile', new TileStorage()) await downloadCache('tiles', new TileStorage())
refreshTileList(false) await refreshTileList(false)
} }
) )
} }

View File

@ -23,6 +23,7 @@ import { SocketEvent } from '@/application/enums'
import { socketManager } from '@/managers/SocketManager' import { socketManager } from '@/managers/SocketManager'
import 'phaser' import 'phaser'
import type { Map as MapT } from '@/application/types' import type { Map as MapT } from '@/application/types'
import { downloadCache } from '@/application/utilities'
import Map from '@/components/gameMaster/mapEditor/Map.vue' import Map from '@/components/gameMaster/mapEditor/Map.vue'
import MapList from '@/components/gameMaster/mapEditor/partials/MapList.vue' import MapList from '@/components/gameMaster/mapEditor/partials/MapList.vue'
import MapObjectList from '@/components/gameMaster/mapEditor/partials/MapObjectList.vue' import MapObjectList from '@/components/gameMaster/mapEditor/partials/MapObjectList.vue'
@ -35,7 +36,6 @@ import { loadAllTileTextures } from '@/services/mapService'
import { CharacterHairStorage, MapStorage } from '@/storage/storages' import { CharacterHairStorage, MapStorage } from '@/storage/storages'
import { Game, Scene } from 'phavuer' import { Game, Scene } from 'phavuer'
import { ref, toRaw, useTemplateRef } from 'vue' import { ref, toRaw, useTemplateRef } from 'vue'
import {downloadCache} from "@/application/utilities";
const mapStorage = new MapStorage() const mapStorage = new MapStorage()
const mapEditor = useMapEditorComposable() const mapEditor = useMapEditorComposable()