Bug fix for hot reload map objects upon saving in map editor
This commit is contained in:
parent
0b1e95f80f
commit
fc34a488d9
@ -5,12 +5,11 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import type { MapObject, PlacedMapObject } from '@/application/types'
|
import type { MapObject, PlacedMapObject } from '@/application/types'
|
||||||
import ImageGroup from '@/components/game/map/partials/ImageGroup.vue'
|
import ImageGroup from '@/components/game/map/partials/ImageGroup.vue'
|
||||||
import { useMapEditorComposable } from '@/composables/useMapEditorComposable'
|
|
||||||
import { loadMapObjectTextures, tileToWorldXY } from '@/services/mapService'
|
import { loadMapObjectTextures, tileToWorldXY } from '@/services/mapService'
|
||||||
import { MapObjectStorage } from '@/storage/storages'
|
import { MapObjectStorage } from '@/storage/storages'
|
||||||
import { useGameStore } from '@/stores/gameStore'
|
import { useGameStore } from '@/stores/gameStore'
|
||||||
import { useScene } from 'phavuer'
|
import { useScene } from 'phavuer'
|
||||||
import { computed, onMounted, ref, watch } from 'vue'
|
import { computed, onMounted, ref } from 'vue'
|
||||||
|
|
||||||
import Tilemap = Phaser.Tilemaps.Tilemap
|
import Tilemap = Phaser.Tilemaps.Tilemap
|
||||||
import TilemapLayer = Phaser.Tilemaps.TilemapLayer
|
import TilemapLayer = Phaser.Tilemaps.TilemapLayer
|
||||||
@ -24,7 +23,6 @@ const props = defineProps<{
|
|||||||
const scene = useScene()
|
const scene = useScene()
|
||||||
|
|
||||||
const gameStore = useGameStore()
|
const gameStore = useGameStore()
|
||||||
const mapEditor = useMapEditorComposable()
|
|
||||||
|
|
||||||
const mapObject = ref<MapObject>()
|
const mapObject = ref<MapObject>()
|
||||||
|
|
||||||
@ -50,6 +48,8 @@ async function initialize() {
|
|||||||
const _mapObject = await mapObjectStorage.getById(props.placedMapObject.mapObject as string)
|
const _mapObject = await mapObjectStorage.getById(props.placedMapObject.mapObject as string)
|
||||||
if (!_mapObject) return
|
if (!_mapObject) return
|
||||||
|
|
||||||
|
console.log(_mapObject)
|
||||||
|
|
||||||
mapObject.value = _mapObject
|
mapObject.value = _mapObject
|
||||||
|
|
||||||
await loadMapObjectTextures([_mapObject], scene)
|
await loadMapObjectTextures([_mapObject], scene)
|
||||||
@ -64,13 +64,6 @@ function calculateObjectPlacement(mapObj: PlacedMapObject): { x: number; y: numb
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
watch(
|
|
||||||
() => mapEditor.refreshMapObject.value,
|
|
||||||
async () => {
|
|
||||||
await initialize()
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
onMounted(async () => {
|
onMounted(async () => {
|
||||||
await initialize()
|
await initialize()
|
||||||
})
|
})
|
||||||
|
@ -7,7 +7,14 @@
|
|||||||
:placedMapObject="previewPlacedMapObject as PlacedMapObjectT"
|
:placedMapObject="previewPlacedMapObject as PlacedMapObjectT"
|
||||||
/>
|
/>
|
||||||
<SelectedPlacedMapObjectComponent v-if="mapEditor.selectedPlacedObject.value" :key="mapEditor.selectedPlacedObject.value.id" :map :placedMapObject="mapEditor.selectedPlacedObject.value" @move="moveMapObject" @rotate="rotatePlacedMapObject" @delete="deletePlacedMapObject" />
|
<SelectedPlacedMapObjectComponent v-if="mapEditor.selectedPlacedObject.value" :key="mapEditor.selectedPlacedObject.value.id" :map :placedMapObject="mapEditor.selectedPlacedObject.value" @move="moveMapObject" @rotate="rotatePlacedMapObject" @delete="deletePlacedMapObject" />
|
||||||
<PlacedMapObject v-for="placedMapObject in mapEditor.currentMap.value?.placedMapObjects" :tileMap :tileMapLayer :placedMapObject @pointerdown="clickPlacedMapObject(placedMapObject)" />
|
<PlacedMapObject
|
||||||
|
v-for="placedMapObject in mapEditor.currentMap.value?.placedMapObjects"
|
||||||
|
:tileMap
|
||||||
|
:tileMapLayer
|
||||||
|
:placedMapObject
|
||||||
|
@pointerdown="clickPlacedMapObject(placedMapObject)"
|
||||||
|
:key="`${placedMapObject.id}-${placedMapObjectKey}`"
|
||||||
|
/>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
@ -26,6 +33,7 @@ import TilemapLayer = Phaser.Tilemaps.TilemapLayer
|
|||||||
const scene = useScene()
|
const scene = useScene()
|
||||||
const mapEditor = useMapEditorComposable()
|
const mapEditor = useMapEditorComposable()
|
||||||
const map = computed(() => mapEditor.currentMap.value!)
|
const map = computed(() => mapEditor.currentMap.value!)
|
||||||
|
const placedMapObjectKey = computed(() => mapEditor.refreshMapObject.value)
|
||||||
|
|
||||||
const emit = defineEmits<{ (e: 'update', map: MapT): void; (e: 'updateAndCommit', map: MapT): void; (e: 'pauseObjectTracking'): void; (e: 'resumeObjectTracking'): void }>()
|
const emit = defineEmits<{ (e: 'update', map: MapT): void; (e: 'updateAndCommit', map: MapT): void; (e: 'pauseObjectTracking'): void; (e: 'resumeObjectTracking'): void }>()
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user