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