1
0
forked from noxious/client

Walking works again but needs to be improved

This commit is contained in:
Dennis Postma 2025-01-01 17:50:07 +01:00
parent 540425ca44
commit 8191a039c9
3 changed files with 19 additions and 11 deletions

View File

@ -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)

View File

@ -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)
})
</script>

View File

@ -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