diff --git a/src/lib/SideBars/CharConfig.svelte b/src/lib/SideBars/CharConfig.svelte index bc69acda..58e1abb9 100644 --- a/src/lib/SideBars/CharConfig.svelte +++ b/src/lib/SideBars/CharConfig.svelte @@ -5,7 +5,7 @@ import { ShowRealmFrameStore, selectedCharID } from "../../ts/stores"; import { PlusIcon, SmileIcon, TrashIcon, UserIcon, ActivityIcon, BookIcon, User, CurlyBraces, Volume2Icon } from 'lucide-svelte' import Check from "../UI/GUI/CheckInput.svelte"; - import { addCharEmotion, addingEmotion, getCharImage, rmCharEmotion, selectCharImg, makeGroupImage, removeChar } from "../../ts/characters"; + import { addCharEmotion, addingEmotion, getCharImage, rmCharEmotion, selectCharImg, makeGroupImage, removeChar, changeCharImage } from "../../ts/characters"; import LoreBook from "./LoreBook/LoreBookSetting.svelte"; import { alertConfirm, alertNormal, alertSelectChar, alertTOS, showHypaV2Alert } from "../../ts/alert"; import BarIcon from "./BarIcon.svelte"; @@ -292,17 +292,43 @@ {:else if subMenu === 1}

{language.characterDisplay}

{currentChar.type !== 'group' ? language.charIcon : language.groupIcon} - + + {:else} +
+ {#if currentChar.data.image !== '' && currentChar.data.image} + + {/if} + {#if currentChar.data.ccAssets} + {#each currentChar.data.ccAssets as assets, i} + + {/each} + {/if} + +
+ {/if} {#if currentChar.type === 'character' && currentChar.data.image !== ''}
diff --git a/src/ts/characters.ts b/src/ts/characters.ts index fed8b0b8..ddab967b 100644 --- a/src/ts/characters.ts +++ b/src/ts/characters.ts @@ -72,7 +72,7 @@ export async function getCharImage(loc:string, type:'plain'|'css'|'contain'|'lgc } } -export async function selectCharImg(charId:number) { +export async function selectCharImg(charIndex:number) { const selected = await selectSingleFile(['png', 'webp', 'gif', 'jpg', 'jpeg']) if(!selected){ return @@ -80,7 +80,37 @@ export async function selectCharImg(charId:number) { const img = selected.data let db = get(DataBase) const imgp = await saveImage(await reencodeImage(img)) - db.characters[charId].image = imgp + dumpCharImage(charIndex) + db.characters[charIndex].image = imgp + setDatabase(db) +} + +export function dumpCharImage(charIndex:number) { + let db = get(DataBase) + const char = db.characters[charIndex] as character + if(!char.image || char.image === ''){ + return + } + char.ccAssets ??= [] + char.ccAssets.push({ + type: 'icon', + name: 'iconx', + uri: char.image, + ext: 'png' + }) + char.image = '' + db.characters[charIndex] = char + setDatabase(db) +} + +export function changeCharImage(charIndex:number,changeIndex:number) { + let db = get(DataBase) + const char = db.characters[charIndex] as character + const image = char.ccAssets[changeIndex].uri + char.ccAssets.splice(changeIndex, 1) + dumpCharImage(charIndex) + char.image = image + db.characters[charIndex] = char setDatabase(db) } diff --git a/src/ts/storage/globalApi.ts b/src/ts/storage/globalApi.ts index 80bbb6f6..10b581ea 100644 --- a/src/ts/storage/globalApi.ts +++ b/src/ts/storage/globalApi.ts @@ -807,6 +807,11 @@ export function getUnpargeables(db:Database, uptype:'basename'|'pure' = 'basenam addUnparge(vit) } } + if(cha.ccAssets){ + for(const asset of cha.ccAssets){ + addUnparge(asset.uri) + } + } } }