1
0
forked from noxious/client

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

View File

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

View File

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

View File

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

View File

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

View File

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