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

174 lines
8.2 KiB
C#

using Gameplay.Fight.FightStory.Data;
using Gameplay.Fight.FightStory.WrapData;
using UnityEditor;
namespace CEditor.FightStory.Handle
{
public static class ActionDataHandle
{
public static void HandleActionData(FightStoryActionData actionData)
{
actionData.triggerTime = EditorGUILayout.FloatField("触发时间:", actionData.triggerTime);
_ShowActionType(actionData);
switch (actionData.actionType)
{
case EFightStoryActionType.None:
EditorGUILayout.HelpBox("请选择action类型", MessageType.Error);
break;
case EFightStoryActionType.Talk:
_ShowActionTalk(actionData);
break;
case EFightStoryActionType.PlayEffect:
_ShowActionPlayEffect(actionData);
break;
case EFightStoryActionType.End:
_ShowActionEnd(actionData);
break;
case EFightStoryActionType.SetUnitPos:
_ShowSetUnitPos(actionData);
break;
case EFightStoryActionType.SetCameraPos:
_ShowSetCameraPos(actionData);
break;
case EFightStoryActionType.PlayAnim:
_ShowPlayAnim(actionData);
break;
case EFightStoryActionType.GlobalFade:
_ShowGlobalAction(actionData);
break;
case EFightStoryActionType.ActiveObj:
_ShowActiveObj(actionData);
break;
default:
EditorGUILayout.HelpBox("未知的action类型:" + actionData.actionType, MessageType.Error);
break;
}
}
private static void _ShowActiveObj(FightStoryActionData actionData)
{
var activeObjData = new ActionWrapDataActiveObj(actionData);
activeObjData.controlObjPath = EditorGUILayout.TextField("控制对象路径:", activeObjData.controlObjPath);
activeObjData.controlType = EditorGUILayout.IntPopup("控制类型:",
activeObjData.controlType, EFightStoryActiveType.Names, EFightStoryActiveType.Values);
}
private static void _ShowGlobalAction(FightStoryActionData actionData)
{
var globalFadeData = new ActionWrapDataGlobalFade(actionData);
globalFadeData.fadeType = EditorGUILayout.IntPopup("渐变类型:",
globalFadeData.fadeType, EFightStoryGlobalFadeType.Names, EFightStoryGlobalFadeType.Values);
globalFadeData.fadeTime = EditorGUILayout.FloatField("渐变时间:", globalFadeData.fadeTime);
}
private static void _ShowPlayAnim(FightStoryActionData actionData)
{
var playAnimData = new ActionWrapDataPlayAnim(actionData);
playAnimData.unitLocalId = EditorGUILayout.IntField("单位ID:", playAnimData.unitLocalId);
playAnimData.animName = EditorGUILayout.TextField("动画名称:", playAnimData.animName);
}
private static void _ShowSetCameraPos(FightStoryActionData actionData)
{
var setCameraPosData = new ActionWrapDataSetCameraPos(actionData);
setCameraPosData.moveType = EditorGUILayout.IntPopup("移动类型:",
setCameraPosData.moveType, EFightStoryPosMoveType.Names, EFightStoryPosMoveType.Values);
setCameraPosData.targetPos = EditorGUILayout.Vector3Field("目标位置:", setCameraPosData.targetPos);
switch (setCameraPosData.moveType)
{
case EFightStoryPosMoveType.SetPos:
// nothing
break;
case EFightStoryPosMoveType.LineMove:
setCameraPosData.moveSpeed = EditorGUILayout.FloatField("移动速度:", setCameraPosData.moveSpeed);
break;
default:
EditorGUILayout.HelpBox("未知的移动类型:" + setCameraPosData.moveType, MessageType.Error);
break;
}
}
private static void _ShowSetUnitPos(FightStoryActionData actionData)
{
var setUnitPosData = new ActionWrapDataSetUnitPos(actionData);
setUnitPosData.unitLocalId = EditorGUILayout.IntField("单位ID:", setUnitPosData.unitLocalId);
setUnitPosData.targetCellIndex = EditorGUILayout.IntField("目标格子索引:", setUnitPosData.targetCellIndex);
setUnitPosData.moveType = EditorGUILayout.IntPopup("移动类型:",
setUnitPosData.moveType, EFightStoryPosMoveType.Names, EFightStoryPosMoveType.Values);
switch (setUnitPosData.moveType)
{
case EFightStoryPosMoveType.SetPos:
setUnitPosData.targetYaw = EditorGUILayout.IntField("Y轴角度:", setUnitPosData.targetYaw);
break;
case EFightStoryPosMoveType.LineMove:
setUnitPosData.moveSpeed = EditorGUILayout.FloatField("移动速度:", setUnitPosData.moveSpeed);
break;
default:
EditorGUILayout.HelpBox("未知的移动类型:" + setUnitPosData.moveType, MessageType.Error);
break;
}
}
private static void _ShowActionType(FightStoryActionData actionData)
{
actionData.actionType = EditorGUILayout.IntPopup("Action类型:", actionData.actionType, EFightStoryActionType.Names, EFightStoryActionType.Values);
}
private static void _ShowActionEnd(FightStoryActionData actionData)
{
EditorGUILayout.HelpBox("结束剧情", MessageType.Info);
}
private static void _ShowActionPlayEffect(FightStoryActionData actionData)
{
var playEffectData = new ActionWrapDataPlayEffect(actionData);
playEffectData.effectId = EditorGUILayout.IntField("特效ID:", playEffectData.effectId);
playEffectData.effectPosType = EditorGUILayout.IntPopup("特效位置类型:",
playEffectData.effectPosType, EFightStoryPlayEffectPosType.Names, EFightStoryPlayEffectPosType.Values);
switch (playEffectData.effectPosType)
{
case EFightStoryPlayEffectPosType.Character:
playEffectData.targetUnitLocalId = EditorGUILayout.IntField("角色ID:", playEffectData.targetUnitLocalId);
break;
case EFightStoryPlayEffectPosType.CellIndex:
playEffectData.targetCellIndex = EditorGUILayout.IntField("格子位置:", playEffectData.targetCellIndex);
break;
default:
EditorGUILayout.HelpBox("未知的特效位置类型:" + playEffectData.effectPosType, MessageType.Error);
break;
}
}
private static void _ShowActionTalk(FightStoryActionData actionData)
{
// 对话类型, 0 旁白, 1 角色说话
var talkData = new ActionWrapDataTalk(actionData);
talkData.talkType = EditorGUILayout.IntPopup("对话类型:", talkData.talkType, EFightStoryTalkType.Names, EFightStoryTalkType.Values);
// 对话内容
talkData.talkContent = EditorGUILayout.TextField("对话内容:(多语言key)", talkData.talkContent);
if (talkData.talkType == EFightStoryTalkType.CharacterTalk)
{
// 说话时的立绘
talkData.talkImgUrl = EditorGUILayout.TextField("立绘图片:(图片路径)", talkData.talkImgUrl);
if (!string.IsNullOrEmpty(talkData.talkImgUrl))
{
talkData.talkImgPos = EditorGUILayout.IntPopup("立绘位置类型:",
talkData.talkImgPos, EFightStoryTalkImgPosType.Names, EFightStoryTalkImgPosType.Values);
}
talkData.talkUnitId = EditorGUILayout.IntField("角色LocalID:", talkData.talkUnitId);
talkData.talkName = EditorGUILayout.TextField("角色名字:(多语言key)", talkData.talkName);
}
}
}
}