From bcb21ce916ba63b8423608077100af4ab8df9a42 Mon Sep 17 00:00:00 2001 From: Dennis Postma <dennis@directonline.io> Date: Mon, 3 Jun 2024 20:23:54 +0200 Subject: [PATCH] Worked on zones --- src/components/World.vue | 14 +++++--------- src/components/screens/Characters.vue | 4 +--- src/stores/zone.ts | 22 +++++++++++++--------- 3 files changed, 19 insertions(+), 21 deletions(-) diff --git a/src/components/World.vue b/src/components/World.vue index 47547a4..1679d18 100644 --- a/src/components/World.vue +++ b/src/components/World.vue @@ -10,6 +10,7 @@ <script setup lang="ts"> import { Container, refObj, TilemapLayer, useScene } from 'phavuer' import Character from '@/components/sprites/Character.vue' +import {Character as CharacterType} from '@/types' import config from '@/config' import { onBeforeMount, onMounted, reactive, ref, type Ref, toRaw, watch } from 'vue' import Tileset = Phaser.Tilemaps.Tileset @@ -53,7 +54,6 @@ watch( // Load the zone from the server onBeforeMount(() => { - socket.getConnection.emit('character:connect') socket.getConnection.emit('character:zone:load') }) @@ -76,17 +76,13 @@ socket.getConnection.on('character:zone:load', (data) => { }) // Listen for player join events -socket.getConnection.on('player_join', (data) => { - console.log('player_join', data) - if (data.id === socket.getConnection.id) { +socket.getConnection.on('character:zone:character_join', (data: CharacterType) => { + console.log('character:zone:character_join', data) + if (data.id === socket.getConnection.character.id) { console.log('self') return } - zoneStore.addPlayer(data) -}) - -socket.getConnection.on('ping', (data) => { - console.log('ping', data) + zoneStore.addCharacter(data) }) /** diff --git a/src/components/screens/Characters.vue b/src/components/screens/Characters.vue index 34a5718..a04868a 100644 --- a/src/components/screens/Characters.vue +++ b/src/components/screens/Characters.vue @@ -59,7 +59,6 @@ import { ref } from 'vue' import Modal from '@/components/utilities/Modal.vue' import {type Character as CharacterT} from '@/types' - const characters = ref([]) const socket = useSocketStore() @@ -72,7 +71,6 @@ socket.getConnection.emit('character:list') // Select character logics const selected_character = ref(null) function select_character() { - console.log(selected_character.value) if (!selected_character.value) return socket.getConnection.emit('character:connect', { character_id: selected_character.value }) socket.getConnection.on('character:connect', (data: CharacterT) => socket.setCharacter(data)) @@ -86,7 +84,7 @@ function delete_character(character_id: number) { // Create character logics const isModalOpen = ref(false) -let name: any = ref('') +const name = ref('') function create() { socket.getConnection.on('character:create:success', (data: CharacterT) => { socket.setCharacter(data) diff --git a/src/stores/zone.ts b/src/stores/zone.ts index b0b939b..ad850be 100644 --- a/src/stores/zone.ts +++ b/src/stores/zone.ts @@ -1,30 +1,34 @@ import { defineStore } from 'pinia' +import type { Character } from '@/types' export const useZoneStore = defineStore('zone', { state: () => ({ loaded: false, tiles: undefined, - players: {} + characters: [] as Character[] }), getters: { isLoaded: (state) => state.loaded, getTiles: (state) => state.tiles, - getPlayers: (state) => state.players + getCharacters: (state) => state.characters }, actions: { loadTiles(tiles: any) { this.tiles = tiles this.loaded = true }, - addPlayers(player: any) { - this.players = player + setCharacters(characters: Character[]) { + this.characters = characters }, - addPlayer(player: any) { - this.players[player.id] = player - console.log('Player added:', player) + addCharacter(character: Character) { + this.characters.push(character) }, - removePlayer(playerId: any) { - delete this.players[playerId] + removeCharacter(character: Character) { + this.characters = this.characters.filter((c: Character) => c.id !== character.id) + }, + updateCharacter(character: Character) { + const index = this.characters.findIndex((c: Character) => c.id === character.id) + this.characters[index] = character } } })