/// <summary> /// Insère un event /// </summary> /// <returns></returns> public static VO_Event CreateEvent(Enums.EventType currentEvent, Guid objectId) { VO_Event newItem = new VO_Event(); newItem.PageList = new List <VO_Page>(); VO_Page FirstPage = CreatePage(currentEvent, 0, objectId); FirstPage.PageEventType = currentEvent; FirstPage.PageNumber = newItem.PageList.Count + 1; VO_Script Script = null; switch (currentEvent) { case Enums.EventType.Animation: Script = ObjectsFactory.CreateScript(Enums.ScriptType.AnimationEvents); break; case Enums.EventType.Character: Script = ObjectsFactory.CreateScript(Enums.ScriptType.CharacterEvents); break; case Enums.EventType.Event: Script = ObjectsFactory.CreateScript(Enums.ScriptType.Events); break; } FirstPage.Script = Script; newItem.PageList.Add(FirstPage); return(newItem); }
/// <summary> /// Annulation des changements /// </summary> private void EventManager_CancelChanges(object sender, EventArgs e) { ddpAction.SelectedValueChanged -= new EventHandler(EventManager_ActionSelectionChanged); CurrentEvent = GameCore.Instance.RestoreEvent(); this.ScriptManager.DisableDrawManager(); this.Close(); }
/// <summary> /// Renvoie une bad interaction /// </summary> /// <param name="eventSpot"></param> /// <param name="classId"></param> /// <returns></returns> private VO_Dialog FindBadInteraction(VO_Event eventSpot, Guid classId) { //Filtre go if (ActionManager.CurrentActionIsGo()) { return(null); } VO_Class _class = GameCore.Instance.GetClassById(classId); VO_Dialog outputDialog = null; bool isAll = false; bool isPartial = false; if (_class == null) { return(null); } foreach (VO_BadInteraction badInteraction in _class.BadInteractions) { //Mauvaise action if (badInteraction.Action != Guid.Empty && ActionManager.CurrentAction.Id != badInteraction.Action) { continue; } //Mauvais character if (badInteraction.Character != Guid.Empty && PlayableCharactersManager.CurrentPlayerCharacter.Id != badInteraction.Character) { continue; } //Action Character if (badInteraction.Action == ActionManager.CurrentAction.Id && PlayableCharactersManager.CurrentPlayerCharacter.Id == badInteraction.Character) { return(badInteraction.Dialog); } //Action ALL else if (!isPartial && badInteraction.Action == ActionManager.CurrentAction.Id && PlayableCharactersManager.CurrentPlayerCharacter.Id == Guid.Empty) { isAll = false; isPartial = true; outputDialog = badInteraction.Dialog; } //ALL Character else if (!isPartial && badInteraction.Action == Guid.Empty && PlayableCharactersManager.CurrentPlayerCharacter.Id == badInteraction.Character) { isAll = false; isPartial = true; outputDialog = badInteraction.Dialog; } //ALL ALL else if (!isAll && !isPartial && badInteraction.Action == Guid.Empty && badInteraction.Character == Guid.Empty) { isAll = true; outputDialog = badInteraction.Dialog; } } return(outputDialog); }
/// <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> /// Récupère et traite l'event /// </summary> /// <param name="point"></param> /// <param name="matrixPrecision"></param> public bool GetEventFromMatrix(Point point, int matrixPrecision) { //Gestion des characters foreach (VO_StageCharacter character in _CurrentStage.ListCharacters) { VO_CharacterSprite characterSprite = GetCharacterSprite(character.Id); if (characterSprite.PointIsInCharacter(point)) { //Activer l'event foreach (VO_Page page in character.Event.PageList) { if (IsActivePage(page)) { return(true); } } return(false); } } //Gestion des events int eventIndex = MatrixManager.CurrentStage.EventsMatrix[point.X / matrixPrecision, point.Y / matrixPrecision] - 1; //Récupérer l'event associé if (eventIndex > -1) { VO_Event eventSpot = _CurrentStage.ListHotSpots[eventIndex].Event; //Activer l'event foreach (VO_Page page in eventSpot.PageList) { if (IsActivePage(page) && page.TriggerCondition == Enums.TriggerEventConditionType.ClickEvent) { return(true); } } } return(false); }
/// <summary> /// Constructeur principal /// </summary> public GameCoreEventSave() { Event = new VO_Event(); }
/// <summary> /// Sauvegarde les boutons pour le EventManager /// </summary> public void SaveEvent(VO_Event v_event) { SAVEEVENT = new GameCoreEventSave(); SAVEEVENT.Event = v_event.Clone(); }