From 8191a039c9f52d7bee2f3a60be61264410239a95 Mon Sep 17 00:00:00 2001 From: Dennis Postma Date: Wed, 1 Jan 2025 17:50:07 +0100 Subject: [PATCH] Walking works again but needs to be improved --- src/components/game/character/Character.vue | 24 ++++++++++++++------- src/components/game/zone/Zone.vue | 2 +- src/stores/zoneStore.ts | 4 ++-- 3 files changed, 19 insertions(+), 11 deletions(-) diff --git a/src/components/game/character/Character.vue b/src/components/game/character/Character.vue index cd7dd55..4901bf4 100644 --- a/src/components/game/character/Character.vue +++ b/src/components/game/character/Character.vue @@ -29,7 +29,7 @@ enum Direction { } const props = defineProps<{ - layer: Phaser.Tilemaps.TilemapLayer + layer: Phaser.Tilemaps.Tilemap zoneCharacter: ZoneCharacter }>() @@ -127,15 +127,23 @@ const updateSprite = () => { } watch( - () => props.zoneCharacter.character, - (newChar, oldChar) => { - if (!newChar) return + () => ({ + x: props.zoneCharacter.character.positionX, + y: props.zoneCharacter.character.positionY, + isMoving: props.zoneCharacter.isMoving, + rotation: props.zoneCharacter.character.rotation + }), + (newValues, oldValues) => { + if (!newValues) return - if (!oldChar || newChar.positionX !== oldChar.positionX || newChar.positionY !== oldChar.positionY) { - const direction = !oldChar ? Direction.POSITIVE : calcDirection(oldChar.positionX, oldChar.positionY, newChar.positionX, newChar.positionY) - updatePosition(newChar.positionX, newChar.positionY, direction) + if (!oldValues || newValues.x !== oldValues.x || newValues.y !== oldValues.y) { + const direction = !oldValues + ? Direction.POSITIVE + : calcDirection(oldValues.x, oldValues.y, newValues.x, newValues.y) + updatePosition(newValues.x, newValues.y, direction) } - } + }, + { deep: true } ) watch(() => props.zoneCharacter, updateSprite) diff --git a/src/components/game/zone/Zone.vue b/src/components/game/zone/Zone.vue index 4853ebf..be65111 100644 --- a/src/components/game/zone/Zone.vue +++ b/src/components/game/zone/Zone.vue @@ -44,7 +44,7 @@ gameStore.connection!.on('zone:character:leave', (characterId: number) => { zoneStore.removeCharacter(characterId) }) -gameStore.connection!.on('zone:character:move', (data: { id: number; positionX: number; positionY: number; rotation: number; isMoving: boolean }) => { +gameStore.connection!.on('zone:character:move', (data: { characterId: number; positionX: number; positionY: number; rotation: number; isMoving: boolean }) => { zoneStore.updateCharacterPosition(data) }) diff --git a/src/stores/zoneStore.ts b/src/stores/zoneStore.ts index ce66218..19d8802 100644 --- a/src/stores/zoneStore.ts +++ b/src/stores/zoneStore.ts @@ -40,8 +40,8 @@ export const useZoneStore = defineStore('zone', { setCharacterLoaded(loaded: boolean) { this.characterLoaded = loaded }, - updateCharacterPosition(data: { id: number; positionX: number; positionY: number; rotation: number; isMoving: boolean }) { - const character = this.characters.find((char) => char.character.id === data.id) + updateCharacterPosition(data: { characterId: number; positionX: number; positionY: number; rotation: number; isMoving: boolean }) { + const character = this.characters.find((char) => char.character.id === data.characterId) if (character) { character.character.positionX = data.positionX character.character.positionY = data.positionY