Files
Main/Assets/Editor/DIY/SkillEditor/SkillCreateEventMenu.cs

216 lines
8.6 KiB
C#
Raw Normal View History

2025-01-25 04:38:09 +08:00
using Thousandto.Code.Logic;
using Thousandto.SkillEditor;
using Thousandto.SkillEditor.DIY;
using Thousandto.SkillEditor.Support;
using System;
using System.Collections.Generic;
using System.IO;
using System.Text.RegularExpressions;
using UnityEditor;
using UnityEngine;
namespace Thousandto.SkillEditor.DIY
{
public class SkillCreateEventMenu
{
[MenuItem("CONTEXT/SkillEvent/Delete")]
private static void DeleteEvent(MenuCommand command)
{
var paramsArray = command.context.name.Split(';');
var skillName = paramsArray[1];
var eventID = int.Parse(paramsArray[2]);
var curSkill = SkillEditorData.FindSkill(skillName);
if (curSkill != null)
{
var skillEvent = curSkill.FindEventByID(eventID);
if (skillEvent != null)
{
if(SkillEventEditor.EventInfo == skillEvent)
{
SkillEventEditor.Hide();
}
curSkill.DataList.Remove(skillEvent);
}
}
}
[MenuItem("CONTEXT/SkillEvent/Delete", true)]
private static bool IsShowDeleteMenu(MenuCommand command)
{
if (command.context != null && command.context.name.StartsWith("edit"))
{
return true;
}
return false;
}
[MenuItem("CONTEXT/SkillEvent/Copy")]
private static void CopyEvent(MenuCommand command)
{
var paramsArray = command.context.name.Split(';');
var skillName = paramsArray[1];
var eventID = int.Parse(paramsArray[2]);
var curSkill = SkillEditorData.FindSkill(skillName);
if (curSkill != null)
{
var skillEvent = curSkill.FindEventByID(eventID);
if (skillEvent != null)
{
SkillBaseEventInfo newEvent = SkillVisualInfoLoader.NewEventInfo(skillEvent.EventType);
newEvent.EventID = curSkill.GetCanUseEventID(skillEvent.EventFrame);
newEvent.EventFrame = skillEvent.EventFrame;
newEvent.EventType = skillEvent.EventType;
newEvent.ParseData(skillEvent.ToString());
curSkill.DataList.Add(newEvent);
if(SkillEventEditor.IsOpen)
{
SkillEventEditor.Open(newEvent);
}
}
}
}
[MenuItem("CONTEXT/SkillEvent/Copy", true)]
private static bool IsShowCopyMenu(MenuCommand command)
{
if (command.context != null && command.context.name.StartsWith("edit"))
{
return true;
}
return false;
}
private static void NewEvent(string commandString, SkillEventDefine eventType)
{
var paramsArray = commandString.Split(';');
var skillName = paramsArray[1];
var param2 = int.Parse(paramsArray[2]);
var curSkill = SkillEditorData.FindSkill(skillName);
if (curSkill != null)
{
int frameIndex = 0;
if (commandString.StartsWith("edit"))
{
var skillEvent = curSkill.FindEventByID(param2);
if (skillEvent != null)
{
frameIndex = skillEvent.EventFrame;
}
}
else if (commandString.StartsWith("create"))
{
frameIndex = param2;
}
var newEvent = SkillVisualInfoLoader.NewEventInfo(eventType);
if (newEvent != null)
{
newEvent.EventID = curSkill.GetCanUseEventID(frameIndex);
newEvent.EventFrame = frameIndex;
newEvent.EventType = eventType;
newEvent.ParseData(string.Empty);
curSkill.DataList.Add(newEvent);
}
}
}
[MenuItem("CONTEXT/SkillEvent/Create/播放动作", true)]
[MenuItem("CONTEXT/SkillEvent/Create/播放减速效果", true)]
[MenuItem("CONTEXT/SkillEvent/Create/禁止移动", true)]
[MenuItem("CONTEXT/SkillEvent/Create/禁止转向", true)]
[MenuItem("CONTEXT/SkillEvent/Create/播放弹道效果(锁定)", true)]
[MenuItem("CONTEXT/SkillEvent/Create/播放简单召唤物", true)]
[MenuItem("CONTEXT/SkillEvent/Create/播放复杂召唤物", true)]
[MenuItem("CONTEXT/SkillEvent/Create/播放自身移动", true)]
[MenuItem("CONTEXT/SkillEvent/Create/隐藏武器", true)]
[MenuItem("CONTEXT/SkillEvent/Create/隐藏武器", true)]
private static bool IsShowCreateEventMenu(MenuCommand command)
{
var paramsArray = command.context.name.Split(';');
var skillName = paramsArray[1];
var curSkill = SkillEditorData.FindSkill(skillName);
if (curSkill != null && curSkill.IsSkillObject)
{
return false;
}
return true;
}
[MenuItem("CONTEXT/SkillEvent/Create/播放动作")]
private static void CreatePlayAnim(MenuCommand command)
{
NewEvent(command.context.name, SkillEventDefine.PlayAnimation);
}
[MenuItem("CONTEXT/SkillEvent/Create/播放特效")]
private static void CreatePlayVfx(MenuCommand command)
{
NewEvent(command.context.name, SkillEventDefine.PlayVfx);
}
[MenuItem("CONTEXT/SkillEvent/Create/播放音效")]
private static void CreatePlaySfx(MenuCommand command)
{
NewEvent(command.context.name, SkillEventDefine.PlaySfx);
}
[MenuItem("CONTEXT/SkillEvent/Create/播放摄像机震动")]
private static void CreatePlayCameraShake(MenuCommand command)
{
NewEvent(command.context.name, SkillEventDefine.PlayCameraShake);
}
[MenuItem("CONTEXT/SkillEvent/Create/播放模糊效果")]
private static void CreatePlayRadiaBlur(MenuCommand command)
{
NewEvent(command.context.name, SkillEventDefine.PlayBlur);
}
[MenuItem("CONTEXT/SkillEvent/Create/播放减速效果")]
private static void CreatePlaySlow(MenuCommand command)
{
NewEvent(command.context.name, SkillEventDefine.PlaySlow);
}
[MenuItem("CONTEXT/SkillEvent/Create/禁止移动")]
private static void CreateDisableMove(MenuCommand command)
{
NewEvent(command.context.name, SkillEventDefine.DisableMove);
}
[MenuItem("CONTEXT/SkillEvent/Create/禁止转向")]
private static void CreateDisableChangeDir(MenuCommand command)
{
NewEvent(command.context.name, SkillEventDefine.DisableChangeDir);
}
[MenuItem("CONTEXT/SkillEvent/Create/播放自身移动")]
private static void CreatePlaySelfMove(MenuCommand command)
{
NewEvent(command.context.name, SkillEventDefine.PlaySelfMove);
}
[MenuItem("CONTEXT/SkillEvent/Create/播放产生伤害效果")]
private static void CreatePlayHit(MenuCommand command)
{
NewEvent(command.context.name, SkillEventDefine.PlayHit);
}
[MenuItem("CONTEXT/SkillEvent/Create/播放弹道效果(锁定)")]
private static void CreatePlayCollider(MenuCommand command)
{
NewEvent(command.context.name, SkillEventDefine.PlayLockTrajectory);
}
[MenuItem("CONTEXT/SkillEvent/Create/播放简单召唤物")]
private static void CreatePlaySimpleSkillObject(MenuCommand command)
{
NewEvent(command.context.name, SkillEventDefine.PlaySimpleSkillObject);
}
[MenuItem("CONTEXT/SkillEvent/Create/播放复杂召唤物")]
private static void CreatePlaySkillObject(MenuCommand command)
{
NewEvent(command.context.name, SkillEventDefine.PlaySkillObject);
}
[MenuItem("CONTEXT/SkillEvent/Create/隐藏武器")]
private static void CreatePlayHideWeapon(MenuCommand command)
{
NewEvent(command.context.name, SkillEventDefine.PlayHideWeapon);
}
[MenuItem("CONTEXT/SkillEvent/Create/播放链接伤害")]
private static void CreatePlayLinkDamage(MenuCommand command)
{
NewEvent(command.context.name, SkillEventDefine.PlayLinkDamage);
}
}
}