1
0
forked from noxious/client

Worked on zones

This commit is contained in:
Dennis Postma 2024-06-03 20:23:54 +02:00
parent bee03c5ed5
commit bcb21ce916
3 changed files with 19 additions and 21 deletions

View File

@ -10,6 +10,7 @@
<script setup lang="ts"> <script setup lang="ts">
import { Container, refObj, TilemapLayer, useScene } from 'phavuer' import { Container, refObj, TilemapLayer, useScene } from 'phavuer'
import Character from '@/components/sprites/Character.vue' import Character from '@/components/sprites/Character.vue'
import {Character as CharacterType} from '@/types'
import config from '@/config' import config from '@/config'
import { onBeforeMount, onMounted, reactive, ref, type Ref, toRaw, watch } from 'vue' import { onBeforeMount, onMounted, reactive, ref, type Ref, toRaw, watch } from 'vue'
import Tileset = Phaser.Tilemaps.Tileset import Tileset = Phaser.Tilemaps.Tileset
@ -53,7 +54,6 @@ watch(
// Load the zone from the server // Load the zone from the server
onBeforeMount(() => { onBeforeMount(() => {
socket.getConnection.emit('character:connect')
socket.getConnection.emit('character:zone:load') socket.getConnection.emit('character:zone:load')
}) })
@ -76,17 +76,13 @@ socket.getConnection.on('character:zone:load', (data) => {
}) })
// Listen for player join events // Listen for player join events
socket.getConnection.on('player_join', (data) => { socket.getConnection.on('character:zone:character_join', (data: CharacterType) => {
console.log('player_join', data) console.log('character:zone:character_join', data)
if (data.id === socket.getConnection.id) { if (data.id === socket.getConnection.character.id) {
console.log('self') console.log('self')
return return
} }
zoneStore.addPlayer(data) zoneStore.addCharacter(data)
})
socket.getConnection.on('ping', (data) => {
console.log('ping', data)
}) })
/** /**

View File

@ -59,7 +59,6 @@ import { ref } from 'vue'
import Modal from '@/components/utilities/Modal.vue' import Modal from '@/components/utilities/Modal.vue'
import {type Character as CharacterT} from '@/types' import {type Character as CharacterT} from '@/types'
const characters = ref([]) const characters = ref([])
const socket = useSocketStore() const socket = useSocketStore()
@ -72,7 +71,6 @@ socket.getConnection.emit('character:list')
// Select character logics // Select character logics
const selected_character = ref(null) const selected_character = ref(null)
function select_character() { function select_character() {
console.log(selected_character.value)
if (!selected_character.value) return if (!selected_character.value) return
socket.getConnection.emit('character:connect', { character_id: selected_character.value }) socket.getConnection.emit('character:connect', { character_id: selected_character.value })
socket.getConnection.on('character:connect', (data: CharacterT) => socket.setCharacter(data)) socket.getConnection.on('character:connect', (data: CharacterT) => socket.setCharacter(data))
@ -86,7 +84,7 @@ function delete_character(character_id: number) {
// Create character logics // Create character logics
const isModalOpen = ref(false) const isModalOpen = ref(false)
let name: any = ref('') const name = ref('')
function create() { function create() {
socket.getConnection.on('character:create:success', (data: CharacterT) => { socket.getConnection.on('character:create:success', (data: CharacterT) => {
socket.setCharacter(data) socket.setCharacter(data)

View File

@ -1,30 +1,34 @@
import { defineStore } from 'pinia' import { defineStore } from 'pinia'
import type { Character } from '@/types'
export const useZoneStore = defineStore('zone', { export const useZoneStore = defineStore('zone', {
state: () => ({ state: () => ({
loaded: false, loaded: false,
tiles: undefined, tiles: undefined,
players: {} characters: [] as Character[]
}), }),
getters: { getters: {
isLoaded: (state) => state.loaded, isLoaded: (state) => state.loaded,
getTiles: (state) => state.tiles, getTiles: (state) => state.tiles,
getPlayers: (state) => state.players getCharacters: (state) => state.characters
}, },
actions: { actions: {
loadTiles(tiles: any) { loadTiles(tiles: any) {
this.tiles = tiles this.tiles = tiles
this.loaded = true this.loaded = true
}, },
addPlayers(player: any) { setCharacters(characters: Character[]) {
this.players = player this.characters = characters
}, },
addPlayer(player: any) { addCharacter(character: Character) {
this.players[player.id] = player this.characters.push(character)
console.log('Player added:', player)
}, },
removePlayer(playerId: any) { removeCharacter(character: Character) {
delete this.players[playerId] 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
} }
} }
}) })