80 lines
1.6 KiB
TypeScript
80 lines
1.6 KiB
TypeScript
import { AnimationState } from '../../types';
|
|
|
|
export type EditableCustomWorldRole = {
|
|
id: string;
|
|
name: string;
|
|
title: string;
|
|
role: string;
|
|
visualDescription?: string;
|
|
actionDescription?: string;
|
|
sceneVisualDescription?: string;
|
|
description?: string;
|
|
backstory?: string;
|
|
personality?: string;
|
|
motivation?: string;
|
|
combatStyle?: string;
|
|
tags?: string[];
|
|
templateCharacterId?: string;
|
|
imageSrc?: string;
|
|
generatedVisualAssetId?: string;
|
|
generatedAnimationSetId?: string;
|
|
animationMap?: Record<string, unknown>;
|
|
};
|
|
|
|
export type CustomWorldAiActionConfig = {
|
|
animation: AnimationState;
|
|
label: string;
|
|
templateId: string;
|
|
fps: number;
|
|
frameCount: number;
|
|
durationSeconds: number;
|
|
loop: boolean;
|
|
required: boolean;
|
|
fallbackStatusLabel?: string;
|
|
};
|
|
|
|
export const CORE_ACTIONS: CustomWorldAiActionConfig[] = [
|
|
{
|
|
animation: AnimationState.RUN,
|
|
label: '奔跑',
|
|
templateId: 'run',
|
|
fps: 12,
|
|
frameCount: 8,
|
|
durationSeconds: 4,
|
|
loop: true,
|
|
required: true,
|
|
},
|
|
{
|
|
animation: AnimationState.ATTACK,
|
|
label: '攻击',
|
|
templateId: 'attack_slash',
|
|
fps: 12,
|
|
frameCount: 8,
|
|
durationSeconds: 4,
|
|
loop: false,
|
|
required: true,
|
|
},
|
|
{
|
|
animation: AnimationState.IDLE,
|
|
label: '待机',
|
|
templateId: 'idle',
|
|
fps: 8,
|
|
frameCount: 8,
|
|
durationSeconds: 4,
|
|
loop: true,
|
|
required: false,
|
|
fallbackStatusLabel: '默认静止',
|
|
},
|
|
{
|
|
animation: AnimationState.DIE,
|
|
label: '死亡',
|
|
templateId: 'die',
|
|
fps: 8,
|
|
frameCount: 8,
|
|
durationSeconds: 4,
|
|
loop: false,
|
|
required: false,
|
|
fallbackStatusLabel: '默认倒地动画',
|
|
},
|
|
];
|