114 lines
2.7 KiB
TypeScript
114 lines
2.7 KiB
TypeScript
import {
|
|
ASSET_API_PATHS,
|
|
postApiJson,
|
|
} from '../editor/shared/editorApiClient';
|
|
|
|
const QWEN_SPRITE_MASTER_API_PATH = ASSET_API_PATHS.qwenSpriteMaster;
|
|
const QWEN_SPRITE_SHEET_API_PATH = ASSET_API_PATHS.qwenSpriteSheet;
|
|
const QWEN_SPRITE_FRAME_REPAIR_API_PATH =
|
|
ASSET_API_PATHS.qwenSpriteFrameRepair;
|
|
const QWEN_SPRITE_SAVE_API_PATH = ASSET_API_PATHS.qwenSpriteSave;
|
|
|
|
export type QwenSpriteImageDraft = {
|
|
id: string;
|
|
label: string;
|
|
imageSrc: string;
|
|
remoteUrl?: string;
|
|
};
|
|
|
|
export type GenerateQwenSpritePayload = {
|
|
promptText: string;
|
|
negativePrompt: string;
|
|
model: string;
|
|
size: string;
|
|
promptExtend: boolean;
|
|
candidateCount: number;
|
|
seed?: number;
|
|
referenceImages: string[];
|
|
};
|
|
|
|
export type RepairQwenSpriteFramePayload = {
|
|
promptText: string;
|
|
negativePrompt: string;
|
|
model: string;
|
|
size: string;
|
|
promptExtend: boolean;
|
|
seed?: number;
|
|
referenceImages: string[];
|
|
};
|
|
|
|
export type SaveQwenSpriteAssetPayload = {
|
|
assetKey: string;
|
|
actionKey: string;
|
|
masterSource: string;
|
|
sheetSource: string;
|
|
framesDataUrls: string[];
|
|
metadata: Record<string, unknown>;
|
|
prompts: Record<string, unknown>;
|
|
};
|
|
|
|
async function postJson<T>(
|
|
url: string,
|
|
payload: Record<string, unknown>,
|
|
fallbackMessage: string,
|
|
) {
|
|
return postApiJson<T>(url, payload, fallbackMessage);
|
|
}
|
|
|
|
export async function generateQwenSpriteMaster(
|
|
payload: GenerateQwenSpritePayload,
|
|
) {
|
|
return postJson<{
|
|
ok: true;
|
|
draftId: string;
|
|
drafts: QwenSpriteImageDraft[];
|
|
model: string;
|
|
size: string;
|
|
promptText: string;
|
|
negativePrompt: string;
|
|
}>(QWEN_SPRITE_MASTER_API_PATH, payload, '生成主图失败');
|
|
}
|
|
|
|
export async function generateQwenSpriteSheet(
|
|
payload: GenerateQwenSpritePayload,
|
|
) {
|
|
return postJson<{
|
|
ok: true;
|
|
draftId: string;
|
|
drafts: QwenSpriteImageDraft[];
|
|
model: string;
|
|
size: string;
|
|
promptText: string;
|
|
negativePrompt: string;
|
|
}>(QWEN_SPRITE_SHEET_API_PATH, payload, '生成精灵表失败');
|
|
}
|
|
|
|
export async function repairQwenSpriteFrame(
|
|
payload: RepairQwenSpriteFramePayload,
|
|
) {
|
|
return postJson<{
|
|
ok: true;
|
|
draftId: string;
|
|
drafts: QwenSpriteImageDraft[];
|
|
repairedFrame: QwenSpriteImageDraft | null;
|
|
model: string;
|
|
size: string;
|
|
promptText: string;
|
|
negativePrompt: string;
|
|
}>(QWEN_SPRITE_FRAME_REPAIR_API_PATH, payload, '修复帧失败');
|
|
}
|
|
|
|
export async function saveQwenSpriteAsset(
|
|
payload: SaveQwenSpriteAssetPayload,
|
|
) {
|
|
return postJson<{
|
|
ok: true;
|
|
assetId: string;
|
|
assetDir: string;
|
|
masterImagePath: string | null;
|
|
sheetImagePath: string;
|
|
framePaths: string[];
|
|
saveMessage: string;
|
|
}>(QWEN_SPRITE_SAVE_API_PATH, payload, '保存精灵表失败');
|
|
}
|