/// <summary> /// Test et gère les scripts /// </summary> /// <param name="stageObject"></param> /// <param name="IsProcess"></param> /// <returns></returns> public bool TestScript(VO_StageObject stageObject, Enums.TriggerEventConditionType type) { VO_Event eventSpot = stageObject.Event; VO_Page _page = null; //Activer l'event foreach (VO_Page page in eventSpot.PageList) { if (page.TriggerCondition == type && IsActivePage(page) && IsExecutablePage(page)) { _page = page; break; } } //Bad Interactions if (type == Enums.TriggerEventConditionType.ClickEvent) { if (_page == null && eventSpot != null && stageObject.ClassId != Guid.Empty) { VO_Dialog dialog = FindBadInteraction(eventSpot, stageObject.ClassId); if (dialog != null) { VO_Script dynamicScript = new VO_Script(Guid.NewGuid()); dynamicScript.Lines = new List <VO_Line>(); VO_Script_Message scriptMessage = new VO_Script_Message(); scriptMessage.Id = Guid.NewGuid(); scriptMessage.Dialog = dialog; dynamicScript.Lines.Add(scriptMessage); LaunchScript(stageObject, dynamicScript, type); return(true); } } } if (_page == null) { return(false); } #region Execute le script LaunchScript(stageObject, _page.Script, type); return(true); #endregion }
/// <summary> /// Lance un script /// </summary> /// <param name="hotSpot"></param> /// <param name="script"></param> private void LaunchScript(VO_StageObject hotSpot, VO_Script script, Enums.TriggerEventConditionType type) { if (type == Enums.TriggerEventConditionType.ClickEvent && hotSpot.PlayerMustMove) { VO_RunningScript newScript = new VO_RunningScript(); newScript.Id = Guid.NewGuid(); newScript.Lines = new List <VO_Line>(); newScript.ScriptType = Enums.ScriptType.Dynamic; VO_Script_MovePlayer moveScript = new VO_Script_MovePlayer(); moveScript.Id = Guid.NewGuid(); moveScript.Coords = hotSpot.PlayerPositionPoint; newScript.Lines.Add(moveScript); VO_Script_ChangePlayerDirection playerDirection = new VO_Script_ChangePlayerDirection(); playerDirection.Id = Guid.NewGuid(); playerDirection.Direction = hotSpot.PlayerMoveEndDirection; newScript.Lines.Add(playerDirection); VO_Script_CallScript callScript = new VO_Script_CallScript(); callScript.Id = Guid.NewGuid(); callScript.Script = script; newScript.Lines.Add(callScript); ScriptManager.AddParallelScript(newScript); } else { VO_RunningScript runningScript = new VO_RunningScript(); runningScript.Id = script.Id; runningScript.Lines = script.Lines; switch (type) { case Enums.TriggerEventConditionType.Automatic: case Enums.TriggerEventConditionType.ClickEvent: case Enums.TriggerEventConditionType.ContactEvent: if (ScriptManager.CurrentScript == null) { ScriptManager.CurrentScript = runningScript; } break; case Enums.TriggerEventConditionType.ParallelProcess: ScriptManager.AddParallelScript(runningScript); break; } } }