private void panDrawingSurface_MouseDown(object sender, MouseEventArgs e) { Rectangle MouseRec = new Rectangle(e.X + ScriptStartingPos.X, e.Y + ScriptStartingPos.Y, 1, 1); MousePosOld = e.Location; for (int S = ActiveCutscene.DicActionScript.Count - 1; S >= 0; --S) { if (MouseRec.IntersectsWith(ActiveCutscene.DicActionScript[S].ScriptSize)) { SelectScript(ActiveCutscene.DicActionScript[S]); ActiveScriptIndex = S; ActiveScriptType = ActiveScriptTypes.ActionScript; return; } else if ((e.Button & MouseButtons.Left) == MouseButtons.Left) { //Triggers. for (int T = ActiveCutscene.DicActionScript[S].NameTriggers.Length - 1; T >= 0; --T) { if (MouseRec.X >= ActiveCutscene.DicActionScript[S].ScriptSize.X - 10 && MouseRec.X <= ActiveCutscene.DicActionScript[S].ScriptSize.X - 5 && MouseRec.Y >= ActiveCutscene.DicActionScript[S].ScriptSize.Y + 19 + T * 12 && MouseRec.Y <= ActiveCutscene.DicActionScript[S].ScriptSize.Y + 24 + T * 12) { ScriptLink = ActiveCutscene.DicActionScript[S]; ScriptLinkIndex = S; ScriptLinkType = ScriptLinkTypes.Trigger; ScriptLinkEventIndex = T; ScriptLinkStartPos = new Point(ActiveCutscene.DicActionScript[S].ScriptSize.X - 7, ActiveCutscene.DicActionScript[S].ScriptSize.Y + 21 + T * 12); return; } } //Events. for (int E = ActiveCutscene.DicActionScript[S].NameEvents.Length - 1; E >= 0; --E) { if (MouseRec.X >= ActiveCutscene.DicActionScript[S].ScriptSize.X + ActiveCutscene.DicActionScript[S].ScriptSize.Width + 5 && MouseRec.X <= ActiveCutscene.DicActionScript[S].ScriptSize.X + ActiveCutscene.DicActionScript[S].ScriptSize.Width + 10 && MouseRec.Y >= ActiveCutscene.DicActionScript[S].ScriptSize.Y + ActiveCutscene.DicActionScript[S].ScriptSize.Height - ActiveCutscene.DicActionScript[S].NameEvents.Length * 12 + 1 + E * 12 && MouseRec.Y <= ActiveCutscene.DicActionScript[S].ScriptSize.Y + ActiveCutscene.DicActionScript[S].ScriptSize.Height - ActiveCutscene.DicActionScript[S].NameEvents.Length * 12 + 6 + E * 12) { ScriptLink = ActiveCutscene.DicActionScript[S]; ScriptLinkIndex = S; ScriptLinkType = ScriptLinkTypes.Event; ScriptLinkEventIndex = E; ScriptLinkStartPos = new Point(ActiveCutscene.DicActionScript[S].ScriptSize.X + ActiveCutscene.DicActionScript[S].ScriptSize.Width + 7, ActiveCutscene.DicActionScript[S].ScriptSize.Y + ActiveCutscene.DicActionScript[S].ScriptSize.Height - ActiveCutscene.DicActionScript[S].NameEvents.Length * 12 + 3 + E * 12); return; } } } } for (int D = ActiveCutscene.ListDataContainer.Count - 1; D >= 0; --D) { if (MouseRec.IntersectsWith(ActiveCutscene.ListDataContainer[D].ScriptSize)) { SelectScript(ActiveCutscene.ListDataContainer[D]); ActiveScriptIndex = D; ActiveScriptType = ActiveScriptTypes.DataContainer; return; } } }
private void panDrawingSurface_MouseUp(object sender, MouseEventArgs e) { Rectangle MouseRec = new Rectangle(e.X + ScriptStartingPos.X, e.Y + ScriptStartingPos.Y, 1, 1); #region Action Scripts for (int S = AI.ListScript.Count - 1; S >= 0; --S) { if (ScriptLink == AI.ListScript[S]) { continue; } AIScript ActiveScript = AI.ListScript[S]; int X = ActiveScript.ScriptSize.X - ScriptStartingPos.X; int Y = ActiveScript.ScriptSize.Y - ScriptStartingPos.Y; if (MouseRec.IntersectsWith(AI.ListScript[S].ScriptSize)) { if ((e.Button & MouseButtons.Left) == MouseButtons.Left) { ActiveScriptIndex = -1; return; } else if ((e.Button & MouseButtons.Right) == MouseButtons.Right) { cmsScriptMenu.Show(this, PointToClient(Cursor.Position)); return; } } else if ((e.Button & MouseButtons.Left) == MouseButtons.Left && ScriptLink != null) { FinishLinkingScript(S, MouseRec); } else if ((e.Button & MouseButtons.Right) == MouseButtons.Right) { UnlinkScript(S, MouseRec); } } #endregion ScriptLink = null; ScriptLinkIndex = -1; ScriptLinkEventIndex = -1; ScriptLinkType = ScriptLinkTypes.None; ActiveScriptIndex = -1; DrawScripts(); }
public void Select(System.Drawing.Point e) { System.Drawing.Rectangle MouseRec = new System.Drawing.Rectangle(e.X + ScriptStartingPos.X, e.Y + ScriptStartingPos.Y, 1, 1); MousePosOld = e; for (int S = ListMapScript.Count - 1; S >= 0; --S) { if (MouseRec.IntersectsWith(ListMapScript[S].ScriptSize)) { OnSelect(ListMapScript[S], false); ActiveScriptIndex = S; return; } else { //Triggers. for (int T = ListMapScript[S].ArrayNameTrigger.Length - 1; T >= 0; --T) { if (MouseRec.X >= ListMapScript[S].ScriptSize.X - 10 && MouseRec.X <= ListMapScript[S].ScriptSize.X - 5 && MouseRec.Y >= ListMapScript[S].ScriptSize.Y + 19 + T * 12 && MouseRec.Y <= ListMapScript[S].ScriptSize.Y + 24 + T * 12) { ScriptLink = ListMapScript[S]; ScriptLinkIndex = S; ScriptLinkType = ScriptLinkTypes.Trigger; ScriptLinkEventIndex = T; ScriptLinkStartPos = new Point(ListMapScript[S].ScriptSize.X - 7, ListMapScript[S].ScriptSize.Y + 21 + T * 12); return; } } //Events. for (int E = ListMapScript[S].ArrayNameCondition.Length - 1; E >= 0; --E) { if (MouseRec.X >= ListMapScript[S].ScriptSize.X + ListMapScript[S].ScriptSize.Width + 5 && MouseRec.X <= ListMapScript[S].ScriptSize.X + ListMapScript[S].ScriptSize.Width + 10 && MouseRec.Y >= ListMapScript[S].ScriptSize.Y + ListMapScript[S].ScriptSize.Height - ListMapScript[S].ArrayNameCondition.Length * 12 + 1 + E * 12 && MouseRec.Y <= ListMapScript[S].ScriptSize.Y + ListMapScript[S].ScriptSize.Height - ListMapScript[S].ArrayNameCondition.Length * 12 + 6 + E * 12) { ScriptLink = ListMapScript[S]; ScriptLinkIndex = S; ScriptLinkType = ScriptLinkTypes.Event; ScriptLinkEventIndex = E; ScriptLinkStartPos = new Point(ListMapScript[S].ScriptSize.X + ListMapScript[S].ScriptSize.Width + 7, ListMapScript[S].ScriptSize.Y + ListMapScript[S].ScriptSize.Height - ListMapScript[S].ArrayNameCondition.Length * 12 + 3 + E * 12); return; } } } } }
private void FinishLinkingScript(int ActiveScriptIndex, Rectangle MouseRec) { AIScript ActiveScript = AI.ListScript[ActiveScriptIndex]; int ScriptX = ActiveScript.ScriptSize.X - ScriptStartingPos.X; int ScriptY = ActiveScript.ScriptSize.Y - ScriptStartingPos.Y; switch (ScriptLinkType) { #region FromEvaluatorToFollowingScript case ScriptLinkTypes.FromEvaluatorToFollowingScript: var ScriptLinkEvaluator = ScriptLink as ScriptEvaluator; if (ScriptLinkEvaluator == null) { return; } for (int T = ActiveScript.ArrayFollowingScript.Length - 1; T >= 0; --T) { Rectangle FollowingScriptPosition = GetLinkBoxPosition(ScriptBoxTypes.FollowingScript, ActiveScript, T); if (MouseRec.IntersectsWith(FollowingScriptPosition)) { ActiveScript.ArrayFollowingScript[T].ListScript.Add(ScriptLinkEvaluator); ScriptLink = null; ScriptLinkIndex = -1; ScriptLinkEventIndex = -1; ScriptLinkType = ScriptLinkTypes.None; DrawScripts(); return; } } break; #endregion #region FromFollowingScriptToEvaluator case ScriptLinkTypes.FromFollowingScriptToEvaluator: var ActiveScriptEvaluator = ActiveScript as ScriptEvaluator; if (ActiveScriptEvaluator == null) { return; } Rectangle EvaluatorPosition = GetLinkBoxPosition(ScriptBoxTypes.Evaluator, ActiveScript, 0); if (MouseRec.IntersectsWith(EvaluatorPosition) && !AI.ListScript[ScriptLinkIndex].ArrayFollowingScript[ScriptLinkEventIndex].ListScript.Contains(ActiveScriptEvaluator)) { AI.ListScript[ScriptLinkIndex].ArrayFollowingScript[ScriptLinkEventIndex].ListScript.Add(ActiveScriptEvaluator); ScriptLink = null; ScriptLinkIndex = -1; ScriptLinkEventIndex = -1; ScriptLinkType = ScriptLinkTypes.None; DrawScripts(); return; } break; #endregion #region FromReferenceToGetContent case ScriptLinkTypes.FromReferenceToGetContent: var ActiveScriptReference = ActiveScript as ScriptReference; if (ActiveScriptReference == null) { return; } Rectangle ReferencePosition = GetLinkBoxPosition(ScriptBoxTypes.GetContent, ActiveScript, 0); if (MouseRec.IntersectsWith(ReferencePosition) && AI.ListScript[ScriptLinkIndex].ArrayReferences[ScriptLinkEventIndex].ReferencedScript != ActiveScriptReference) { AI.ListScript[ScriptLinkIndex].ArrayReferences[ScriptLinkEventIndex].ReferencedScript = ActiveScriptReference; ScriptLink = null; ScriptLinkIndex = -1; ScriptLinkEventIndex = -1; ScriptLinkType = ScriptLinkTypes.None; DrawScripts(); return; } break; #endregion #region FromGetContentToReference case ScriptLinkTypes.FromGetContentToReference: var ScriptLinkGetContent = ScriptLink as ScriptReference; if (ScriptLinkGetContent == null) { return; } for (int T = ActiveScript.ArrayReferences.Length - 1; T >= 0; --T) { Rectangle FollowingScriptPosition = GetLinkBoxPosition(ScriptBoxTypes.Reference, ActiveScript, T); if (MouseRec.IntersectsWith(FollowingScriptPosition)) { ActiveScript.ArrayReferences[T].ReferencedScriptIndex = ScriptLinkIndex; ScriptLink = null; ScriptLinkIndex = -1; ScriptLinkEventIndex = -1; ScriptLinkType = ScriptLinkTypes.None; DrawScripts(); return; } } break; #endregion } }
private void StartLinkingScript(int ActiveScriptIndex, Rectangle MouseRec) { AIScript ActiveScript = AI.ListScript[ActiveScriptIndex]; //Following Scripts. for (int T = ActiveScript.ArrayFollowingScript.Length - 1; T >= 0; --T) { Rectangle LinkBoxPosition = GetLinkBoxPosition(ScriptBoxTypes.FollowingScript, ActiveScript, T); if (MouseRec.IntersectsWith(LinkBoxPosition)) { ScriptLink = ActiveScript; ScriptLinkIndex = ActiveScriptIndex; ScriptLinkType = ScriptLinkTypes.FromFollowingScriptToEvaluator; ScriptLinkEventIndex = T; ScriptLinkStartPos = new Point(LinkBoxPosition.X + 2, LinkBoxPosition.Y + 2); return; } } //References. for (int T = ActiveScript.ArrayReferences.Length - 1; T >= 0; --T) { Rectangle LinkBoxPosition = GetLinkBoxPosition(ScriptBoxTypes.Reference, ActiveScript, T); if (MouseRec.IntersectsWith(LinkBoxPosition)) { ScriptLink = ActiveScript; ScriptLinkIndex = ActiveScriptIndex; ScriptLinkType = ScriptLinkTypes.FromReferenceToGetContent; ScriptLinkEventIndex = T; ScriptLinkStartPos = new Point(LinkBoxPosition.X + 2, LinkBoxPosition.Y + 2); return; } } //Evaluator. Rectangle EvaluatorLinkBoxPosition = GetLinkBoxPosition(ScriptBoxTypes.Evaluator, ActiveScript, 0); if (MouseRec.IntersectsWith(EvaluatorLinkBoxPosition) && ActiveScript is ScriptEvaluator) { ScriptLink = ActiveScript; ScriptLinkIndex = ActiveScriptIndex; ScriptLinkType = ScriptLinkTypes.FromEvaluatorToFollowingScript; ScriptLinkEventIndex = -1; ScriptLinkStartPos = new Point(EvaluatorLinkBoxPosition.X + 2, EvaluatorLinkBoxPosition.Y + 2); return; } //GetContent. Rectangle GetContentLinkBoxPosition = GetLinkBoxPosition(ScriptBoxTypes.GetContent, ActiveScript, 0); if (MouseRec.IntersectsWith(GetContentLinkBoxPosition) && ActiveScript is ScriptReference) { ScriptLink = ActiveScript; ScriptLinkIndex = ActiveScriptIndex; ScriptLinkType = ScriptLinkTypes.FromGetContentToReference; ScriptLinkEventIndex = -1; ScriptLinkStartPos = new Point(GetContentLinkBoxPosition.X + 2, GetContentLinkBoxPosition.Y + 2); return; } }
private void panDrawingSurface_MouseUp(object sender, MouseEventArgs e) { Rectangle MouseRec = new Rectangle(e.X + ScriptStartingPos.X, e.Y + ScriptStartingPos.Y, 1, 1); #region Action Scripts for (int S = ActiveCutscene.DicActionScript.Count - 1; S >= 0; --S) { if (MouseRec.IntersectsWith(ActiveCutscene.DicActionScript[S].ScriptSize)) { if ((e.Button & MouseButtons.Left) == MouseButtons.Left) { ActiveScriptIndex = -1; return; } else if ((e.Button & MouseButtons.Right) == MouseButtons.Right) { cmsScriptMenu.Show(this, PointToClient(Cursor.Position)); return; } } #region Linking else { #region Triggers for (int T = ActiveCutscene.DicActionScript[S].NameTriggers.Length - 1; T >= 0; --T) { if (MouseRec.X >= ActiveCutscene.DicActionScript[S].ScriptSize.X - 10 && MouseRec.X <= ActiveCutscene.DicActionScript[S].ScriptSize.X - 5 && MouseRec.Y >= ActiveCutscene.DicActionScript[S].ScriptSize.Y + 19 + T * 12 && MouseRec.Y <= ActiveCutscene.DicActionScript[S].ScriptSize.Y + 24 + T * 12) { EventInfo NewEvent = new EventInfo(S, T); if ((e.Button & MouseButtons.Left) == MouseButtons.Left) { if (ScriptLink != null && ScriptLink != ActiveCutscene.DicActionScript[S]) {//Event to Trigger. if (ScriptLinkType == ScriptLinkTypes.Event && !ScriptLink.ArrayEvents[ScriptLinkEventIndex].Contains(NewEvent)) { ScriptLink.ArrayEvents[ScriptLinkEventIndex].Add(NewEvent); } ScriptLink = null; ScriptLinkIndex = -1; ScriptLinkEventIndex = -1; ScriptLinkType = ScriptLinkTypes.None; DrawScripts(); return; } } else if ((e.Button & MouseButtons.Right) == MouseButtons.Right) { for (int i = ActiveCutscene.DicActionScript.Count - 1; i >= 0; --i) { for (int E = ActiveCutscene.DicActionScript[i].ArrayEvents.Length - 1; E >= 0; --E) { ActiveCutscene.DicActionScript[i].ArrayEvents[E].Remove(NewEvent); } } DrawScripts(); } } } #endregion #region Events for (int E = ActiveCutscene.DicActionScript[S].NameEvents.Length - 1; E >= 0; --E) { if (MouseRec.X >= ActiveCutscene.DicActionScript[S].ScriptSize.X + ActiveCutscene.DicActionScript[S].ScriptSize.Width + 5 && MouseRec.X <= ActiveCutscene.DicActionScript[S].ScriptSize.X + ActiveCutscene.DicActionScript[S].ScriptSize.Width + 10 && MouseRec.Y >= ActiveCutscene.DicActionScript[S].ScriptSize.Y + ActiveCutscene.DicActionScript[S].ScriptSize.Height - ActiveCutscene.DicActionScript[S].NameEvents.Length * 12 + 1 + E * 12 && MouseRec.Y <= ActiveCutscene.DicActionScript[S].ScriptSize.Y + ActiveCutscene.DicActionScript[S].ScriptSize.Height - ActiveCutscene.DicActionScript[S].NameEvents.Length * 12 + 6 + E * 12) { if ((e.Button & MouseButtons.Left) == MouseButtons.Left) { if (ScriptLink != null && ScriptLink != ActiveCutscene.DicActionScript[S]) {//Trigger to Event. if (ScriptLinkType == ScriptLinkTypes.Trigger) { ActiveCutscene.DicActionScript[S].ArrayEvents[E].Add(new EventInfo(ScriptLinkIndex, ScriptLinkEventIndex)); } ScriptLink = null; ScriptLinkIndex = -1; ScriptLinkEventIndex = -1; ScriptLinkType = ScriptLinkTypes.None; DrawScripts(); return; } } else if ((e.Button & MouseButtons.Right) == MouseButtons.Right) { ActiveCutscene.DicActionScript[S].ArrayEvents[E].Clear(); DrawScripts(); } return; } } #endregion } #endregion } #endregion //Data containers for (int D = ActiveCutscene.ListDataContainer.Count - 1; D >= 0; --D) { if (MouseRec.IntersectsWith(ActiveCutscene.ListDataContainer[D].ScriptSize)) { if ((e.Button & MouseButtons.Left) == MouseButtons.Left) { ActiveScriptIndex = -1; return; } else if ((e.Button & MouseButtons.Right) == MouseButtons.Right) { cmsScriptMenu.Show(this, PointToClient(Cursor.Position)); return; } } } ScriptLink = null; ScriptLinkIndex = -1; ScriptLinkEventIndex = -1; ScriptLinkType = ScriptLinkTypes.None; ActiveScriptIndex = -1; DrawScripts(); }
public void Scripting_MouseUp(System.Drawing.Point e, bool LeftClick, bool RightClick) { System.Drawing.Rectangle MouseRec = new System.Drawing.Rectangle(e.X + ScriptStartingPos.X, e.Y + ScriptStartingPos.Y, 1, 1); #region Action Scripts for (int S = ListMapScript.Count - 1; S >= 0; --S) { if (MouseRec.IntersectsWith(ListMapScript[S].ScriptSize)) { if (LeftClick) { ActiveScriptIndex = -1; return; } else if (RightClick) { OnSelect(ListMapScript[S], true); return; } } #region Linking else { #region Triggers for (int T = ListMapScript[S].ArrayNameTrigger.Length - 1; T >= 0; --T) { if (MouseRec.X >= ListMapScript[S].ScriptSize.X - 10 && MouseRec.X <= ListMapScript[S].ScriptSize.X - 5 && MouseRec.Y >= ListMapScript[S].ScriptSize.Y + 19 + T * 12 && MouseRec.Y <= ListMapScript[S].ScriptSize.Y + 24 + T * 12) { EventInfo NewEvent = new EventInfo(S, T); if (LeftClick) { if (ScriptLink != null && ScriptLink != ListMapScript[S]) {//Event to Trigger. if (ScriptLinkType == ScriptLinkTypes.Event && !ScriptLink.ArrayEvents[ScriptLinkEventIndex].Contains(NewEvent)) { ScriptLink.ArrayEvents[ScriptLinkEventIndex].Add(NewEvent); } ScriptLink = null; ScriptLinkIndex = -1; ScriptLinkEventIndex = -1; ScriptLinkType = ScriptLinkTypes.None; return; } } else if (RightClick) { for (int i = ListMapScript.Count - 1; i >= 0; --i) { for (int E = ListMapScript[i].ArrayEvents.Length - 1; E >= 0; --E) { ListMapScript[i].ArrayEvents[0].Remove(NewEvent); } } } } } #endregion #region Events for (int E = ListMapScript[S].ArrayNameCondition.Length - 1; E >= 0; --E) { if (MouseRec.X >= ListMapScript[S].ScriptSize.X + ListMapScript[S].ScriptSize.Width + 5 && MouseRec.X <= ListMapScript[S].ScriptSize.X + ListMapScript[S].ScriptSize.Width + 10 && MouseRec.Y >= ListMapScript[S].ScriptSize.Y + ListMapScript[S].ScriptSize.Height - ListMapScript[S].ArrayNameCondition.Length * 12 + 1 + E * 12 && MouseRec.Y <= ListMapScript[S].ScriptSize.Y + ListMapScript[S].ScriptSize.Height - ListMapScript[S].ArrayNameCondition.Length * 12 + 6 + E * 12) { if (LeftClick) { if (ScriptLink != null && ScriptLink != ListMapScript[S]) {//Trigger to Event. if (ScriptLinkType == ScriptLinkTypes.Trigger) { ListMapScript[S].ArrayEvents[E].Add(new EventInfo(ScriptLinkIndex, ScriptLinkEventIndex)); } ScriptLink = null; ScriptLinkIndex = -1; ScriptLinkEventIndex = -1; ScriptLinkType = ScriptLinkTypes.None; return; } } else if (RightClick) { ListMapScript[S].ArrayEvents[E].Clear(); } return; } } #endregion } #endregion } #endregion ScriptLink = null; ScriptLinkIndex = -1; ScriptLinkEventIndex = -1; OnSelect(null, false); ScriptLinkType = ScriptLinkTypes.None; ActiveScriptIndex = -1; }