forked from noxious/client
Worked on zones
This commit is contained in:
parent
bee03c5ed5
commit
bcb21ce916
@ -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)
|
|
||||||
})
|
})
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -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)
|
||||||
|
@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
Loading…
x
Reference in New Issue
Block a user