From f4cb9196c339cceef4ed2adece65f4ce08315e70 Mon Sep 17 00:00:00 2001 From: Trenton Zimmer <66042448+trmazi@users.noreply.github.com> Date: Fri, 21 Mar 2025 00:45:19 -0400 Subject: [PATCH] Add final stickerboard support --- src/components/Cards/StickerCardBox.vue | 121 ++++++++++++++++++++++-- src/components/FormSlider.vue | 52 ++++++++++ src/components/UserSticker.vue | 44 +++++---- src/views/Game/PlayerView.vue | 26 ++++- 4 files changed, 211 insertions(+), 32 deletions(-) create mode 100644 src/components/FormSlider.vue diff --git a/src/components/Cards/StickerCardBox.vue b/src/components/Cards/StickerCardBox.vue index 867bbdf..22726e7 100644 --- a/src/components/Cards/StickerCardBox.vue +++ b/src/components/Cards/StickerCardBox.vue @@ -2,12 +2,13 @@ import axios from "axios"; import { watch, ref, reactive } from "vue"; import { useRouter } from "vue-router"; -import { mdiLoading } from "@mdi/js"; +import { mdiLoading, mdiChevronDown, mdiChevronUp } from "@mdi/js"; import BaseButton from "@/components/BaseButton.vue"; import BaseIcon from "@/components/BaseIcon.vue"; import CardBox from "@/components/CardBox.vue"; import FormField from "@/components/FormField.vue"; import FormControl from "@/components/FormControl.vue"; +import FormSlider from "@/components/FormSlider.vue"; import UserSticker from "@/components/UserSticker.vue"; import PillTag from "@/components/PillTag.vue"; @@ -39,6 +40,9 @@ const newTrbitem = reactive( const trbitemSettings = ref([]); const isModified = ref(false); const loading = ref(false); +const collapsedStickers = ref( + Array.isArray(newTrbitem.stickers) ? newTrbitem.stickers.map(() => true) : [] +); watch( () => props.version, @@ -46,9 +50,14 @@ watch( userProfile.value = props.profile; version.value = props.version; loadTrbitemSettings(); - newTrbitem.value = JSON.parse( + const newProfileData = JSON.parse( JSON.stringify(userProfile.value?.trbitem ?? {}) ); + Object.assign(newTrbitem, newProfileData); + // Set all stickers to collapsed when version changes + collapsedStickers.value = Array.isArray(newTrbitem.stickers) + ? newTrbitem.stickers.map(() => true) + : []; isModified.value = false; } ); @@ -107,25 +116,125 @@ function revert() { ); isModified.value = false; } + +function addSticker() { + newTrbitem.stickers.push({ + sticker_id: 24, + sticker_pos_x: 160, + sticker_pos_y: 277, + sticker_scale_x: 1, + sticker_scale_y: 1, + sticker_rotate: 0, + }); + collapsedStickers.value.push(false); + isModified.value = true; +} + +function removeSticker(index) { + newTrbitem.stickers.splice(index, 1); + collapsedStickers.value.splice(index, 1); + isModified.value = true; +} + +function toggleStickerCollapse(index) { + collapsedStickers.value[index] = !collapsedStickers.value[index]; +} @@ -524,6 +522,24 @@ async function generateTimeline(myProfile) { + +