public static IUnitTestElement ReadFromXml(XmlElement parent, IUnitTestElement parentElement, ISolution solution, BehaviorFactory factory) { var projectId = parent.GetAttribute("projectId"); var project = ProjectUtil.FindProjectElementByPersistentID(solution, projectId) as IProject; if (project == null) { return(null); } var context = parentElement as ContextElement; if (context == null) { return(null); } var typeName = parent.GetAttribute("typeName"); var methodName = parent.GetAttribute("methodName"); var isIgnored = bool.Parse(parent.GetAttribute("isIgnored")); var fieldType = parent.GetAttribute("fieldType"); return(factory.GetOrCreateBehavior(context, new ClrTypeName(typeName), methodName, isIgnored, fieldType)); }
public static void SelectDisplayObjectByOffset(Transform displayObject, int offset, bool selectAll = false) { int idx = GlobalData.CurrentDisplayObjects.FindIndex(element => element.name.Equals(displayObject.name)); if (idx == -1) { return; } int targetIdx = idx + offset; if (targetIdx < 0 || targetIdx >= GlobalData.CurrentDisplayObjects.Count) { return; } List <string> addElements = new List <string>(); int startIdx = Math.Min(targetIdx, selectAll ? idx : targetIdx); int endIdx = Math.Max(targetIdx, selectAll ? idx : targetIdx); for (int idx2 = startIdx; idx2 <= endIdx; ++idx2) { addElements.Add(GlobalData.CurrentDisplayObjects[idx2].name); } HistoryManager.Do(BehaviorFactory.GetUpdateSelectDisplayObjectBehavior(GlobalData.CurrentModule, addElements, selectAll ? null : new List <string> { displayObject.name })); }
public AssemblyExplorer(TestProvider provider, #if RESHARPER_61 IUnitTestElementManager manager, PsiModuleManager psiModuleManager, CacheManager cacheManager, #endif IMetadataAssembly assembly, IProject project, UnitTestElementConsumer consumer) { _assembly = assembly; _consumer = consumer; using (ReadLockCookie.Create()) { var projectEnvoy = new ProjectModelElementEnvoy(project); var cache = new ContextCache(); #if RESHARPER_61 _contextFactory = new ContextFactory(provider, manager, psiModuleManager, cacheManager, project, projectEnvoy, _assembly.Location.FullPath, cache); _contextSpecificationFactory = new ContextSpecificationFactory(provider, manager, psiModuleManager, cacheManager, project, projectEnvoy, cache); _behaviorFactory = new BehaviorFactory(provider, manager, psiModuleManager, cacheManager, project, projectEnvoy, cache); _behaviorSpecificationFactory = new BehaviorSpecificationFactory(provider, manager, psiModuleManager, cacheManager, project, projectEnvoy); #else #if RESHARPER_6 _contextFactory = new ContextFactory(provider, project, projectEnvoy, _assembly.Location.FullPath, cache); #else _contextFactory = new ContextFactory(provider, project, projectEnvoy, _assembly.Location, cache); #endif _contextSpecificationFactory = new ContextSpecificationFactory(provider, project, projectEnvoy, cache); #endif } }
public AssemblyExplorer(MSpecUnitTestProvider provider, #if RESHARPER_61 IUnitTestElementManager manager, PsiModuleManager psiModuleManager, CacheManager cacheManager, #endif IMetadataAssembly assembly, IProject project, UnitTestElementConsumer consumer) { _assembly = assembly; _consumer = consumer; using (ReadLockCookie.Create()) { var projectEnvoy = new ProjectModelElementEnvoy(project); var cache = new ContextCache(); #if RESHARPER_61 _contextFactory = new ContextFactory(provider, manager, psiModuleManager, cacheManager, project, projectEnvoy, _assembly.Location.FullPath, cache); _contextSpecificationFactory = new ContextSpecificationFactory(provider, manager, psiModuleManager, cacheManager, project, projectEnvoy, cache); _behaviorFactory = new BehaviorFactory(provider, manager, psiModuleManager, cacheManager, project, projectEnvoy, cache); _behaviorSpecificationFactory = new BehaviorSpecificationFactory(provider, manager, psiModuleManager, cacheManager, project, projectEnvoy); #else #if RESHARPER_6 _contextFactory = new ContextFactory(provider, project, projectEnvoy, _assembly.Location.FullPath, cache); #else _contextFactory = new ContextFactory(provider, project, projectEnvoy, _assembly.Location, cache); #endif _contextSpecificationFactory = new ContextSpecificationFactory(provider, project, projectEnvoy, cache); _behaviorFactory = new BehaviorFactory(provider, project, projectEnvoy, cache); _behaviorSpecificationFactory = new BehaviorSpecificationFactory(provider, project, projectEnvoy); #endif } }
public FileExplorer(IUnitTestProvider provider, UnitTestElementLocationConsumer consumer, IFile file, CheckForInterrupt interrupted) { if (file == null) { throw new ArgumentNullException("file"); } if (provider == null) { throw new ArgumentNullException("provider"); } _consumer = consumer; _file = file; _interrupted = interrupted; IProject project = file.ProjectFile.GetProject(); string assemblyPath = UnitTestManager.GetOutputAssemblyPath(project).FullPath; var cache = new ContextCache(); var contextFactory = new ContextFactory(provider, project, assemblyPath, cache); var contextSpecificationFactory = new ContextSpecificationFactory(provider, project, cache); var behaviorFactory = new BehaviorFactory(provider, project, cache); var behaviorSpecificationFactory = new BehaviorSpecificationFactory(provider, project); _elementHandlers = new List <IElementHandler> { new ContextElementHandler(contextFactory), new ContextSpecificationElementHandler(contextSpecificationFactory), new BehaviorElementHandler(behaviorFactory, behaviorSpecificationFactory) }; }
private static void Main(string[] args) { Pokemon pokemon = PokemonFactory.CreateInstance(1); pokemon.attackBehavior = BehaviorFactory.CreateBehavior("魯夫橡膠戰斧"); pokemon.Attack(pokemon); }
public void OnEndDrag(PointerEventData eventData) { _isDrag = false; if (transform.name.Equals(_copying)) { _copying = null; } if (_alignInfo == null || KeyboardEventManager.GetControl()) { _horizontalAlignLineManager.gameObject.SetActive(false); _verticalAlignLineManager.gameObject.SetActive(false); return; } Vector2 pos = selfRect.anchoredPosition; Vector2 size = selfRect.sizeDelta; if (_verticalAlignLineManager.gameObject.activeSelf && _alignInfo.VerticalAlignLine != null) { pos.x = _alignInfo.VerticalAlignLine.Left; switch (_alignInfo.VerticalAlignType) { case AlignType.Right: pos.x -= size.x; break; case AlignType.VerticalCenter: pos.x -= size.x * 0.5f; break; } pos.x = Element.InvConvertX(pos.x); _verticalAlignLineManager.gameObject.SetActive(false); } if (_horizontalAlignLineManager.gameObject.activeSelf && _alignInfo.HorizontalAlignLine != null) { pos.y = _alignInfo.HorizontalAlignLine.Top; switch (_alignInfo.HorizontalAlignType) { case AlignType.Bottom: pos.y -= size.y; break; case AlignType.HorizontalCenter: pos.y -= size.y * 0.5f; break; } pos.y = Element.InvConvertY(pos.y); _horizontalAlignLineManager.gameObject.SetActive(false); } List <string> selectedDisplayObjects = new List <string> { transform.name }; selectedDisplayObjects.AddRange(from pair in GlobalData.CurrentSelectDisplayObjectDic where pair.Value != transform select pair.Key); HistoryManager.Do(BehaviorFactory.GetUpdateDisplayObjectsPosBehavior(GlobalData.CurrentModule, selectedDisplayObjects, _startPos, pos)); }
public void OnToggleTrigger(bool isOn) { if (GlobalData.FrameToggleModifyByUndo) { GlobalData.FrameToggleModifyByUndo = false; return; } HistoryManager.Do(BehaviorFactory.GetUpdateFrameVisibleBehavior(isOn)); }
public override void Process(IEnumerable <Control> entities, State world) { foreach (Control e in entities) { Behavior <TestEntity> b = BehaviorFactory.GetTestBehavior(e.state); b.React((TestEntity)e, world); int input = b.GetInputFromEnvironment((TestEntity)e, world); e.state = test.GetNextState(e.state, input); } }
public FileExplorer(MSpecUnitTestProvider provider, #if RESHARPER_61 IUnitTestElementManager manager, PsiModuleManager psiModuleManager, CacheManager cacheManager, #endif UnitTestElementLocationConsumer consumer, IFile file, CheckForInterrupt interrupted) { if (file == null) { throw new ArgumentNullException("file"); } if (provider == null) { throw new ArgumentNullException("provider"); } _consumer = consumer; _file = file; _interrupted = interrupted; #if RESHARPER_6 IProject project = file.GetSourceFile().ToProjectFile().GetProject(); #else IProject project = file.ProjectFile.GetProject(); #endif var projectEnvoy = new ProjectModelElementEnvoy(project); string assemblyPath = UnitTestManager.GetOutputAssemblyPath(project).FullPath; var cache = new ContextCache(); #if RESHARPER_61 var contextFactory = new ContextFactory(provider, manager, psiModuleManager, cacheManager, project, projectEnvoy, assemblyPath, cache); var contextSpecificationFactory = new ContextSpecificationFactory(provider, manager, psiModuleManager, cacheManager, project, projectEnvoy, cache); var behaviorFactory = new BehaviorFactory(provider, manager, psiModuleManager, cacheManager, project, projectEnvoy, cache); var behaviorSpecificationFactory = new BehaviorSpecificationFactory(provider, manager, psiModuleManager, cacheManager, project, projectEnvoy); #else var contextFactory = new ContextFactory(provider, project, projectEnvoy, assemblyPath, cache); var contextSpecificationFactory = new ContextSpecificationFactory(provider, project, projectEnvoy, cache); var behaviorFactory = new BehaviorFactory(provider, project, projectEnvoy, cache); var behaviorSpecificationFactory = new BehaviorSpecificationFactory(provider, project, projectEnvoy); #endif _elementHandlers = new List <IElementHandler> { new ContextElementHandler(contextFactory), new ContextSpecificationElementHandler(contextSpecificationFactory), new BehaviorElementHandler(behaviorFactory, behaviorSpecificationFactory) }; }
private static void RemoveAllModules(bool combineWithNextBehavior = false) { if (GlobalData.Modules.Count == 0) { return; } List <string> modules = new List <string>(); modules.AddRange(GlobalData.Modules); HistoryManager.Do(BehaviorFactory.GetRemoveAllModuleBehavior(modules, combineWithNextBehavior)); }
public static void Main() { IRepository repository = new Repository(); IBehaviourFactory behaviourFactory = new BehaviorFactory(); IAttackFactory attackFactory = new AttackFactory(); ICommandInterpretable commandInterpreter = new CommandInterpreter(repository, behaviourFactory, attackFactory); IRunable engine = new Engine(commandInterpreter); engine.Run(); }
public static void Main(string[] args) { IBlobFactory blobFactory = new BlobFactory(); IAttackFactory attackFactory = new AttackFactory(); IBehaviorFactory behaviorFactory = new BehaviorFactory(); IInputReader reader = new ConsoleReader(); IOutputWriter writer = new ConsoleWriter(); IEngine engine = new Engine(blobFactory, attackFactory, behaviorFactory, reader, writer); engine.Run(); }
public static void Main(string[] args) { IBlobFactory blobFactory = new BlobFactory(); IAttackFactory attackFactory = new AttackFactory(); IBehaviorFactory behaviorFactory = new BehaviorFactory(); IReader reader = new ConsoleReader(); IWriter writer = new ConsoleWriter(); IEngine engine = new Engine(blobFactory, attackFactory, behaviorFactory, reader, writer); engine.Run(); }
public static void RemoveSelectedDisplayObject() { int count = GlobalData.CurrentSelectDisplayObjectDic.Count; if (count == 0) { DialogManager.ShowInfo("请先选择要删除的对象"); return; } HistoryManager.Do(BehaviorFactory.GetRemoveSelectedDisplayObjectBehavior(GlobalData.CurrentModule)); }
public static void Main(string[] args) { IUserInterface userInterface = new ConsoleUserInterface(); IBlobFactory blobFactory = new BlobFactory(); IBehaviorFactory behaviorFactory = new BehaviorFactory(); IAttackFactory attackFactory = new AttackFactory(); IDatabase database = new Database(); IEngine engine = new Engine(userInterface,attackFactory,blobFactory,behaviorFactory,database); engine.Run(); }
public static void Main(string[] args) { IUserInterface userInterface = new ConsoleUserInterface(); IBlobFactory blobFactory = new BlobFactory(); IBehaviorFactory behaviorFactory = new BehaviorFactory(); IAttackFactory attackFactory = new AttackFactory(); IDatabase database = new Database(); IEngine engine = new Engine(userInterface, attackFactory, blobFactory, behaviorFactory, database); engine.Run(); }
public FileExplorer(TestProvider provider, #if RESHARPER_61 IUnitTestElementManager manager, PsiModuleManager psiModuleManager, CacheManager cacheManager, #endif UnitTestElementLocationConsumer consumer, IFile file, CheckForInterrupt interrupted) { if (file == null) { throw new ArgumentNullException("file"); } if (provider == null) { throw new ArgumentNullException("provider"); } _consumer = consumer; _file = file; _interrupted = interrupted; #if RESHARPER_6 IProject project = PsiSourceFileExtensions.ToProjectFile(file.GetSourceFile()).GetProject(); #else resharper::JetBrains.ProjectModel.IProject project = file.ProjectFile.GetProject(); #endif var projectEnvoy = new ProjectModelElementEnvoy(project); string assemblyPath = UnitTestManager.GetOutputAssemblyPath(project).FullPath; var cache = new ContextCache(); #if RESHARPER_61 var contextFactory = new ContextFactory(provider, manager, psiModuleManager, cacheManager, project, projectEnvoy, assemblyPath, cache); var contextSpecificationFactory = new ContextSpecificationFactory(provider, manager, psiModuleManager, cacheManager, project, projectEnvoy, cache); var behaviorFactory = new BehaviorFactory(provider, manager, psiModuleManager, cacheManager, project, projectEnvoy, cache); var behaviorSpecificationFactory = new BehaviorSpecificationFactory(provider, manager, psiModuleManager, cacheManager, project, projectEnvoy); #else var contextFactory = new ContextFactory(provider, project, projectEnvoy, assemblyPath, cache); var contextSpecificationFactory = new ContextSpecificationFactory(provider, project, projectEnvoy, cache); #endif _elementHandlers = new List<IElementHandler> { new ContextElementHandler(contextFactory), new ContextSpecificationElementHandler(contextSpecificationFactory), }; }
public Behavior AddBehavior(BehaviorType type) { LinkedListNode <Behavior> curNode = _ActiveBehaviorList.First; while (curNode != null) { Behavior b = curNode.Value; if (b.Type == type) { if (b.IsInCallback) { b.ReActive = true; } return(b); } curNode = curNode.Next; } curNode = _InactiveBehaviorList.First; while (curNode != null) { Behavior b = curNode.Value; if (b.Type == type) { _ActiveBehaviorList.AddLast(b); if (b.Type == BehaviorType.Turn) { _ActiveTurnBehaviorList.Add(b); } _InactiveBehaviorList.Remove(b); b.IsInCallback = false; return(b); } curNode = curNode.Next; } Behavior newb = BehaviorFactory.CreateBehavior(type); newb.Init(gameObject.transform, ObjType); _ActiveBehaviorList.AddLast(newb); if (newb.Type == BehaviorType.Turn) { _ActiveTurnBehaviorList.Add(newb); } return(newb); }
public MSpecUnitTestElementSerializer(ISolution solution, MSpecUnitTestProvider provider, ContextFactory contextFactory, ContextSpecificationFactory contextSpecificationFactory, BehaviorFactory behaviorFactory, BehaviorSpecificationFactory behaviorSpecificationFactory) { _solution = solution; _provider = provider; _contextFactory = contextFactory; _contextSpecificationFactory = contextSpecificationFactory; _behaviorFactory = behaviorFactory; _behaviorSpecificationFactory = behaviorSpecificationFactory; }
static void Main() { IInputController inputController = new ConsoleInputController(); IRenderer renderer = new ConsoleRenderer(); ICommandFactory commandFactory = new CommandFactory(); IBlobFactory blobFactory = new BlobFactory(); IAttackFactory attackFactory = new AttackFactory(); IBehaviorFactory behaviorFactory = new BehaviorFactory(); IEngine engine = new Engine(renderer, inputController, commandFactory, blobFactory, attackFactory, behaviorFactory); engine.Run(); }
public static BehaviorNode CreateNormalAI() { var Root = BehaviorFactory.CreatePrioritySelectorNode("Root", null, null); var FindSkillNode = BehaviorFactory.CreatePrioritySelectorNode("FindSkill", Root, new CombatPrecondition_TryFindSkill()); var FindSkillTargetNode = BehaviorFactory.CreatePrioritySelectorNode("FindSkillTarget", FindSkillNode, new CombatPrecondition_TryFindSkillTarget()); var NearTargetNode = BehaviorFactory.CreatePrioritySelectorNode("NearTarget", FindSkillTargetNode, new CombatPrecondition_IsNearTarget()); var UseSkillNode = BehaviorFactory.CreateTerminalNode <CombatTerminal_UseSkill>("UseSkill", NearTargetNode, null); var FarTargetNode = BehaviorFactory.CreatePrioritySelectorNode("FarTarget", FindSkillTargetNode, new CombatPrecondition_IsFarTarget()); var MoveToTarget = BehaviorFactory.CreateTerminalNode <CombatTerminal_MoveToTarget>("MoveToTarget", FarTargetNode, null); return(Root); }
private static void ImportModules(string filePath) { byte[] bytes = Utils.ReadFile(filePath); string jsonStr = Encoding.UTF8.GetString(bytes); RemoveAllModules(true); Observable.Timer(TimeSpan.Zero) .Subscribe(_ => { try { List <Module> modules = JsonConvert.DeserializeObject <List <Module> >(jsonStr); HistoryManager.Do(BehaviorFactory.GetImportModulesBehavior(filePath, modules)); } catch (Exception e) { DialogManager.ShowError($"导入失败({e})"); } }); }
public void OnPointerUp(PointerEventData eventData) { if (_isDrag || KeyboardEventManager.GetShift() || KeyboardEventManager.GetControl() || GlobalData.CurrentSelectDisplayObjectDic.Count <= 1) { return; } if (!GlobalData.CurrentSelectDisplayObjectDic.ContainsKey(transform.name)) { return; } List <string> removeElements = GlobalData.CurrentSelectDisplayObjectDic .Where(pair => !pair.Key.Equals(transform.name)) .Select(pair => pair.Key) .ToList(); HistoryManager.Do(BehaviorFactory.GetUpdateSelectDisplayObjectBehavior(GlobalData.CurrentModule, null, removeElements)); }
public AssemblyExplorer(MSpecUnitTestProvider provider, IMetadataAssembly assembly, IProject project, UnitTestElementConsumer consumer) { _provider = provider; _assembly = assembly; _project = project; _consumer = consumer; var cache = new ContextCache(); _contextFactory = new ContextFactory(_provider, _project, _assembly.Location, cache); _contextSpecificationFactory = new ContextSpecificationFactory(_provider, _project, cache); _behaviorFactory = new BehaviorFactory(_provider, _project, cache); _behaviorSpecificationFactory = new BehaviorSpecificationFactory(_provider, _project); }
static void Main(string[] args) { Console.ReadKey(); BehaviorFactory duckBehaviorFactory = new BehaviorFactory(); Flock flock = new Flock(); Duck mallard = new Mallard(flock, duckBehaviorFactory); Duck sicklyDuck = new SicklyDuck(flock, duckBehaviorFactory); Duck rubberDuck = new RubberDuck(flock, duckBehaviorFactory); flock.Attach(mallard); flock.Attach(sicklyDuck); flock.Attach(rubberDuck); DuckStory(flock, rubberDuck, sicklyDuck, duckBehaviorFactory); Console.WriteLine("\r\n" + "Thanks for learning!" + "\r\n"); Console.ReadLine(); }
public AssemblyExplorer(MSpecUnitTestProvider provider, IMetadataAssembly assembly, IProject project, UnitTestElementConsumer consumer) { _assembly = assembly; _consumer = consumer; using (ReadLockCookie.Create()) { var projectEnvoy = new ProjectModelElementEnvoy(project); var cache = new ContextCache(); _contextFactory = new ContextFactory(provider, projectEnvoy, _assembly.Location, cache); _contextSpecificationFactory = new ContextSpecificationFactory(provider, projectEnvoy, cache); _behaviorFactory = new BehaviorFactory(provider, projectEnvoy, cache); _behaviorSpecificationFactory = new BehaviorSpecificationFactory(provider, projectEnvoy); } }
public void OnPointerDown(PointerEventData eventData) { if (Input.GetMouseButton(2)) { return; } Transform self = transform; bool isSelect = GlobalData.CurrentSelectDisplayObjectDic.ContainsKey(self.name); if (isSelect) { if (KeyboardEventManager.GetControl()) { HistoryManager.Do(BehaviorFactory.GetUpdateSelectDisplayObjectBehavior(GlobalData.CurrentModule, null, new List <string> { self.name })); } } else { List <string> removeElements = null; if (!KeyboardEventManager.GetShift()) { removeElements = GlobalData.CurrentSelectDisplayObjectDic.KeyList(); } HistoryManager.Do(BehaviorFactory.GetUpdateSelectDisplayObjectBehavior(GlobalData.CurrentModule, new List <string> { self.name }, removeElements)); } Vector2 mousePos = eventData.position; bool isRect = RectTransformUtility.ScreenPointToLocalPointInRectangle(selfRect, mousePos, eventData.enterEventCamera, out Vector2 offset); if (isRect) { _offset = offset; } if (_selfElement == null) { _selfElement = GlobalData.GetElement(self.name); } }
public static void CreateModule() { DialogManager.ShowGetValue("请输入 module 名:", "module", txt => { if (string.IsNullOrWhiteSpace(txt)) { QuickTipManager.ShowQuickTip("请输入正确的 module"); return; } if (GlobalData.ModuleDic.ContainsKey(txt)) { QuickTipManager.ShowQuickTip("module 已存在"); return; } HistoryManager.Do(BehaviorFactory.GetCreateModuleBehavior(txt)); }); }
public static IUnitTestElement ReadFromXml(XmlElement parent, IUnitTestElement parentElement, MSpecUnitTestProvider provider, ISolution solution, IUnitTestElementManager manager, PsiModuleManager psiModuleManager, CacheManager cacheManager ) { var projectId = parent.GetAttribute("projectId"); var project = ProjectUtil.FindProjectElementByPersistentID(solution, projectId) as IProject; if (project == null) { return(null); } var context = parentElement as ContextElement; if (context == null) { return(null); } var typeName = parent.GetAttribute("typeName"); var methodName = parent.GetAttribute("methodName"); var isIgnored = bool.Parse(parent.GetAttribute("isIgnored")); var fieldType = parent.GetAttribute("fieldType"); return(BehaviorFactory.GetOrCreateBehavior(provider, manager, psiModuleManager, cacheManager, project, ProjectModelElementEnvoy.Create(project), context, new ClrTypeName(typeName), methodName, isIgnored, fieldType)); }
public static void CopySelectDisplayObjectsBehavior(string moduleName, List <Element> copiedElements, bool needSelect = true) { if (string.IsNullOrWhiteSpace(moduleName) || !GlobalData.CurrentModule.Equals(moduleName)) { return; } if (copiedElements == null || copiedElements.Count == 0) { return; } AddDisplayObjectsBehavior(moduleName, copiedElements); if (!needSelect) { return; } List <string> removeElements = GlobalData.CurrentSelectDisplayObjectDic.KeyList(); HistoryManager.Do(BehaviorFactory.GetUpdateSelectDisplayObjectBehavior(moduleName, copiedElements.Select(element => element.Name).ToList(), removeElements)); }
public void PasteDisplayObjects() { if (GlobalData.CurrentCopyDisplayObjects.Count == 0) { return; } List <Element> sourceList = GlobalData.CurrentCopyDisplayObjects; Vector2 leftTop = DisplayObjectUtil.GetCopyDisplayObjectsLeftTop(sourceList); Vector2 mousePos = Vector2.zero; if (Utils.IsPointOverGameObject(containerScrollView)) { mousePos = Utils.GetRealPosition(Input.mousePosition); } Vector2 delta = mousePos - leftTop; int count = sourceList.Count; string moduleName = GlobalData.CurrentModule; List <Element> copiedElements = new List <Element>(); for (int idx = 0; idx < count; ++idx) { Element sourceElement = sourceList[idx]; string imageUrl = DisplayObjectUtil.GetImageUrl(moduleName, sourceElement.Name); string elementName = DisplayObjectUtil.GetCanUseElementName(sourceElement.Name, imageUrl); Vector2 pos = new Vector2(sourceElement.X + delta.x, sourceElement.Y + delta.y); Vector2 size = new Vector2(sourceElement.Width, sourceElement.Height); Element element = new Element { Name = elementName, X = pos.x, Y = pos.y, Width = size.x, Height = size.y, Visible = true }; DisplayObjectUtil.AddDisplayObjectBehavior(moduleName, element, imageUrl); copiedElements.Add(element); } HistoryManager.Do(BehaviorFactory.GetCopyDisplayObjectsBehavior(moduleName, copiedElements), true); }
public static void SelectDisplayObjectsInDisplayObject(Rectangle selectRect) { if (string.IsNullOrWhiteSpace(GlobalData.CurrentModule)) { return; } bool isControlDown = KeyboardEventManager.GetControl(); List <string> addElements = null, removeElements = null; if (isControlDown) { removeElements = new List <string>(); } else { addElements = new List <string>(); } List <Element> elements = GlobalData.ModuleDic[GlobalData.CurrentModule]; foreach (Element element in elements.Where(rect => rect.IsCrossing(selectRect))) { if (isControlDown) { removeElements.Add(element.Name); } else { addElements.Add(element.Name); } } if (isControlDown && removeElements.Count == 0) { return; } if (!isControlDown && addElements.Count == 0) { return; } HistoryManager.Do(BehaviorFactory.GetUpdateSelectDisplayObjectBehavior(GlobalData.CurrentModule, addElements, removeElements)); }
void IBeginDragHandler.OnBeginDrag(PointerEventData eventData) { _isDrag = true; if (KeyboardEventManager.GetAlt() && _copying == null) { List <string> removeElements = GlobalData.CurrentSelectDisplayObjectDic.KeyList(); List <Element> copiedElements = new List <Element>(); List <string> addElements = new List <string>(); List <Element> selectedElements = GlobalData.ModuleDic[GlobalData.CurrentModule] .Where(element => GlobalData.CurrentSelectDisplayObjectDic.ContainsKey(element.Name)) .ToList(); GameObject selfReplisome = null; int count = selectedElements.Count; for (int idx = 0; idx < count; ++idx) { Element element = selectedElements[idx]; if (element == null) { continue; } string key = $"{GlobalData.CurrentModule}_{element.Name}"; string imageUrl = GlobalData.DisplayObjectPathDic.ContainsKey(element.Name) ? imageUrl = GlobalData.DisplayObjectPathDic[key] : null; Vector2 pos = new Vector2(element.X, element.Y) + Element.InvConvertTo(GlobalData.OriginPoint); Vector2 size = new Vector2(element.Width, element.Height); Transform copyDisplayObject = DisplayObjectUtil.AddDisplayObject(imageUrl, pos, size, element.Name + "_copy", false, false); if (copyDisplayObject == null) { continue; } copiedElements.Add(new Element { Name = copyDisplayObject.name, X = pos.x, Y = pos.y, Width = size.x, Height = size.y, Visible = true }); addElements.Add(copyDisplayObject.name); if (!element.Name.Equals(transform.name)) { continue; } selfReplisome = copyDisplayObject.gameObject; DisplayObjectManager dom = copyDisplayObject.GetComponent <DisplayObjectManager>(); if (dom) { dom._offset = _offset; } } HistoryManager.Do(BehaviorFactory.GetCopyDisplayObjectsBehavior(GlobalData.CurrentModule, copiedElements, false, CombineType.Next), true); HistoryManager.Do(BehaviorFactory.GetUpdateSelectDisplayObjectBehavior(GlobalData.CurrentModule, addElements, removeElements, CombineType.Next)); ExecuteEvents.Execute(gameObject, eventData, ExecuteEvents.endDragHandler); if (selfReplisome == null) { return; } eventData.pointerDrag = selfReplisome; } else { _startPos = selfRect.anchoredPosition; } }