NLDClient-yudde/ProjectNLD/Assets/Editor/FightStory/Handle/TriggerDataHandle.cs

100 lines
4.8 KiB
C#

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);
}
}
}