diff --git a/src/App.vue b/src/App.vue index 80101f2..3e46ff1 100644 --- a/src/App.vue +++ b/src/App.vue @@ -16,26 +16,29 @@ import Register from '@/screens/Register.vue' import Characters from '@/screens/Characters.vue' import Game from '@/screens/Game.vue' import { storeToRefs } from 'pinia' -import { useSocketStore } from '@/stores/socket' -const socket = useSocketStore() const gameStore = useGameStore() const {screen} = storeToRefs(gameStore); -socket.$subscribe( +gameStore.$subscribe( (mutation, state) => { - if (!state.connection) { - screen.value = 'login' - } + let newScreen = screen.value; - if (state.token && state.connection) { - screen.value = 'characters' + if (!state.connection) { + newScreen = 'login'; + } else if (state.token && state.connection) { + newScreen = 'characters'; if (state.character) { - screen.value = 'game' + newScreen = 'game'; } } + + // Update screen.value only if it's different from the new state + if (screen.value !== newScreen) { + screen.value = newScreen; + } }, { detached: true } -) +); diff --git a/src/components/World.vue b/src/components/World.vue index 2d9e0ad..a676700 100644 --- a/src/components/World.vue +++ b/src/components/World.vue @@ -1,3 +1,5 @@ + + @@ -15,7 +17,7 @@ import Character from '@/components/sprites/Character.vue' import { type Character as CharacterType } from '@/types' import { onBeforeMount, onBeforeUnmount, ref, type Ref, watch } from 'vue' import Controls from '@/components/utilities/Controls.vue' -import { useSocketStore } from '@/stores/socket' +import { useGameStore } from '@/stores/game' import { useZoneStore } from '@/stores/zone' // Phavuer logic @@ -33,7 +35,7 @@ scene.cameras.main.centerOn(centerX, centerY) // Multiplayer / server logics const zoneStore = useZoneStore() -const socket = useSocketStore() +const gameStore = useGameStore() // Watch for changes in the zoneStore and update the layer watch( @@ -47,11 +49,11 @@ watch( // Load the zone from the server onBeforeMount(() => { - socket.connection.emit('character:zone:request', { zoneId: socket.character.zoneId }) + gameStore.connection.emit('character:zone:request', { zoneId: gameStore.character.zoneId }) }) // Listen for the zone event from the server and load the zone -socket.connection.on('character:zone:load', (data) => { +gameStore.connection.on('character:zone:load', (data) => { console.log('character:zone:load', data) zoneStore.setTiles(data.zone.tiles) @@ -60,28 +62,28 @@ socket.connection.on('character:zone:load', (data) => { }) // Listen for player join events -socket.connection.on('zone:character:join', (data: CharacterType) => { +gameStore.connection.on('zone:character:join', (data: CharacterType) => { console.log('character:zone:join', data) zoneStore.addCharacter(data) }) // Listen for user:disconnect -socket.connection.on('zone:character:leave', (data: CharacterType) => { +gameStore.connection.on('zone:character:leave', (data: CharacterType) => { zoneStore.removeCharacter(data) }) -socket.connection.on('character:moved', (data: CharacterType) => { +gameStore.connection.on('character:moved', (data: CharacterType) => { console.log('character:moved', data) zoneStore.updateCharacter(data) }) onBeforeUnmount(() => { zoneStore.reset() - socket.connection.emit('character:zone:leave') - socket.connection.off('character:zone:load') - socket.connection.off('zone:character:join') - socket.connection.off('user:disconnect') - socket.connection.off('character:moved') + gameStore.connection.emit('character:zone:leave') + gameStore.connection.off('character:zone:load') + gameStore.connection.off('zone:character:join') + gameStore.connection.off('user:disconnect') + gameStore.connection.off('character:moved') }) /** diff --git a/src/components/gui/Hud.vue b/src/components/gui/Hud.vue index 8c50f63..75af626 100644 --- a/src/components/gui/Hud.vue +++ b/src/components/gui/Hud.vue @@ -7,16 +7,16 @@ - {{ socket.character.name }} - lvl. {{ socket.character.level }} + {{ game.character.name }} + lvl. {{ game.character.level }} HP - {{ socket.character.hitpoints }}% + {{ socket.character.hitpoints }}% MP - {{ socket.character.mana }}% + {{ socket.character.mana }}% @@ -31,12 +31,12 @@ - {{ socket.character.name }} + {{ game.character.name }} lvl. {{ socket.character.level }} HP - {{ socket.character.hitpoints }}% + {{ socket.character.hitpoints }}% @@ -44,9 +44,9 @@