Centered camera & Modal position changes
- Able to give position to modal other then centered. - Camera now centered on character when - Character joins zone - Character teleports on to zone - Window resize
This commit is contained in:
@ -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) => {
|
||||
|
Reference in New Issue
Block a user