diff --git a/package-lock.json b/package-lock.json
index 8071350..8ac3727 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -150,9 +150,9 @@
}
},
"node_modules/@babel/generator": {
- "version": "7.25.4",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.4.tgz",
- "integrity": "sha512-NFtZmZsyzDPJnk9Zg3BbTfKKc9UlHYzD0E//p2Z3B9nCwwtJW9T0gVbCz8+fBngnn4zf1Dr3IK8PHQQHq0lDQw==",
+ "version": "7.25.5",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.5.tgz",
+ "integrity": "sha512-abd43wyLfbWoxC6ahM8xTkqLpGB2iWBVyuKC9/srhFunCd1SDNrV1s72bBpK4hLj8KLzHBBcOblvLQZBNw9r3w==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -2750,9 +2750,9 @@
}
},
"node_modules/axios": {
- "version": "1.7.4",
- "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.4.tgz",
- "integrity": "sha512-DukmaFRnY6AzAALSH4J2M3k6PkaC+MfaAGdEERRWcC9q3/TWQwLpHR8ZRLKTdQ3aBDL64EdluRDjJqKw+BPZEw==",
+ "version": "1.7.5",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.5.tgz",
+ "integrity": "sha512-fZu86yCo+svH3uqJ/yTdQ0QHpQu5oL+/QE+QPSv6BZSkDAoky9vytxp7u5qk83OJFS3kEBcesWni9WTZAv3tSw==",
"license": "MIT",
"dependencies": {
"follow-redirects": "^1.15.6",
diff --git a/src/components/World.vue b/src/components/World.vue
deleted file mode 100644
index f1a7d43..0000000
--- a/src/components/World.vue
+++ /dev/null
@@ -1,118 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/components/Zone.vue b/src/components/Zone.vue
new file mode 100644
index 0000000..cb0e589
--- /dev/null
+++ b/src/components/Zone.vue
@@ -0,0 +1,233 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/sprites/Character.vue b/src/components/sprites/Character.vue
index 9fa5550..2ff0524 100644
--- a/src/components/sprites/Character.vue
+++ b/src/components/sprites/Character.vue
@@ -17,6 +17,7 @@ import { Container, Image, RoundRectangle, Sprite, Text } from 'phavuer'
import { type ExtendedCharacter as CharacterT } from '@/types'
import { tileToWorldX, tileToWorldY } from '@/services/zone'
import { watch, computed, ref, onMounted, onUnmounted } from 'vue'
+import config from '@/config'
interface Props {
layer: Phaser.Tilemaps.TilemapLayer
@@ -48,19 +49,27 @@ const updatePosition = (x: number, y: number) => {
}
const distance = Math.sqrt(Math.pow(targetX - currentX.value, 2) + Math.pow(targetY - currentY.value, 2))
- const duration = distance * 5 // Adjust this multiplier to control overall speed
- tween.value = props.layer.scene.tweens.add({
- targets: { x: currentX.value, y: currentY.value },
- x: targetX,
- y: targetY,
- duration: duration,
- ease: 'Linear',
- onUpdate: (tween) => {
- currentX.value = tween.targets[0].x ?? 0
- currentY.value = tween.targets[0].y ?? 0
- }
- })
+ if (distance > config.tile_size.x) {
+ // Teleport: No animation
+ currentX.value = targetX
+ currentY.value = targetY
+ } else {
+ // Normal movement: Animate
+ const duration = distance * 5 // Adjust this multiplier to control overall speed
+
+ tween.value = props.layer.scene.tweens.add({
+ targets: { x: currentX.value, y: currentY.value },
+ x: targetX,
+ y: targetY,
+ duration: duration,
+ ease: 'Linear',
+ onUpdate: (tween) => {
+ currentX.value = tween.targets[0].x ?? 0
+ currentY.value = tween.targets[0].y ?? 0
+ }
+ })
+ }
}
watch(
diff --git a/src/components/utilities/zoneEditor/ZoneEditor.vue b/src/components/utilities/zoneEditor/ZoneEditor.vue
index 9bb296f..79ff00d 100644
--- a/src/components/utilities/zoneEditor/ZoneEditor.vue
+++ b/src/components/utilities/zoneEditor/ZoneEditor.vue
@@ -1,6 +1,6 @@
-
-
+
+
zoneEditorStore.setSelectedZoneObject(object)" />
@@ -40,6 +40,8 @@ import ZoneSettings from '@/components/utilities/zoneEditor/partials/ZoneSetting
import Objects from '@/components/utilities/zoneEditor/partials/ObjectList.vue'
import ZoneList from '@/components/utilities/zoneEditor/partials/ZoneList.vue'
import TeleportModal from '@/components/utilities/zoneEditor/partials/TeleportModal.vue'
+import Tilemap = Phaser.Tilemaps.Tilemap
+import TilemapLayer = Phaser.Tilemaps.TilemapLayer
const scene = useScene()
const gameStore = useGameStore()
@@ -72,7 +74,7 @@ function createTilemap() {
function createTileLayer() {
const tilesetImages = assetStore.assets.filter((asset) => asset.group === 'tiles').map((asset, index) => zoneTilemap.value.addTilesetImage(asset.key, asset.key, config.tile_size.x, config.tile_size.y, 0, 0, index + 1))
tilesetImages.push(zoneTilemap.value.addTilesetImage('blank_tile', 'blank_tile', config.tile_size.x, config.tile_size.y, 0, 0, 0))
- return zoneTilemap.value.createBlankLayer('tiles', tilesetImages, 0, config.tile_size.y)
+ return zoneTilemap.value.createBlankLayer('tiles', tilesetImages as any, 0, config.tile_size.y)
}
function createTileArray() {
@@ -82,8 +84,8 @@ function createTileArray() {
function getObjectImageProps(object: ZoneObject) {
return {
tint: selectedZoneObject.value?.id === object.id ? 0x00ff00 : 0xffffff,
- x: tileToWorldX(zoneTilemap.value, object.positionX, object.positionY),
- y: tileToWorldY(zoneTilemap.value, object.positionX, object.positionY),
+ x: tileToWorldX(zoneTilemap.value as Tilemap, object.positionX, object.positionY),
+ y: tileToWorldY(zoneTilemap.value as Tilemap, object.positionX, object.positionY),
texture: object.object.id,
originY: Number(object.object.originX),
originX: Number(object.object.originY)
@@ -100,7 +102,7 @@ function getEventTileImageProps(tile: ZoneEventTile) {
function eraser(tile: Phaser.Tilemaps.Tile) {
if (eraserMode.value === 'tile') {
- placeTile(zoneTilemap.value, tiles.value, tile.x, tile.y, 'blank_tile')
+ placeTile(zoneTilemap.value as Tilemap, tiles.value as TilemapLayer, tile.x, tile.y, 'blank_tile')
tileArray.value[tile.y][tile.x] = 'blank_tile'
} else if (eraserMode.value === 'object') {
zoneObjects.value = zoneObjects.value.filter((object) => object.positionX !== tile.x || object.positionY !== tile.y)
@@ -111,7 +113,7 @@ function eraser(tile: Phaser.Tilemaps.Tile) {
function pencil(tile: Phaser.Tilemaps.Tile) {
if (drawMode.value === 'tile' && selectedTile.value) {
- placeTile(zoneTilemap.value, tiles.value, tile.x, tile.y, selectedTile.value.id)
+ placeTile(zoneTilemap.value as Tilemap, tiles.value as TilemapLayer, tile.x, tile.y, selectedTile.value.id)
tileArray.value[tile.y][tile.x] = selectedTile.value.id
} else if (drawMode.value === 'object' && selectedObject.value) {
addZoneObject(tile)
@@ -151,14 +153,14 @@ function addZoneEventTile(tile: Phaser.Tilemaps.Tile) {
}
: undefined
}
- zoneEventTiles.value = [...new Set([...zoneEventTiles.value, newEventTile])]
+ zoneEventTiles.value = [...new Set([...zoneEventTiles.value, newEventTile])] as any
}
function paint() {
if (!selectedTile.value) return
tileArray.value.forEach((row, y) =>
row.forEach((_, x) => {
- placeTile(zoneTilemap.value, tiles.value, x, y, selectedTile.value!.id)
+ placeTile(zoneTilemap.value as Tilemap, tiles.value as TilemapLayer, x, y, selectedTile.value!.id)
tileArray.value[y][x] = selectedTile.value!.id
})
)
@@ -184,7 +186,7 @@ function save() {
}
function clear() {
- tileArray.value.forEach((row, y) => row.forEach((_, x) => placeTile(zoneTilemap.value, tiles.value, x, y, 'blank_tile')))
+ tileArray.value.forEach((row, y) => row.forEach((_, x) => placeTile(zoneTilemap.value as Tilemap, tiles.value as TilemapLayer, x, y, 'blank_tile')))
tileArray.value = createTileArray()
zoneEventTiles.value = []
zoneObjects.value = []
diff --git a/src/components/utilities/zoneEditor/partials/ZoneList.vue b/src/components/utilities/zoneEditor/partials/ZoneList.vue
index b64e4d8..2182b84 100644
--- a/src/components/utilities/zoneEditor/partials/ZoneList.vue
+++ b/src/components/utilities/zoneEditor/partials/ZoneList.vue
@@ -29,7 +29,7 @@
diff --git a/src/services/zone.ts b/src/services/zone.ts
index 5352f68..6b3df35 100644
--- a/src/services/zone.ts
+++ b/src/services/zone.ts
@@ -23,7 +23,7 @@ export function tileToWorldX(layer: Phaser.Tilemaps.TilemapLayer, pos_x: number,
return worldPoint.x + config.tile_size.x / 2
}
-export function tileToWorldY(layer: Phaser.Tilemaps.TilemapLayer, pos_x: number, pos_y: number): number {
+export function tileToWorldY(layer: TilemapLayer, pos_x: number, pos_y: number): number {
const worldPoint = layer.tileToWorldXY(pos_x, pos_y)
return worldPoint.y + config.tile_size.y * 1.5
}
@@ -86,8 +86,8 @@ export const updateZoneTiles = (zoneTilemap: Tilemap, tiles: Phaser.Tilemaps.Til
}
// Update the tilemap with any new 'blank_tile' entries
- zoneTiles.forEach((row: any, y: number) => {
- row.forEach((tileId, x) => {
+ zoneTiles.forEach((row: any, y: any) => {
+ row.forEach((tileId: any, x: any) => {
placeTile(zoneTilemap, tiles, x, y, tileId)
})
})
diff --git a/src/stores/game.ts b/src/stores/game.ts
index 0b96d95..5145440 100644
--- a/src/stores/game.ts
+++ b/src/stores/game.ts
@@ -70,6 +70,9 @@ export const useGameStore = defineStore('game', {
this.token = null
this.user = null
this.character = null
+ this.isGmPanelOpen = false
+ this.isMovingCamera = false
+ this.isChatOpen = false
useCookies().remove('token')
}