From 85f0fca2ae87d16896bbe4fba0636dad79bc945b Mon Sep 17 00:00:00 2001 From: Dennis Postma <dennis@directonline.io> Date: Tue, 24 Dec 2024 00:54:20 +0100 Subject: [PATCH] Added copy sprite button, changed asset manager layout, updated packages --- .env.example | 2 +- index.html | 2 +- package-lock.json | 18 +++++++++--------- .../gameMaster/assetManager/AssetManager.vue | 2 +- .../partials/sprite/SpriteDetails.vue | 15 +++++++++++++++ src/components/screens/Login.vue | 2 +- 6 files changed, 28 insertions(+), 13 deletions(-) diff --git a/.env.example b/.env.example index e56837a..d9a1301 100644 --- a/.env.example +++ b/.env.example @@ -1,4 +1,4 @@ -VITE_NAME=Noxious World +VITE_NAME=Noxious VITE_DEVELOPMENT=true VITE_SERVER_ENDPOINT=http://localhost:4000 VITE_TILE_SIZE_X=64 diff --git a/index.html b/index.html index 409b1ec..f0c6254 100644 --- a/index.html +++ b/index.html @@ -4,7 +4,7 @@ <meta charset="UTF-8"> <link rel="icon" href="/favicon.ico"> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"> - <title>Noxious World - Play</title> + <title>Noxious - Play</title> </head> <body> <div id="app"></div> diff --git a/package-lock.json b/package-lock.json index 25966b3..b7be796 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3594,9 +3594,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.75", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.75.tgz", - "integrity": "sha512-Lf3++DumRE/QmweGjU+ZcKqQ+3bKkU/qjaKYhIJKEOhgIO9Xs6IiAQFkfFoj+RhgDk4LUeNsLo6plExHqSyu6Q==", + "version": "1.5.76", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.76.tgz", + "integrity": "sha512-CjVQyG7n7Sr+eBXE86HIulnL5N8xZY1sgmOPGuq/F0Rr0FJq63lg0kEtOIDfZBk44FnDLf6FUJ+dsJcuiUDdDQ==", "dev": true, "license": "ISC" }, @@ -4118,9 +4118,9 @@ "license": "MIT" }, "node_modules/fastq": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", - "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.18.0.tgz", + "integrity": "sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==", "dev": true, "license": "ISC", "dependencies": { @@ -7606,9 +7606,9 @@ } }, "node_modules/vue-component-type-helpers": { - "version": "2.1.10", - "resolved": "https://registry.npmjs.org/vue-component-type-helpers/-/vue-component-type-helpers-2.1.10.tgz", - "integrity": "sha512-lfgdSLQKrUmADiSV6PbBvYgQ33KF3Ztv6gP85MfGaGaSGMTXORVaHT1EHfsqCgzRNBstPKYDmvAV9Do5CmJ07A==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/vue-component-type-helpers/-/vue-component-type-helpers-2.2.0.tgz", + "integrity": "sha512-cYrAnv2me7bPDcg9kIcGwjJiSB6Qyi08+jLDo9yuvoFQjzHiPTzML7RnkJB1+3P6KMsX/KbCD4QE3Tv/knEllw==", "dev": true, "license": "MIT" }, diff --git a/src/components/gameMaster/assetManager/AssetManager.vue b/src/components/gameMaster/assetManager/AssetManager.vue index c4020d5..ac2d7d7 100644 --- a/src/components/gameMaster/assetManager/AssetManager.vue +++ b/src/components/gameMaster/assetManager/AssetManager.vue @@ -48,7 +48,7 @@ </div> <!-- Asset details --> - <div class="flex w-4/12 after:hidden flex-col relative overflow-auto"> + <div class="flex w-7/12 after:hidden flex-col relative overflow-auto"> <TileDetails v-if="selectedCategory === 'tiles' && assetManagerStore.selectedTile" /> <ObjectDetails v-if="selectedCategory === 'objects' && assetManagerStore.selectedObject" /> <SpriteDetails v-if="selectedCategory === 'sprites' && assetManagerStore.selectedSprite" /> diff --git a/src/components/gameMaster/assetManager/partials/sprite/SpriteDetails.vue b/src/components/gameMaster/assetManager/partials/sprite/SpriteDetails.vue index 15f8eb0..1040d4d 100644 --- a/src/components/gameMaster/assetManager/partials/sprite/SpriteDetails.vue +++ b/src/components/gameMaster/assetManager/partials/sprite/SpriteDetails.vue @@ -10,6 +10,11 @@ <div class="w-full flex gap-2 mt-2 pb-4 relative"> <button class="btn-cyan px-4 py-2 flex-1 sm:flex-none sm:min-w-24" type="button" @click.prevent="saveSprite">Save</button> <button class="btn-red px-4 py-2 flex-1 sm:flex-none sm:min-w-24" type="button" @click.prevent="deleteSprite">Delete</button> + <button class="btn bg-indigo-500 hover:bg-indigo-600 rounded text-white px-4 py-2 flex-1 sm:flex-none" type="button" @click.prevent="copySprite"> + <svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5" fill="none" viewBox="0 0 24 24" stroke="currentColor"> + <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z" /> + </svg> + </button> </div> </div> @@ -99,6 +104,16 @@ function deleteSprite() { }) } +function copySprite() { + gameStore.connection?.emit('gm:sprite:copy', { id: selectedSprite.value?.id }, (response: boolean) => { + if (!response) { + console.error('Failed to copy sprite') + return + } + refreshSpriteList(false) + }) +} + function refreshSpriteList(unsetSelectedSprite = true) { gameStore.connection?.emit('gm:sprite:list', {}, (response: Sprite[]) => { assetManagerStore.setSpriteList(response) diff --git a/src/components/screens/Login.vue b/src/components/screens/Login.vue index f69973d..188bdad 100644 --- a/src/components/screens/Login.vue +++ b/src/components/screens/Login.vue @@ -6,7 +6,7 @@ <div class="bg-[url('/assets/login/login-bg.png')] w-full lg:w-1/2 h-[35dvh] lg:h-dvh absolute left-0 max-lg:bottom-0 lg:top-0 bg-no-repeat bg-cover bg-center"></div> <div class="bg-gray-900 z-20 w-full lg:w-1/2 h-[65dvh] lg:h-dvh relative"> <div class="h-dvh flex items-center lg:justify-center flex-col px-8 max-lg:pt-20"> -<!-- <img src="/assets/tlogo.png" class="mb-10 w-52" alt="Noxious World logo" />--> +<!-- <img src="/assets/tlogo.png" class="mb-10 w-52" alt="Noxious logo" />--> <div class="relative"> <img src="/assets/ui-elements/login-ui-box-outer.svg" class="absolute w-full h-full" alt="UI box outer" /> <img src="/assets/ui-elements/login-ui-box-inner.svg" class="absolute left-2 top-2 w-[calc(100%_-_16px)] h-[calc(100%_-_16px)] max-lg:hidden" alt="UI box inner" />