/// <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); }
public static VO_Page CreatePage(Enums.EventType CurrentEvent, int PageNumber, Guid objectId) { VO_Page NewPage = new VO_Page(new Guid()); NewPage.PageNumber = PageNumber; NewPage.PageEventType = CurrentEvent; VO_Script Script = null; switch (CurrentEvent) { case Enums.EventType.Animation: Script = ObjectsFactory.CreateScript(Enums.ScriptType.AnimationEvents); NewPage.AnimationFrequency = GlobalConstants.ANIMATION_NORMAL_FREQUENCY; break; case Enums.EventType.Character: Script = ObjectsFactory.CreateScript(Enums.ScriptType.CharacterEvents); VO_Character character = GameCore.Instance.GetCharacterById(objectId); NewPage.CharacterAnimationFrequency = GlobalConstants.ANIMATION_NORMAL_FREQUENCY; NewPage.CharacterDirection = Enums.Movement.Down; NewPage.CharacterSpeed = GlobalConstants.CHARACTERS_NORMAL_SPEED; NewPage.CharacterStandingType = character.StandingAnim; NewPage.CharacterWalkingType = character.WalkingAnim; NewPage.CharacterTalkingType = character.TalkingAnim; break; case Enums.EventType.Event: Script = ObjectsFactory.CreateScript(Enums.ScriptType.Events); break; } NewPage.Script = Script; return(NewPage); }
/// <summary> /// Copie d'une page dans l'EventManager /// </summary> private void EventManager_CopyPage(object sender, EventArgs e) { // Creation de la copie VO_Page OriginalPage = CurrentEvent.PageList[PageIndex]; VO_Page CopyPage = OriginalPage.Clone(); CopyPage.PageId = new Guid(); CopyPage.PageNumber = CurrentEvent.PageList.Count + 1; CurrentEvent.PageList.Add(CopyPage); // Instanciation d'une nouvelle Page et d'un VO_Page correspondant, puis sélection de la page int TabPageIndex = PagesManager.TabPages.Count; TabPage NewTabPage = new TabPage(Convert.ToString(TabPageIndex + 1)); foreach (Control CurrentControl in CurrentControlList) { NewTabPage.Controls.Add(CurrentControl); } PagesManager.TabPages.Add(NewTabPage); PagesManager.SelectedIndex = TabPageIndex; PageIndex = TabPageIndex; }
/// <summary> /// Teste si un event est actif /// </summary> /// <param name="_event"></param> /// <returns></returns> public bool IsActivePage(VO_Page page) { //Si le personnage ne correspond pas, on passe à la page suivante if (page.CharacterActivated && PlayableCharactersManager.CurrentPlayerCharacter.Id != page.CharacterId) { return(false); } //Si la variable ne correspond pas aux conditions, on passe à la page suivante if (page.VariableActivated) { VO_Variable var = GameState.State.Variables.Find(p => p.Id == page.VariableId); if (var == null || var.Id == Guid.Empty || var.Value < page.VariableValue) { return(false); } } //Si le bouton ne correspond pas aux conditions, on passe à la page suivante if (page.TriggerActivated) { VO_Trigger trigger = GameState.State.Triggers.Find(p => p.Id == page.TriggerId); if (trigger == null || trigger.Id == Guid.Empty || !trigger.Value) { return(false); } } return(true); }
/// <summary> /// Vidage d'un VO_Page /// </summary> private void EventManager_EmptyPage(object sender, EventArgs e) { VO_Page CurrentPage = CurrentEvent.PageList[PageIndex]; VO_Page EmptyPage = new VO_Page(); EmptyPage.PageId = CurrentPage.PageId; EmptyPage.PageName = CurrentPage.PageName; EmptyPage.PageNumber = CurrentPage.PageNumber; CurrentEvent.PageList[PageIndex] = EmptyPage; UpdateEventManagerControlFromPage(EmptyPage); }
/// <summary> /// Suppression d'une Page /// </summary> private void EventManager_DeletePage(object sender, EventArgs e) { // Pas de suppression de la première page, Simulation d'un vidage de page if (CurrentEvent.PageList.Count <= 1) { VO_Page CurrentPage = CurrentEvent.PageList[PageIndex]; VO_Page EmptyPage = new VO_Page(); EmptyPage.PageId = CurrentPage.PageId; EmptyPage.PageName = CurrentPage.PageName; EmptyPage.PageNumber = CurrentPage.PageNumber; CurrentEvent.PageList[PageIndex] = EmptyPage; UpdateEventManagerControlFromPage(EmptyPage); return; } int SelectedPageIndex = PageIndex; CurrentEvent.PageList.RemoveAt(PageIndex); PagesManager.TabPages.RemoveAt(PagesManager.TabPages.Count - 1); int Counter = 0; foreach (TabPage CurrentTabPage in PagesManager.TabPages) { CurrentTabPage.Text = Convert.ToString(Counter + 1); Counter = Counter + 1; } if (Counter < SelectedPageIndex) { SelectedPageIndex = Counter; } Counter = 0; foreach (VO_Page CurrentPage in CurrentEvent.PageList) { CurrentPage.PageNumber = Counter; Counter = Counter + 1; } PageIndex = SelectedPageIndex; PagesManager.SelectedIndex = PageIndex; UpdateEventManagerControlFromPage(CurrentEvent.PageList[PageIndex]); foreach (Control CurrentControl in CurrentControlList) { PagesManager.TabPages[PagesManager.SelectedIndex].Controls.Add(CurrentControl); } }
/// <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> /// Création d'une Nouvelle page dans l'EventManager /// </summary> private void EventManager_NewPage(object sender, EventArgs e) { // Instanciation d'une nouvelle Page et d'un VO_Page correspondant, puis sélection de la page int TabPageIndex = PagesManager.TabPages.Count; VO_Page NewPage = null; if (CurrentEvent.PageList[0].PageEventType == Enums.EventType.Character) { NewPage = ObjectsFactory.CreatePage(CurrentEvent.PageList[0].PageEventType, CurrentEvent.PageList.Count + 1, ((VO_StageCharacter)CurrentStageObject).CharacterId); } else { NewPage = ObjectsFactory.CreatePage(CurrentEvent.PageList[0].PageEventType, CurrentEvent.PageList.Count + 1, Guid.Empty); } CurrentEvent.PageList.Add(NewPage); TabPage NewTabPage = new TabPage(Convert.ToString(TabPageIndex + 1)); foreach (Control CurrentControl in CurrentControlList) { NewTabPage.Controls.Add(CurrentControl); } PagesManager.TabPages.Add(NewTabPage); PagesManager.SelectedIndex = TabPageIndex; PageIndex = TabPageIndex; //Selection de la valeur par défaut la nouvelle page dans la ComboBox des Types d'execution de Trigger if (CurrentStageObject is VO_StageAnimation) { AnimationConditions.LoadControls(NewPage, ((VO_StageAnimation)CurrentStageObject).AnimationId); } else if (CurrentStageObject is VO_StageHotSpot) { EventConditions.LoadControls(NewPage); } else if (CurrentStageObject is VO_StageCharacter) { CharacterConditions.LoadControls(NewPage, ((VO_StageCharacter)CurrentStageObject).CharacterId); } }
/// <summary> /// Charge les contrôles /// </summary> public void LoadControls(VO_Page currentPage, Guid animationId) { EventManager CurrentParent = ParentForm as EventManager; //Désactiver les events TriggerExecutionTypeCombo.SelectedValueChanged -= new EventHandler(EventManager_TriggerExecutionTypeChanged); ddpSpeed.SelectedValueChanged += new EventHandler(ddpSpeed_SelectedValueChanged); chkStartFrozen.CheckedChanged -= new EventHandler(chkStartFrozen_CheckedChanged); _AnimationId = animationId; this.TriggerExecutionTypeCombo.SelectedValue = currentPage.TriggerExecution; this.ddpSpeed.SelectedValue = currentPage.AnimationFrequency; this.chkStartFrozen.Checked = currentPage.AnimationFrozenAtStart; LoadAnimation(); //Activer les events TriggerExecutionTypeCombo.SelectedValueChanged += new EventHandler(EventManager_TriggerExecutionTypeChanged); ddpSpeed.SelectedValueChanged += new EventHandler(ddpSpeed_SelectedValueChanged); chkStartFrozen.CheckedChanged += new EventHandler(chkStartFrozen_CheckedChanged); }
/// <summary> /// Teste si un event est executable /// </summary> /// <param name="_event"></param> /// <returns></returns> public bool IsExecutablePage(VO_Page page) { //Si l'action ne correspond pas, on passe à la page suivante if (page.ActionActivated) { VO_Action action = GameCore.Instance.GetActionById(page.ActionId); if (action.Id == Guid.Empty || action.Id != ActionManager.CurrentAction.Id) { return(false); } } //Si l'item ne correspond pas, on passe à la page suivante if (page.ItemActivated) { VO_Item item = GameCore.Instance.GetItemById(page.ItemId); if (item.Id == Guid.Empty || item.Id != ActionManager.ItemInUse || !ActionManager.CurrentActionIsUse()) { return(false); } } return(true); }
/// <summary> /// Charge les contrôles /// </summary> public void LoadControls(VO_Page currentPage) { ddpTrigger.SelectedValueChanged -= new EventHandler(EventManager_TriggerEventConditionTypeChanged); this.ddpTrigger.SelectedValue = currentPage.TriggerCondition; ddpTrigger.SelectedValueChanged += new EventHandler(EventManager_TriggerEventConditionTypeChanged); }
/// <summary> /// Fonction Générique d'EventManager de mise à jour des champs selon la valeur de Page /// </summary> private void UpdateEventManagerControlFromPage(VO_Page CurrentPage) { //Actions chkAction.CheckedChanged -= new EventHandler(EventManager_ActivateAction); chkAction.Checked = CurrentPage.ActionActivated; CheckActionState(); chkAction.CheckedChanged += new EventHandler(EventManager_ActivateAction); ddpAction.SelectedValueChanged -= new EventHandler(EventManager_ActionSelectionChanged); ddpAction.DataSource = GameCore.Instance.GetActions(); ddpAction.DisplayMember = "Title"; ddpAction.ValueMember = "Id"; ddpAction.SelectedValue = CurrentPage.ActionId; ddpAction.SelectedValueChanged += new EventHandler(EventManager_ActionSelectionChanged); //Boutons chkTrigger.CheckedChanged -= new EventHandler(EventManager_ActivateTrigger); chkTrigger.Checked = CurrentPage.TriggerActivated; CheckTriggerState(); chkTrigger.CheckedChanged += new EventHandler(EventManager_ActivateTrigger); triggerButton1.ValueChanged -= new EventHandler(EventManager_TriggerSelectedChanged); triggerButton1.TriggerGuid = CurrentPage.TriggerId; triggerButton1.ValueChanged += new EventHandler(EventManager_TriggerSelectedChanged); //Variables chkVariable.CheckedChanged -= new EventHandler(EventManager_ActivateVariable); chkVariable.Checked = CurrentPage.VariableActivated; CheckVariableState(); chkVariable.CheckedChanged += new EventHandler(EventManager_ActivateVariable); txtVariableValue.TextChanged -= new EventHandler(EventManager_VariableValue_Changed); txtVariableValue.Text = Convert.ToString(CurrentPage.VariableValue); txtVariableValue.TextChanged += new EventHandler(EventManager_VariableValue_Changed); variableButton1.ValueChanged -= new EventHandler(EventManager_VariableSelectedChanged); variableButton1.VariableGuid = CurrentPage.VariableId; variableButton1.ValueChanged += new EventHandler(EventManager_VariableSelectedChanged); //Charaters chkCharacter.CheckedChanged -= new EventHandler(EventManager_ActivateCharacter); chkCharacter.Checked = CurrentPage.CharacterActivated; CheckCharacterState(); chkCharacter.CheckedChanged += new EventHandler(EventManager_ActivateCharacter); characterButton1.ValueChanged -= new EventHandler(EventManager_CharacterSelectedChanged); characterButton1.CharacterGuid = CurrentPage.CharacterId; characterButton1.ValueChanged += new EventHandler(EventManager_CharacterSelectedChanged); //Items chkItem.CheckedChanged -= new EventHandler(EventManager_ActivateItem); chkItem.Checked = CurrentPage.ItemActivated; CheckItemState(); chkItem.CheckedChanged += new EventHandler(EventManager_ActivateItem); itemButton1.ValueChanged -= new EventHandler(EventManager_ItemSelectedChanged); itemButton1.ItemGuid = CurrentPage.ItemId; itemButton1.ValueChanged += new EventHandler(EventManager_ItemSelectedChanged); //Sous controles if (CurrentStageObject is VO_StageAnimation) { AnimationConditions.LoadControls(CurrentPage, ((VO_StageAnimation)CurrentStageObject).AnimationId); } else if (CurrentStageObject is VO_StageHotSpot) { EventConditions.LoadControls(CurrentPage); } else if (CurrentStageObject is VO_StageCharacter) { CharacterConditions.LoadControls(CurrentPage, ((VO_StageCharacter)CurrentStageObject).CharacterId); } ScriptManager.LoadScript(CurrentPage.Script); }
/// <summary> /// Charge les contrôles /// </summary> public void LoadControls(VO_Page currentPage, Guid characterId) { if (currentPage.PageEventType == Enums.EventType.Character) { _CharacterId = characterId; //Désactivation des events ddpDirection.SelectedValueChanged -= new EventHandler(ddpDirection_SelectedValueChanged); ddpSpeed.SelectedValueChanged -= new EventHandler(ddpSpeed_SelectedValueChanged); ddpFrequency.SelectedValueChanged -= new EventHandler(ddpFrequency_SelectedValueChanged); ddpStandingType.SelectedValueChanged -= new EventHandler(ddpStandingType_SelectedValueChanged); ddpWalkingType.SelectedValueChanged -= new EventHandler(ddpWalkingType_SelectedValueChanged); ddpTalkingType.SelectedValueChanged -= new EventHandler(ddpTalkingType_SelectedValueChanged); List <VO_ListItem> list = FormsTools.GetMovementsList(); ddpDirection.DataSource = list; ddpDirection.DisplayMember = "Title"; ddpDirection.ValueMember = "Id"; ddpDirection.SelectedValue = (int)currentPage.CharacterDirection; ddpSpeed.SelectedValue = currentPage.CharacterSpeed; ddpFrequency.SelectedValue = currentPage.CharacterAnimationFrequency; ddpStandingType.DataSource = GameCore.Instance.GetCharAnimations(characterId); ddpStandingType.DisplayMember = "Title"; ddpStandingType.ValueMember = "Id"; if (currentPage.CharacterStandingType == Guid.Empty) { ddpStandingType.SelectedIndex = 0; } else { ddpStandingType.SelectedValue = currentPage.CharacterStandingType; } ddpWalkingType.DataSource = GameCore.Instance.GetCharAnimations(characterId); ddpWalkingType.DisplayMember = "Title"; ddpWalkingType.ValueMember = "Id"; if (currentPage.CharacterWalkingType == Guid.Empty) { ddpWalkingType.SelectedIndex = 0; } else { ddpWalkingType.SelectedValue = currentPage.CharacterWalkingType; } ddpTalkingType.DataSource = GameCore.Instance.GetCharAnimations(characterId); ddpTalkingType.DisplayMember = "Title"; ddpTalkingType.ValueMember = "Id"; if (currentPage.CharacterTalkingType == Guid.Empty) { ddpTalkingType.SelectedIndex = 0; } else { ddpTalkingType.SelectedValue = currentPage.CharacterTalkingType; } LoadAnimation(); //Réactivation des events ddpDirection.SelectedValueChanged += new EventHandler(ddpDirection_SelectedValueChanged); ddpSpeed.SelectedValueChanged += new EventHandler(ddpSpeed_SelectedValueChanged); ddpFrequency.SelectedValueChanged += new EventHandler(ddpFrequency_SelectedValueChanged); ddpStandingType.SelectedValueChanged += new EventHandler(ddpStandingType_SelectedValueChanged); ddpWalkingType.SelectedValueChanged += new EventHandler(ddpWalkingType_SelectedValueChanged); ddpTalkingType.SelectedValueChanged += new EventHandler(ddpTalkingType_SelectedValueChanged); } }