81 lines
5.6 KiB
Vue
81 lines
5.6 KiB
Vue
<template>
|
|
<div class="flex gap-4 h-[calc(100%_-_32px)] w-[calc(100%_-_32px)] relative m-4">
|
|
<div class="w-2/12 flex flex-col relative overflow-auto rounded-md default-border bg-gray p-2.5">
|
|
<!-- Asset Categories -->
|
|
<a class="relative p-2.5 hover:cursor-pointer hover:bg-cyan rounded group" :class="{ 'bg-cyan': selectedCategory === 'tiles' }" @click="() => (selectedCategory = 'tiles')">
|
|
<span class="group-hover:text-white" :class="{ 'text-white': selectedCategory === 'tiles' }">Tiles</span>
|
|
</a>
|
|
<a class="relative p-2.5 hover:cursor-pointer hover:bg-cyan rounded group" :class="{ 'bg-cyan': selectedCategory === 'objects' }" @click="() => (selectedCategory = 'objects')">
|
|
<span class="group-hover:text-white" :class="{ 'text-white': selectedCategory === 'objects' }">Objects</span>
|
|
</a>
|
|
<a class="relative p-2.5 hover:cursor-pointer hover:bg-cyan rounded group" :class="{ 'bg-cyan': selectedCategory === 'sprites' }" @click="() => (selectedCategory = 'sprites')">
|
|
<span class="group-hover:text-white" :class="{ 'text-white': selectedCategory === 'sprites' }">Sprites</span>
|
|
</a>
|
|
<a class="relative p-2.5 hover:cursor-pointer hover:bg-cyan rounded group" :class="{ 'bg-cyan': selectedCategory === 'items' }" @click="() => (selectedCategory = 'items')">
|
|
<span class="group-hover:text-white" :class="{ 'text-white': selectedCategory === 'items' }">Items</span>
|
|
</a>
|
|
<a class="relative p-2.5 hover:cursor-pointer hover:bg-cyan rounded group">
|
|
<span class="group-hover:text-white">NPC's</span>
|
|
</a>
|
|
<a class="relative p-2.5 hover:cursor-pointer hover:bg-cyan rounded group" :class="{ 'bg-cyan/80': selectedCategory === 'shops' }" @click="() => (selectedCategory = 'shops')">
|
|
<span class="group-hover:text-white" :class="{ 'text-white': selectedCategory === 'shops' }">Shops</span>
|
|
</a>
|
|
<a class="relative p-2.5 hover:cursor-pointer hover:bg-cyan rounded group" :class="{ 'bg-cyan/80': selectedCategory === 'characterTypes' }" @click="() => (selectedCategory = 'characterTypes')">
|
|
<span class="group-hover:text-white" :class="{ 'text-white': selectedCategory === 'characterTypes' }">Character types</span>
|
|
</a>
|
|
<a class="relative p-2.5 hover:cursor-pointer hover:bg-cyan rounded group" :class="{ 'bg-cyan/80': selectedCategory === 'characterHair' }" @click="() => (selectedCategory = 'characterHair')">
|
|
<span class="group-hover:text-white" :class="{ 'text-white': selectedCategory === 'characterHair' }">Character hair</span>
|
|
</a>
|
|
<a class="relative p-2.5 hover:cursor-pointer hover:bg-cyan rounded group">
|
|
<span class="group-hover:text-white">Mounts</span>
|
|
</a>
|
|
<a class="relative p-2.5 hover:cursor-pointer hover:bg-cyan rounded group">
|
|
<span class="group-hover:text-white">Pets</span>
|
|
</a>
|
|
<a class="relative p-2.5 hover:cursor-pointer hover:bg-cyan rounded group">
|
|
<span class="group-hover:text-white">Emoticons</span>
|
|
</a>
|
|
</div>
|
|
|
|
<!-- Assets list -->
|
|
<div class="overflow-auto h-full w-4/12 flex flex-col relative">
|
|
<TileList v-if="selectedCategory === 'tiles'" />
|
|
<ObjectList v-if="selectedCategory === 'objects'" />
|
|
<SpriteList v-if="selectedCategory === 'sprites'" />
|
|
<ItemList v-if="selectedCategory === 'items'" />
|
|
<CharacterTypeList v-if="selectedCategory === 'characterTypes'" />
|
|
<CharacterHairList v-if="selectedCategory === 'characterHair'" />
|
|
</div>
|
|
|
|
<!-- Asset details -->
|
|
<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" />
|
|
<ItemDetails v-if="selectedCategory === 'items' && assetManagerStore.selectedItem" />
|
|
<CharacterTypeDetails v-if="selectedCategory === 'characterTypes' && assetManagerStore.selectedCharacterType" />
|
|
<CharacterHairDetails v-if="selectedCategory === 'characterHair' && assetManagerStore.selectedCharacterHair" />
|
|
</div>
|
|
</div>
|
|
</template>
|
|
|
|
<script setup lang="ts">
|
|
import { ref } from 'vue'
|
|
import { useAssetManagerStore } from '@/stores/assetManagerStore'
|
|
import TileList from '@/components/gameMaster/assetManager/partials/tile/TileList.vue'
|
|
import TileDetails from '@/components/gameMaster/assetManager/partials/tile/TileDetails.vue'
|
|
import ObjectList from '@/components/gameMaster/assetManager/partials/object/ObjectList.vue'
|
|
import ObjectDetails from '@/components/gameMaster/assetManager/partials/object/ObjectDetails.vue'
|
|
import SpriteList from '@/components/gameMaster/assetManager/partials/sprite/SpriteList.vue'
|
|
import SpriteDetails from '@/components/gameMaster/assetManager/partials/sprite/SpriteDetails.vue'
|
|
import CharacterTypeList from '@/components/gameMaster/assetManager/partials/characterType/CharacterTypeList.vue'
|
|
import CharacterTypeDetails from '@/components/gameMaster/assetManager/partials/characterType/CharacterTypeDetails.vue'
|
|
import CharacterHairList from '@/components/gameMaster/assetManager/partials/characterHair/CharacterHairList.vue'
|
|
import CharacterHairDetails from '@/components/gameMaster/assetManager/partials/characterHair/CharacterHairDetails.vue'
|
|
import ItemList from '@/components/gameMaster/assetManager/partials/item/itemList.vue'
|
|
import ItemDetails from '@/components/gameMaster/assetManager/partials/item/itemDetails.vue'
|
|
|
|
const assetManagerStore = useAssetManagerStore()
|
|
const selectedCategory = ref('tiles')
|
|
</script>
|