zoneEditor reactivity fixes
This commit is contained in:
parent
f3b56ef5fa
commit
1a7546ba4f
@ -67,8 +67,8 @@ const { objectList, zone, selectedTile, selectedObject, selectedZoneObject, eras
|
|||||||
|
|
||||||
const zoneTilemap = createTilemap()
|
const zoneTilemap = createTilemap()
|
||||||
const tiles = createTileLayer()
|
const tiles = createTileLayer()
|
||||||
let zoneObjects = <ZoneObject[]>[]
|
const zoneObjects = ref<ZoneObject[]>([])
|
||||||
let zoneEventTiles = <ZoneEventTile[]>[]
|
const zoneEventTiles = ref<ZoneEventTile[]>([])
|
||||||
let tileArray = createTileArray()
|
let tileArray = createTileArray()
|
||||||
|
|
||||||
const shouldShowTeleportModal = computed(() => zoneEditorStore.tool === 'pencil' && drawMode.value === 'teleport')
|
const shouldShowTeleportModal = computed(() => zoneEditorStore.tool === 'pencil' && drawMode.value === 'teleport')
|
||||||
@ -125,9 +125,9 @@ function eraser(tile: Phaser.Tilemaps.Tile) {
|
|||||||
placeTile(zoneTilemap as Tilemap, tiles as TilemapLayer, tile.x, tile.y, 'blank_tile')
|
placeTile(zoneTilemap as Tilemap, tiles as TilemapLayer, tile.x, tile.y, 'blank_tile')
|
||||||
tileArray[tile.y][tile.x] = 'blank_tile'
|
tileArray[tile.y][tile.x] = 'blank_tile'
|
||||||
} else if (eraserMode.value === 'object') {
|
} else if (eraserMode.value === 'object') {
|
||||||
zoneObjects = zoneObjects.filter((object) => object.positionX !== tile.x || object.positionY !== tile.y)
|
zoneObjects.value = zoneObjects.value.filter((object) => object.positionX !== tile.x || object.positionY !== tile.y)
|
||||||
} else if (eraserMode.value === 'blocking tile' || eraserMode.value === 'teleport') {
|
} else if (eraserMode.value === 'blocking tile' || eraserMode.value === 'teleport') {
|
||||||
zoneEventTiles = zoneEventTiles.filter((eventTile) => eventTile.positionX !== tile.x || eventTile.positionY !== tile.y || (eraserMode.value === 'teleport' && eventTile.type !== ZoneEventTileType.TELEPORT))
|
zoneEventTiles.value = zoneEventTiles.value.filter((eventTile) => eventTile.positionX !== tile.x || eventTile.positionY !== tile.y || (eraserMode.value === 'teleport' && eventTile.type !== ZoneEventTileType.TELEPORT))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -144,7 +144,7 @@ function pencil(tile: Phaser.Tilemaps.Tile) {
|
|||||||
|
|
||||||
function addZoneObject(tile: Phaser.Tilemaps.Tile) {
|
function addZoneObject(tile: Phaser.Tilemaps.Tile) {
|
||||||
// Check if object already exists on position
|
// Check if object already exists on position
|
||||||
const existingObject = zoneObjects.find((object) => object.positionX === tile.x && object.positionY === tile.y)
|
const existingObject = zoneObjects.value.find((object) => object.positionX === tile.x && object.positionY === tile.y)
|
||||||
if (existingObject) return
|
if (existingObject) return
|
||||||
|
|
||||||
const newObject = {
|
const newObject = {
|
||||||
@ -157,12 +157,13 @@ function addZoneObject(tile: Phaser.Tilemaps.Tile) {
|
|||||||
positionX: tile.x,
|
positionX: tile.x,
|
||||||
positionY: tile.y
|
positionY: tile.y
|
||||||
}
|
}
|
||||||
zoneObjects = [...new Set([...zoneObjects, newObject])]
|
// Add new object to zoneObjects
|
||||||
|
zoneObjects.value = zoneObjects.value.concat(newObject)
|
||||||
}
|
}
|
||||||
|
|
||||||
function addZoneEventTile(tile: Phaser.Tilemaps.Tile) {
|
function addZoneEventTile(tile: Phaser.Tilemaps.Tile) {
|
||||||
// Check if event tile already exists on position
|
// Check if event tile already exists on position
|
||||||
const existingEventTile = zoneEventTiles.find((eventTile) => eventTile.positionX === tile.x && eventTile.positionY === tile.y)
|
const existingEventTile = zoneEventTiles.value.find((eventTile) => eventTile.positionX === tile.x && eventTile.positionY === tile.y)
|
||||||
if (existingEventTile) return
|
if (existingEventTile) return
|
||||||
|
|
||||||
const newEventTile = {
|
const newEventTile = {
|
||||||
@ -181,7 +182,7 @@ function addZoneEventTile(tile: Phaser.Tilemaps.Tile) {
|
|||||||
}
|
}
|
||||||
: undefined
|
: undefined
|
||||||
}
|
}
|
||||||
zoneEventTiles = [...new Set([...zoneEventTiles, newEventTile])] as any
|
zoneEventTiles.value = zoneEventTiles.value.concat(newEventTile as any)
|
||||||
}
|
}
|
||||||
|
|
||||||
function paint() {
|
function paint() {
|
||||||
@ -213,8 +214,8 @@ function save() {
|
|||||||
height: zoneEditorStore.zoneSettings.height,
|
height: zoneEditorStore.zoneSettings.height,
|
||||||
tiles: tileArray,
|
tiles: tileArray,
|
||||||
pvp: zone.value.pvp,
|
pvp: zone.value.pvp,
|
||||||
zoneEventTiles: zoneEventTiles.map(({ id, zoneId, type, positionX, positionY, teleport }) => ({ id, zoneId, type, positionX, positionY, teleport })),
|
zoneEventTiles: zoneEventTiles.value.map(({ id, zoneId, type, positionX, positionY, teleport }) => ({ id, zoneId, type, positionX, positionY, teleport })),
|
||||||
zoneObjects: zoneObjects.map(({ id, zoneId, objectId, depth, positionX, positionY }) => ({ id, zoneId, objectId, depth, positionX, positionY }))
|
zoneObjects: zoneObjects.value.map(({ id, zoneId, objectId, depth, positionX, positionY }) => ({ id, zoneId, objectId, depth, positionX, positionY }))
|
||||||
}
|
}
|
||||||
|
|
||||||
if (zoneEditorStore.isSettingsModalShown) {
|
if (zoneEditorStore.isSettingsModalShown) {
|
||||||
@ -237,16 +238,16 @@ function clear() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
zoneEventTiles = []
|
zoneEventTiles.value = []
|
||||||
zoneObjects = []
|
zoneObjects.value = []
|
||||||
}
|
}
|
||||||
|
|
||||||
function updateZoneObjectDepth(depth: number) {
|
function updateZoneObjectDepth(depth: number) {
|
||||||
zoneObjects = zoneObjects.map((object) => (object.id === selectedZoneObject.value?.id ? { ...object, depth } : object))
|
zoneObjects.value = zoneObjects.value.map((object) => (object.id === selectedZoneObject.value?.id ? { ...object, depth } : object))
|
||||||
}
|
}
|
||||||
|
|
||||||
function deleteZoneObject(objectId: string) {
|
function deleteZoneObject(objectId: string) {
|
||||||
zoneObjects = zoneObjects.filter((object) => object.id !== objectId)
|
zoneObjects.value = zoneObjects.value.filter((object) => object.id !== objectId)
|
||||||
}
|
}
|
||||||
|
|
||||||
function handleMove() {
|
function handleMove() {
|
||||||
@ -261,8 +262,8 @@ onBeforeMount(async () => {
|
|||||||
tileArray = zone.value.tiles.map((row) => row.map((tileId) => tileId || 'blank_tile'))
|
tileArray = zone.value.tiles.map((row) => row.map((tileId) => tileId || 'blank_tile'))
|
||||||
}
|
}
|
||||||
|
|
||||||
zoneEventTiles = zone.value?.zoneEventTiles ?? []
|
zoneEventTiles.value = zone.value?.zoneEventTiles ?? []
|
||||||
zoneObjects = sortByIsometricDepth(zone.value?.zoneObjects ?? [])
|
zoneObjects.value = sortByIsometricDepth(zone.value?.zoneObjects ?? [])
|
||||||
|
|
||||||
// Center camera
|
// Center camera
|
||||||
const centerY = (zoneTilemap.height * zoneTilemap.tileHeight) / 2
|
const centerY = (zoneTilemap.height * zoneTilemap.tileHeight) / 2
|
||||||
@ -271,8 +272,8 @@ onBeforeMount(async () => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
onUnmounted(() => {
|
onUnmounted(() => {
|
||||||
zoneEventTiles = []
|
zoneEventTiles.value = []
|
||||||
zoneObjects = []
|
zoneObjects.value = []
|
||||||
tiles?.destroy()
|
tiles?.destroy()
|
||||||
zoneTilemap?.removeAllLayers()
|
zoneTilemap?.removeAllLayers()
|
||||||
zoneTilemap?.destroy()
|
zoneTilemap?.destroy()
|
||||||
@ -283,7 +284,7 @@ onUnmounted(() => {
|
|||||||
watch(
|
watch(
|
||||||
objectList,
|
objectList,
|
||||||
(newObjects) => {
|
(newObjects) => {
|
||||||
zoneObjects = zoneObjects.map((zoneObject) => {
|
zoneObjects.value = zoneObjects.value.map((zoneObject) => {
|
||||||
const updatedObject = newObjects.find((obj) => obj.id === zoneObject.objectId)
|
const updatedObject = newObjects.find((obj) => obj.id === zoneObject.objectId)
|
||||||
if (updatedObject) {
|
if (updatedObject) {
|
||||||
return {
|
return {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user