From 58bff2010fb55b3b1d719559dc2f75bea52c3340 Mon Sep 17 00:00:00 2001 From: Dennis Postma Date: Mon, 10 Jun 2024 17:46:25 +0200 Subject: [PATCH] Zone editor GUI (WIP), added a few helper functions --- .../assets/icons/zoneEditor/eraser-tool.svg | 1 + public/assets/icons/zoneEditor/tiles.svg | 48 +++++++++++ src/assets/scss/_variables.scss | 1 + src/components/Game.vue | 20 +++-- src/components/World.vue | 6 +- src/components/sprites/Character.vue | 18 ++--- src/components/utilities/Controls.vue | 38 +++------ .../GmUtilityWindow.vue => GmTools.vue} | 0 .../utilities/zoneEditor/ZoneEditor.vue | 5 +- .../zoneEditor/ZoneEditorToolbar.vue | 81 +++++++++++++++++++ src/services/zone.ts | 10 +++ src/stores/zone.ts | 9 ++- 12 files changed, 190 insertions(+), 47 deletions(-) create mode 100644 public/assets/icons/zoneEditor/eraser-tool.svg create mode 100644 public/assets/icons/zoneEditor/tiles.svg rename src/components/utilities/{gmTools/GmUtilityWindow.vue => GmTools.vue} (100%) create mode 100644 src/components/utilities/zoneEditor/ZoneEditorToolbar.vue diff --git a/public/assets/icons/zoneEditor/eraser-tool.svg b/public/assets/icons/zoneEditor/eraser-tool.svg new file mode 100644 index 0000000..c0e1bf9 --- /dev/null +++ b/public/assets/icons/zoneEditor/eraser-tool.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/assets/icons/zoneEditor/tiles.svg b/public/assets/icons/zoneEditor/tiles.svg new file mode 100644 index 0000000..26cad8a --- /dev/null +++ b/public/assets/icons/zoneEditor/tiles.svg @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/scss/_variables.scss b/src/assets/scss/_variables.scss index b66a71c..ad7825c 100644 --- a/src/assets/scss/_variables.scss +++ b/src/assets/scss/_variables.scss @@ -11,4 +11,5 @@ $light-gray: #d3d3d3; $blue-gray: #778899; $cyan: #368f8b; $dark-cyan: #376362; +$light-cyan: #00b3b3; $green: #09ad19; \ No newline at end of file diff --git a/src/components/Game.vue b/src/components/Game.vue index cb09aa3..c2ca608 100644 --- a/src/components/Game.vue +++ b/src/components/Game.vue @@ -1,7 +1,9 @@ @@ -28,9 +35,12 @@ import Menubar from '@/components/game/Menu.vue' import { onUnmounted } from 'vue' import ZoneEditor from '@/components/utilities/zoneEditor/ZoneEditor.vue' import Modal from '@/components/utilities/Modal.vue' -import GmUtilityWindow from '@/components/utilities/gmTools/GmUtilityWindow.vue' +import GmTools from '@/components/utilities/GmTools.vue' +import { useZoneStore } from '@/stores/zone' +import ZoneEditorToolbar from '@/components/utilities/zoneEditor/ZoneEditorToolbar.vue' const socket = useSocketStore() +const zone = useZoneStore() onUnmounted(() => { socket.disconnectSocket() diff --git a/src/components/World.vue b/src/components/World.vue index 8d01b5e..bbffa75 100644 --- a/src/components/World.vue +++ b/src/components/World.vue @@ -1,9 +1,9 @@ diff --git a/src/components/utilities/gmTools/GmUtilityWindow.vue b/src/components/utilities/GmTools.vue similarity index 100% rename from src/components/utilities/gmTools/GmUtilityWindow.vue rename to src/components/utilities/GmTools.vue diff --git a/src/components/utilities/zoneEditor/ZoneEditor.vue b/src/components/utilities/zoneEditor/ZoneEditor.vue index 3a9b539..ce6c7e4 100644 --- a/src/components/utilities/zoneEditor/ZoneEditor.vue +++ b/src/components/utilities/zoneEditor/ZoneEditor.vue @@ -16,9 +16,10 @@ + + \ No newline at end of file diff --git a/src/services/zone.ts b/src/services/zone.ts index 793ed13..3eb7203 100644 --- a/src/services/zone.ts +++ b/src/services/zone.ts @@ -6,6 +6,16 @@ export function getTile(x: number, y: number, layer: Phaser.Tilemaps.TilemapLaye return tile } +export function tileToWorldX(layer: Phaser.Tilemaps.TilemapLayer, pos_x: number, pos_y: number) { + const worldPoint = layer.tileToWorldXY(pos_x, pos_y) + return worldPoint.x + config.tile_size.y +} + +export function tileToWorldY(layer: Phaser.Tilemaps.TilemapLayer, pos_x: number, pos_y: number) { + const worldPoint = layer.tileToWorldXY(pos_x, pos_y) + return worldPoint.y +} + export function tileToWorldXY(layer: Phaser.Tilemaps.TilemapLayer, pos_x: number, pos_y: number) { const worldPoint = layer.tileToWorldXY(pos_x, pos_y) const position_x = worldPoint.x + config.tile_size.y diff --git a/src/stores/zone.ts b/src/stores/zone.ts index c3de41d..9e9b61f 100644 --- a/src/stores/zone.ts +++ b/src/stores/zone.ts @@ -5,12 +5,14 @@ export const useZoneStore = defineStore('zone', { state: () => ({ loaded: false, tiles: undefined, - characters: [] as Character[] + characters: [] as Character[], + editorIsOpen: true }), getters: { isLoaded: (state) => state.loaded, getTiles: (state) => state.tiles, - getCharacters: (state) => state.characters + getCharacters: (state) => state.characters, + getEditorIsOpen: (state) => state.editorIsOpen }, actions: { loadTiles(tiles: any) { @@ -33,6 +35,9 @@ export const useZoneStore = defineStore('zone', { } else { console.error(`Character with id ${character.id} not found`) } + }, + setEditorIsOpen(isOpen: boolean) { + this.editorIsOpen = isOpen } } })