using Gameplay.Fight.FightStory.Data; using Gameplay.Fight.FightStory.WrapData; using UnityEditor; namespace CEditor.FightStory.Handle { public static class TriggerDataHandle { public static void HandleTriggerData(FightStoryStageData stageData) { if (stageData.triggerData == null) { stageData.triggerData = new FightStoryTriggerData(); } stageData.triggerData.triggerType = EditorGUILayout.IntPopup("触发类型:", stageData.triggerData.triggerType, EFightStoryTriggerType.Names, EFightStoryTriggerType.Values); _ShowTriggerSwitch(stageData.triggerData); } private static void _ShowTriggerSwitch(FightStoryTriggerData triggerData) { switch (triggerData.triggerType) { case EFightStoryTriggerType.None: EditorGUILayout.HelpBox("请选择触发类型", MessageType.Error); break; case EFightStoryTriggerType.TimeTrigger: _ShowTriggerTime(triggerData); break; case EFightStoryTriggerType.ArrivePos: _ShowTriggerArrivePos(triggerData); break; case EFightStoryTriggerType.AliveCount: _ShowTriggerAliveCount(triggerData); break; case EFightStoryTriggerType.StatusCheck: _ShowStatusCheck(triggerData); break; default: EditorGUILayout.HelpBox("未知的触发类型:" + triggerData.triggerType, MessageType.Error); break; } } private static void _ShowStatusCheck(FightStoryTriggerData triggerData) { var statusCheckData = new TriggerWrapDataStatusCheck(triggerData); statusCheckData.unitLocalId = EditorGUILayout.IntField("单位ID:", statusCheckData.unitLocalId); statusCheckData.checkType = EditorGUILayout.IntPopup("检查类型:", statusCheckData.checkType, EFightStoryStatusCheckType.Names, EFightStoryStatusCheckType.Values); switch (statusCheckData.checkType) { case EFightStoryStatusCheckType.Hp: statusCheckData.mathType = EditorGUILayout.IntPopup("数学类型:", statusCheckData.mathType, EFightStoryMathType.Names, EFightStoryMathType.Values); statusCheckData.hpPercent = EditorGUILayout.FloatField("HP百分比:", statusCheckData.hpPercent); break; case EFightStoryStatusCheckType.Shield: statusCheckData.mathType = EditorGUILayout.IntPopup("数学类型:", statusCheckData.mathType, EFightStoryMathType.Names, EFightStoryMathType.Values); statusCheckData.shieldPercent = EditorGUILayout.FloatField("护盾百分比:", statusCheckData.shieldPercent); break; case EFightStoryStatusCheckType.Buff: statusCheckData.targetBuffId = EditorGUILayout.IntField("BuffID:", statusCheckData.targetBuffId); break; default: EditorGUILayout.HelpBox("未知的检查类型:" + statusCheckData.checkType, MessageType.Error); break; } } private static void _ShowTriggerAliveCount(FightStoryTriggerData triggerData) { var aliveCountData = new TriggerWrapDataAliveCount(triggerData); aliveCountData.checkType = EditorGUILayout.IntPopup("检查类型:", aliveCountData.checkType, EFightStoryAliveCheckType.Names, EFightStoryAliveCheckType.Values); aliveCountData.mathType = EditorGUILayout.IntPopup("数学类型:", aliveCountData.mathType, EFightStoryMathType.Names, EFightStoryMathType.Values); aliveCountData.aliveCount = EditorGUILayout.IntField("存活数量:", aliveCountData.aliveCount); } private static void _ShowTriggerArrivePos(FightStoryTriggerData triggerData) { var arrivePosData = new TriggerWrapDataArrivePos(triggerData); arrivePosData.unitLocalId = EditorGUILayout.IntField("单位ID:", arrivePosData.unitLocalId); arrivePosData.targetCellIndex = EditorGUILayout.IntField("目标位置:(CellIndex)", arrivePosData.targetCellIndex); } private static void _ShowTriggerTime(FightStoryTriggerData triggerData) { var triggerTimeData = new TriggerWrapDataTime(triggerData); triggerTimeData.triggerTime = EditorGUILayout.FloatField("触发时间:", triggerTimeData.triggerTime); } } }