100 lines
4.8 KiB
C#
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);
|
|
}
|
|
|
|
}
|
|
}
|