/// <summary> /// Call every Triggers linked to an Event. /// </summary> /// <param name="Index">Index of the Event to call.</param> public void ExecuteEvent(CutsceneActionScript InputScript, int Index) { for (int E = 0; E < InputScript.ArrayEvents[Index].Count; E++) { DicActionScript[InputScript.ArrayEvents[Index][E].LinkedScriptIndex].ExecuteTrigger(InputScript.ArrayEvents[Index][E].LinkedScriptTriggerIndex); } }
public bool CheckIfScriptIsActive(CutsceneActionScript Script) { if (Script.IsActive && !Script.IsEnded) { return(true); } else { for (int E = 0; E < Script.ArrayEvents.Length; E++) { for (int S = 0; S < Script.ArrayEvents[E].Count; S++) { if (CheckIfScriptIsActive(DicActionScript[Script.ArrayEvents[E][S].LinkedScriptIndex])) { return(true); } } } } return(false); }
public void AddActionScript(CutsceneActionScript NewScript) { DicActionScript.Add(NextActionScriptID++, NewScript); }
public override void AfterCutsceneLoad() { Dictionary <string, CutsceneScript> DicScripts; if (Owner == null) { DicScripts = LoadAllScripts(); } else { DicScripts = Owner.DicCutsceneScript; } string[] Content = _Text.Split(new string[] { "\r", "\n" }, StringSplitOptions.RemoveEmptyEntries); string PreviousEvent = null; CutsceneActionScript LastActionScript = null; foreach (string Line in Content) { string[] LineContent = Line.Split(new string[1] { ", " }, StringSplitOptions.None); string ScriptName = LineContent[0]; CutsceneScript LineScript = DicScripts[ScriptName].CopyScript(Owner); System.Reflection.PropertyInfo[] ScriptProperties = LineScript.GetType().GetProperties(); int i = 1; foreach (System.Reflection.PropertyInfo Property in ScriptProperties) { if (Property.CanWrite) { string Value = ""; if (i < LineContent.Length) { Value = LineContent[i]; } string[] ArrayLineContent = Value.Split(new string[1] { "," }, StringSplitOptions.RemoveEmptyEntries); if (Property.PropertyType.IsArray) { Property.SetValue(LineScript, Convert.ChangeType(ArrayLineContent, Property.PropertyType, CultureInfo.InvariantCulture)); } else if (Property.PropertyType.IsEnum) { object EnumValue = Enum.Parse(Property.PropertyType, Value); Property.SetValue(LineScript, Convert.ChangeType(EnumValue, Property.PropertyType, CultureInfo.InvariantCulture)); } else { Property.SetValue(LineScript, Convert.ChangeType(Value, Property.PropertyType, CultureInfo.InvariantCulture)); } ++i; } } CutsceneActionScript LineActionScript = LineScript as CutsceneActionScript; if (LineActionScript != null) { int CurrentScriptCount = 0; if (Owner != null) { LineActionScript.ExecuteEvent = Owner.ExecuteEvent; LineActionScript.GetDataContainerByID = Owner.GetDataContainerByID; CurrentScriptCount = Owner.DicActionScript.Count; Owner.AddActionScript(LineActionScript); } if (PreviousEvent == null) { ListTextScriptToTrigger.Add(LineActionScript); } else { int EventIndex = Array.IndexOf(LastActionScript.NameEvents, PreviousEvent); LastActionScript.ArrayEvents[EventIndex].Add(new EventInfo(CurrentScriptCount, 0)); } PreviousEvent = null; if (LineContent.Length > i) { PreviousEvent = LineContent[i]; LastActionScript = LineActionScript; } else { LastActionScript = null; } } else { CutsceneDataContainer LineDataContainer = LineScript as CutsceneDataContainer; if (LineDataContainer != null && Owner != null) { Owner.ListDataContainer.Add(LineDataContainer); } } } }