refactor: 重构属性编辑面板,支持Tab分离和节点类型切换

- 将属性面板分为游戏属性和图像属性两个Tab
- 游戏属性Tab包含节点基本信息、类型切换和特定属性
- 图像属性Tab包含所有样式设置(填充、描边、阴影等)
- 资产选择器节点支持在式神和御魂之间切换
- 切换节点类型时自动清空已选资产
- 优化AssetSelectorPanel,移除重复的资产库选择器
This commit is contained in:
2026-02-14 21:50:51 +08:00
parent bbcc1f6980
commit 4a4a55110b
15 changed files with 1069 additions and 26 deletions

View File

@@ -0,0 +1,53 @@
/**
* 节点注册表
* 定义所有节点类型的配置信息
*/
import { NodeType, NodeCategory, type NodeTypeConfig } from '@/types/nodeTypes'
export const NODE_REGISTRY: Record<NodeType, NodeTypeConfig> = {
[NodeType.RECT]: {
type: NodeType.RECT,
category: NodeCategory.LAYOUT,
label: '矩形',
description: '矩形容器,可设置背景和边框'
},
[NodeType.ELLIPSE]: {
type: NodeType.ELLIPSE,
category: NodeCategory.LAYOUT,
label: '椭圆',
description: '椭圆容器,可设置背景和边框'
},
[NodeType.ASSET_SELECTOR]: {
type: NodeType.ASSET_SELECTOR,
category: NodeCategory.ASSET,
label: '资产选择器',
description: '从预设资产库选择图片(式神、御魂等)',
defaultProps: {
assetLibrary: 'shikigami' // 默认式神库
}
},
[NodeType.IMAGE_UPLOAD]: {
type: NodeType.IMAGE_UPLOAD,
category: NodeCategory.ASSET,
label: '自定义图片',
description: '上传自定义图片或填写URL'
},
[NodeType.TEXT_NODE]: {
type: NodeType.TEXT_NODE,
category: NodeCategory.TEXT,
label: '文本',
description: '可编辑的文本节点'
},
[NodeType.PROPERTY_SELECT]: {
type: NodeType.PROPERTY_SELECT,
category: NodeCategory.TEXT,
label: '属性选择器',
description: '选择游戏属性并配置规则'
}
}

View File

@@ -0,0 +1,51 @@
/**
* 选择器预设配置
* 定义各种资产类型的选择器配置
*/
import type { SelectorConfig } from '@/types/selector'
import shikigamiData from '@/data/Shikigami.json'
import yuhunData from '@/data/Yuhun.json'
export const SELECTOR_PRESETS: Record<string, SelectorConfig> = {
shikigami: {
title: '请选择式神',
dataSource: shikigamiData,
groupField: 'rarity',
groups: [
{ label: '全部', name: 'ALL' },
{ label: 'UR', name: 'UR' },
{ label: 'SP', name: 'SP' },
{ label: 'SSR', name: 'SSR' },
{ label: 'SR', name: 'SR' },
{ label: 'R', name: 'R' },
{ label: 'N', name: 'N' },
{ label: '联动', name: 'L' },
{ label: '呱太', name: 'G' }
],
itemRender: {
imageField: 'avatar',
labelField: 'name'
}
},
yuhun: {
title: '请选择御魂',
dataSource: yuhunData,
groupField: 'type',
groups: [
{ label: '全部', name: 'ALL' },
{ label: '攻击类', name: 'attack' },
{ label: '暴击类', name: 'Crit' },
{ label: '生命类', name: 'Health' },
{ label: '防御类', name: 'Defense' },
{ label: '效果命中', name: 'Effect' },
{ label: '效果抵抗', name: 'EffectResist' },
{ label: '特殊类', name: 'Special' }
],
itemRender: {
imageField: 'avatar',
labelField: 'name'
}
}
}