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}
+
+ {#await getCharImage(currentChar.data.image, currentChar.data.largePortrait ? 'lgcss' : 'css')}
+
+ {:then im}
+
+ {/await}
+
+ {/if}
+ {#if currentChar.data.ccAssets}
+ {#each currentChar.data.ccAssets as assets, i}
+
{changeCharImage($selectedCharID, i);currentChar = currentChar}}>
+ {#await getCharImage(assets.uri, currentChar.data.largePortrait ? 'lgcss' : 'css')}
+
+ {:then im}
+
+ {/await}
+
+ {/each}
+ {/if}
+
{await selectCharImg($selectedCharID);currentChar = currentChar}}>
+
+
+
+ {/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)
+ }
+ }
}
}