using Logic.Action; using Logic.Multilingual; using RuntimeData; using TH1_Logic.Action; using Unity.Burst.CompilerServices; using UnityEngine; // using Logic.Tech; // 假设TechType在这里 // using Logic.Skill; // 假设SkillType在这里 // using Logic.City; // 假设CityUpgradeId在这里 // 建议将所有与HintUI相关的逻辑类都放在这个命名空间下 namespace UI.HintUI { /// /// 定义提示所依赖的数据类型 /// public enum HintDataType { SkillHintData, ActionHintData, TechHintData, CityUpgradeHintData, UnitHintData, // 直接显示静态文本 TextData, TextDataGiantUpgrate } /// /// 一个统一的提示数据提供者。 /// 它包含所有可能用到的数据字段,通过HintDataType枚举来决定使用哪个。 /// [System.Serializable] // 必须标记为Serializable,这样才能在Inspector中显示 public class HintDataProvider { // --- 核心控制字段 --- public HintDataType HintDataType; // --- 所有可能的数据字段 --- // 用于 TextData [Tooltip("当类型为TextData时,直接显示此文本")] public string Text = "默认静态文本..."; // 用于 TechHintData [Tooltip("当类型为TechHintData时,使用此数据")] public TechType TechTypeData; // 用于 SkillHintData [Tooltip("当类型为SkillHintData时,使用此数据")] public SkillType SkillTypeData; // 用于 ActionHintData [Tooltip("当类型为ActionHintData时,使用此数据")] public CommonActionId ActionIdData; // 用于 TextData [Tooltip("当类型为ActionHintData时,使用此数据")] public CommonActionId TextData; [Tooltip("unitData")] public UnitType UnitType; public GiantType GiantType; public uint UnitLevel; // 用于 CityUpgradeHintData (注意:我根据推断为您增加了这个字段) //[Tooltip("当类型为CityUpgradeHintData时,使用此数据")] //public CityUpgradeId CityUpgradeIdData; // 假设存在一个CityUpgradeId类型 /// /// 根据HintDataType动态获取最终应显示的提示文本 /// /// 提示字符串 public string GetHintText() { string ret = Text; string ret2 = ""; var unitFullType = new UnitFullType(){UnitType = UnitType,GiantType = GiantType,UnitLevel = UnitLevel}; switch (this.HintDataType) { case HintDataType.SkillHintData: // 假设GetSkillDesc存在并且接收SkillTypeData Table.Instance.SkillDataAssets.GetSkillNameAndDesc(this.SkillTypeData,unitFullType,out ret2,out ret); break; case HintDataType.ActionHintData: // 仿写:从Action数据表中获取描述 Table.Instance.ActionDataAssets.GetActionDesc(this.ActionIdData,out ret); break; case HintDataType.TechHintData: // 仿写:从Tech数据表中获取描述 Table.Instance.TechDataAssets.GetTechDesc(this.TechTypeData,out ret); break; case HintDataType.CityUpgradeHintData: // 仿写:从CityUpgrade数据表中获取描述 //return Table.Instance.CityUpgradeDataAssets.GetUpgradeDesc(this.CityUpgradeIdData); break; case HintDataType.UnitHintData: Table.Instance.UnitTypeDataAssets.GetUnitDesc(UnitType,GiantType,UnitLevel,out ret); break; case HintDataType.TextDataGiantUpgrate: Table.Instance.TextDataAssets.GetGiantUpgradeText(GiantType,out ret); ret.Replace("\\n","\n"); break; case HintDataType.TextData: if (TextData.PlayerActionType == PlayerActionType.FinishHeroTask) { ret = Table.Instance.TextDataAssets.HeroForceFinishHint; } break; default: // 处理未知的或默认的枚举值,方便调试 UnityEngine.Debug.LogWarning($"未处理的HintDataType: {this.HintDataType}"); break; } if (!uint.TryParse(ret, out var retNum)) return ret; if (ret2 != "") { if (!uint.TryParse(ret2, out var retNum2)) return ret2; return "" + MultilingualManager.Instance.GetMultilingualText(retNum2) + ":" + MultilingualManager.Instance.GetMultilingualText(retNum); } return MultilingualManager.Instance.GetMultilingualText(retNum); } } }