174 lines
8.2 KiB
C#
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);
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
}
|