diff --git a/src/components/gameMaster/GmTools.vue b/src/components/gameMaster/GmTools.vue
index 963037c..f746809 100644
--- a/src/components/gameMaster/GmTools.vue
+++ b/src/components/gameMaster/GmTools.vue
@@ -1,5 +1,5 @@
-
+
GM tools
@@ -15,7 +15,33 @@
import Modal from '@/components/utilities/Modal.vue'
import { useZoneEditorStore } from '@/stores/zoneEditor'
import { useGameStore } from '@/stores/game'
+import { onMounted, ref } from 'vue'
const zoneEditorStore = useZoneEditorStore()
const gameStore = useGameStore()
+const modalWidth = ref(200);
+const modalHeight = ref(160);
+
+let posXY = ref({x: 0, y: 0});
+
+onMounted(() => {
+
+ window.addEventListener('resize', () => {
+ posXY.value = customPositionGmPanel(modalWidth.value);
+ })
+
+})
+
+const customPositionGmPanel = (modalWidth: number) => {
+ const padding = 25
+ const width = window.innerWidth
+
+ const x = width - (modalWidth+4) - 25
+ const y = padding
+
+ return { x, y }
+}
+
+posXY.value = customPositionGmPanel(modalWidth.value)
+
diff --git a/src/components/sprites/Character.vue b/src/components/sprites/Character.vue
index 8ca1d7f..a1e9ea2 100644
--- a/src/components/sprites/Character.vue
+++ b/src/components/sprites/Character.vue
@@ -16,11 +16,12 @@
diff --git a/src/components/zone/Zone.vue b/src/components/zone/Zone.vue
index eb4006f..2de107a 100644
--- a/src/components/zone/Zone.vue
+++ b/src/components/zone/Zone.vue
@@ -13,7 +13,7 @@ import type { Character as CharacterT, Zone as ZoneT, ExtendedCharacter as Exten
import Tiles from '@/components/zone/Tiles.vue'
import Objects from '@/components/zone/Objects.vue'
import Characters from '@/components/zone/Characters.vue'
-import { loadAssets } from '@/composables/zoneComposable'
+import { loadAssets, tileToWorldX, tileToWorldY } from '@/composables/zoneComposable'
const gameStore = useGameStore()
const zoneStore = useZoneStore()
@@ -26,19 +26,23 @@ type zoneLoadData = {
characters: CharacterT[]
}
+
gameStore.connection!.emit('zone:character:join', { zoneId: gameStore.character!.zoneId }, async (response: zoneLoadData) => {
// Fetch assets for new zone
await gameStore.fetchZoneAssets(response.zone.id)
await loadAssets(scene)
+
+
// Set zone and characters
zoneStore.setZone(response.zone)
zoneStore.setCharacters(response.characters)
+ scene.cameras.main.setScroll(-(scene.cameras.main.worldView.width/2) - gameStore.character.relativePosition.x, -(scene.cameras.main.worldView.height/2) + gameStore.character.relativePosition.y)
+ console.log('--- CHARACTER JOIN')
})
// Event listeners
gameStore.connection!.on('zone:character:teleport', async (data: zoneLoadData) => {
- console.log('eeee');
/**
* This is the cause of the bug
*/
@@ -56,6 +60,12 @@ gameStore.connection!.on('zone:character:teleport', async (data: zoneLoadData) =
zoneStore.setZone(data.zone)
zoneStore.setCharacters(data.characters)
+
+ const character = gameStore.character;
+ // Position character centered on zone change or teleport
+ const posX = tileToWorldX(tileMap.value, character.positionX, character.positionY)
+ const posY = tileToWorldY(tileMap.value, character.positionX, character.positionY)
+ scene.cameras.main.setScroll(-(scene.cameras.main.worldView.width/2) + posX, -(scene.cameras.main.worldView.height/2) + posY)
})
gameStore.connection!.on('zone:character:join', async (data: ExtendedCharacterT) => {
diff --git a/src/composables/useCameraControls.ts b/src/composables/useCameraControls.ts
index 56b6617..8f908a5 100644
--- a/src/composables/useCameraControls.ts
+++ b/src/composables/useCameraControls.ts
@@ -6,6 +6,15 @@ export function useCameraControls(scene: Phaser.Scene): any {
const camera = ref(scene.cameras.main)
const isDragging = ref(false)
+ // Resize center camera on character.
+ window.addEventListener('resize', () => {
+ console.log('woep')
+ // Need to change camera position next frame
+ setTimeout(() => {
+ scene.cameras.main.setScroll(-(scene.cameras.main.worldView.width/2) + gameStore.character.relativePosition.x, -(scene.cameras.main.worldView.height/2) + gameStore.character.relativePosition.y)
+ }, 0)
+ })
+
function onPointerDown(pointer: Phaser.Input.Pointer) {
if (pointer.event instanceof MouseEvent || pointer.event.shiftKey) {
isDragging.value = true
diff --git a/src/types.ts b/src/types.ts
index 55fafe7..763553c 100644
--- a/src/types.ts
+++ b/src/types.ts
@@ -142,6 +142,7 @@ export type Character = {
role: string
positionX: number
positionY: number
+ relativePosition: {x: number, y: number}
rotation: number
zoneId: number
zone: Zone