forked from noxious/client
wew
This commit is contained in:
parent
0e9cb3e000
commit
1ab9ae32df
@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<TilemapLayer v-if="isMapLoaded" ref="tilemapLayer" :layerIndex="0" :cull-padding-x="10" :cull-padding-y="10" :tilemap="map" :tileset="serverMapData.tiles" />
|
<TilemapLayer v-if="isMapLoaded" ref="tilemapLayer" :layerIndex="0" :cull-padding-x="10" :cull-padding-y="10" :tilemap="tileMap" :tileset="mapStore.map" />
|
||||||
<!-- <Controls :layer="layer" />-->
|
<!-- <Controls :layer="layer" />-->
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@ -17,19 +17,59 @@ import { onBeforeMount, onMounted, reactive, ref, type Ref, toRaw, watch } from
|
|||||||
import Tileset = Phaser.Tilemaps.Tileset
|
import Tileset = Phaser.Tilemaps.Tileset
|
||||||
import Controls from '@/components/Controls.vue'
|
import Controls from '@/components/Controls.vue'
|
||||||
import { useSocketStore } from '@/stores/socket'
|
import { useSocketStore } from '@/stores/socket'
|
||||||
|
import { useMapStore } from '@/stores/map'
|
||||||
|
import { storeToRefs } from 'pinia'
|
||||||
|
|
||||||
onBeforeMount(() => {
|
const mapStore = useMapStore();
|
||||||
socket.socket?.emit('get_map');
|
/**
|
||||||
socket.socket?.on('map', (map) => {
|
* {
|
||||||
// Get map from server
|
* "$id": "map",
|
||||||
serverMapData.value = map;
|
* "map": {
|
||||||
isMapLoaded.value = true;
|
* "_object": {
|
||||||
map.tiles.forEach((row, y) => row.forEach((tile, x) => layer.putTileAt(tile, x, y)));
|
* "map": null
|
||||||
});
|
* },
|
||||||
});
|
* "_key": "map",
|
||||||
|
* "__v_isRef": true
|
||||||
|
* },
|
||||||
|
* "_isOptionsAPI": true
|
||||||
|
* }
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* {
|
||||||
|
* "$id": "map",
|
||||||
|
* "map": {
|
||||||
|
* "_object": {
|
||||||
|
* "map": null
|
||||||
|
* },
|
||||||
|
* "_key": "map",
|
||||||
|
* "__v_isRef": true
|
||||||
|
* },
|
||||||
|
* "_isOptionsAPI": true
|
||||||
|
* }
|
||||||
|
*/
|
||||||
|
// check mapstore change
|
||||||
|
// const { map } = storeToRefs(mapStore);
|
||||||
|
// watch(map, (newVal, oldVal) => {
|
||||||
|
// console.log('mapstore changed', newVal, oldVal);
|
||||||
|
// })
|
||||||
|
|
||||||
|
watch(mapStore, (newVal, oldVal) => {
|
||||||
|
console.log('mapstore changed', storeToRefs(newVal), storeToRefs(oldVal));
|
||||||
|
})
|
||||||
|
|
||||||
|
const socket = useSocketStore();
|
||||||
|
onMounted(() => {
|
||||||
|
socket.getMap();
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
// mapStore.$subscribe((mutation, state) => {
|
||||||
|
// mapStore.map.tiles.forEach((row, y) => row.forEach((tile, x) => layer.putTileAt(tile, x, y)));
|
||||||
|
// })
|
||||||
|
|
||||||
const isMapLoaded = ref(false);
|
const isMapLoaded = ref(false);
|
||||||
const socket = useSocketStore();
|
|
||||||
const serverMapData = ref([]);
|
const serverMapData = ref([]);
|
||||||
const scene = useScene()
|
const scene = useScene()
|
||||||
|
|
||||||
@ -42,13 +82,13 @@ const mapData = new Phaser.Tilemaps.MapData({
|
|||||||
orientation: Phaser.Tilemaps.Orientation.ISOMETRIC,
|
orientation: Phaser.Tilemaps.Orientation.ISOMETRIC,
|
||||||
format: Phaser.Tilemaps.Formats.ARRAY_2D,
|
format: Phaser.Tilemaps.Formats.ARRAY_2D,
|
||||||
});
|
});
|
||||||
const map = new Phaser.Tilemaps.Tilemap(scene, mapData);
|
const tileMap = new Phaser.Tilemaps.Tilemap(scene, mapData);
|
||||||
const tileset: (Tileset|null) = map.addTilesetImage('default', 'tiles');
|
const tileset: (Tileset|null) = tileMap.addTilesetImage('default', 'tiles');
|
||||||
const layer:TilemapLayer = map.createBlankLayer('layer', tileset, 0, config.tile_size.y);
|
const layer:TilemapLayer = tileMap.createBlankLayer('layer', tileset, 0, config.tile_size.y);
|
||||||
|
|
||||||
// center camera
|
// center camera
|
||||||
const centerY = (map.height * map.tileHeight) / 2
|
const centerY = (tileMap.height * tileMap.tileHeight) / 2
|
||||||
const centerX = (map.width * map.tileWidth) / 2
|
const centerX = (tileMap.width * tileMap.tileWidth) / 2
|
||||||
scene.cameras.main.centerOn(centerX, centerY)
|
scene.cameras.main.centerOn(centerX, centerY)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -3,11 +3,12 @@ import Map from '@/engine/Map/Map'
|
|||||||
|
|
||||||
export const useMapStore = defineStore('map', {
|
export const useMapStore = defineStore('map', {
|
||||||
state: () => ({
|
state: () => ({
|
||||||
map: null as Map | null,
|
map: null as any | null,
|
||||||
}),
|
}),
|
||||||
|
|
||||||
actions: {
|
actions: {
|
||||||
setMap(map: Map) {
|
setMap(map: any) {
|
||||||
|
console.log('Setting map:', map);
|
||||||
this.map = map;
|
this.map = map;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -9,6 +9,10 @@ import { defineStore } from 'pinia';
|
|||||||
import { io, Socket } from 'socket.io-client';
|
import { io, Socket } from 'socket.io-client';
|
||||||
import config from '@/config';
|
import config from '@/config';
|
||||||
import axios from 'axios';
|
import axios from 'axios';
|
||||||
|
import { useMapStore } from '@/stores/map';
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
export const useSocketStore = defineStore('socket', {
|
export const useSocketStore = defineStore('socket', {
|
||||||
state: () => ({
|
state: () => ({
|
||||||
@ -59,7 +63,6 @@ export const useSocketStore = defineStore('socket', {
|
|||||||
this.socket.on('message', (message) => {
|
this.socket.on('message', (message) => {
|
||||||
console.log('Received message:', message);
|
console.log('Received message:', message);
|
||||||
});
|
});
|
||||||
|
|
||||||
// Handle more socket events as needed
|
// Handle more socket events as needed
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -68,6 +71,17 @@ export const useSocketStore = defineStore('socket', {
|
|||||||
this.socket.disconnect();
|
this.socket.disconnect();
|
||||||
this.socket = null;
|
this.socket = null;
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
getMap() {
|
||||||
|
if (this.socket) {
|
||||||
|
this.socket.emit('get_map');
|
||||||
|
this.socket.on('map', (map) => {
|
||||||
|
const mapStore = useMapStore();
|
||||||
|
// Get map from server
|
||||||
|
mapStore.setMap(map);
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
Loading…
x
Reference in New Issue
Block a user