using System;
using System.Collections.Generic;
namespace XericUI.ReflectionUIGenerator
{
///
/// 测试用枚举 - 用于下拉选择测试
///
public enum XuiavrgTestQuality
{
Low,
Medium,
High,
Epic,
Legendary
}
///
/// 反射界面生成器测试数据类
/// 涵盖新版 Entry 体系的所有特性:编组、排序、预制体覆盖、多种字段类型
///
/// 使用方式:
/// 1. 在 Hierarchy 右键 -> Xeric UI -> Create Reflection UI Example 创建示例节点
/// 2. 创建 XuiavrgPropertyGroupScriptableObject 并设置 groupName 和 supportedTags
/// 3. 将编组对应的预制体拖入
/// 4. 调用 manager.BuildEntries(new XuiavrgExampleTestData()) 构建 Entry
/// 5. 调用 manager.GenerateUI() 生成界面
/// 或直接使用兼容方法: manager.SchemaHydration(new XuiavrgExampleTestData())
///
[Serializable]
public class XuiavrgExampleTestData
{
// ==================== 基础数值类型 ====================
[XuiavrgFieldOrder(1)]
[XuiavrgNumberCheck(0, 100)]
public int intValue = 42;
[XuiavrgFieldOrder(2)]
[XuiavrgNumberCheck(0f, 999f)]
public float floatValue = 3.14f;
[XuiavrgFieldOrder(3)]
public double doubleValue = 123.456;
[XuiavrgFieldOrder(4)]
[XuiavrgNumberCheck(0, 999999)]
public long longValue = 100000;
// ==================== 多字段编组示例 ====================
// 以下三个字段合并为一个 Entry,共享一个 UI 组件实例
// UI 组件上需要有 Label、Context、Unit 对应的 IXuiavrgFieldTagProvider
[XuiavrgFieldEntryGroup("speed", XuiavrgFieldTag.Label)]
[XuiavrgFieldOrder(5)]
public string speedLabel = "速度";
[XuiavrgFieldEntryGroup("speed", XuiavrgFieldTag.Context)]
[XuiavrgNumberCheck(-999f, 999f)]
public float speedValue = 0.1f;
[XuiavrgFieldEntryGroup("speed", XuiavrgFieldTag.Unit)]
public string speedUnit = "m/s";
// 第二个编组示例 - 健康值
[XuiavrgFieldEntryGroup("health", XuiavrgFieldTag.Label)]
[XuiavrgFieldOrder(6)]
public string healthLabel = "生命值";
[XuiavrgFieldEntryGroup("health", XuiavrgFieldTag.Context)]
[XuiavrgNumberCheck(0, 9999)]
public float healthValue = 100f;
[XuiavrgFieldEntryGroup("health", XuiavrgFieldTag.Unit)]
public string healthUnit = "HP";
// ==================== 字符串类型 ====================
[XuiavrgFieldOrder(7)]
[XuiavrgRequired]
[XuiavrgStringCheck(minLength: 2, maxLength: 16)]
public string playerName = "DefaultName";
[XuiavrgFieldOrder(8)]
[XuiavrgNotEmpty]
[XuiavrgStringCheck(onlyEmail: false)]
public string emailAddress = "example@mail.com";
[XuiavrgFieldOrder(9)]
[XuiavrgFieldPrefabOverride("MultilineTextArea")]
[XuiavrgStringCheck(maxLength: 500)]
public string biography = "这是一段个人简介...";
// ==================== 布尔类型 ====================
[XuiavrgFieldOrder(10)]
public bool enableFeature = true;
[XuiavrgFieldOrder(11)]
public bool advancedMode = false;
// ==================== 枚举类型 ====================
[XuiavrgFieldOrder(12)]
public XuiavrgTestQuality quality = XuiavrgTestQuality.High;
// ==================== 隐藏属性 ====================
[XuiavrgHide(true)]
public string hiddenField = "此字段被隐藏,不会生成 Entry";
// ==================== 不同尺寸 ====================
[XuiavrgFieldOrder(13)]
[XuiavrgAttribute("小号", "size_small", null, size: XuiavrgSize.Small)]
public string smallSizeField = "小尺寸";
[XuiavrgFieldOrder(14)]
[XuiavrgAttribute("大号", "size_large", null, size: XuiavrgSize.Large)]
public string largeSizeField = "大尺寸";
// ==================== 集合类型(兼容旧标记) ====================
[XuiavrgFieldOrder(15)]
[XuiavrgCollectionCheck(1, 10, true)]
public List tags = new List { "Unity", "C#", "UI" };
// ==================== 按钮触发器 ====================
[XuiavrgFieldOrder(16)]
public bool submitTrigger = false;
}
}