/// <summary> /// Chargement des items /// </summary> /// <param name="item1"></param> /// <param name="item2"></param> private void LoadItem(Guid item1, Guid item2) { Cursor.Current = Cursors.WaitCursor; //Code de chargement if (item1 != new Guid()) { CurrentItem1 = GameCore.Instance.GetItemById(item1); } if (item2 != new Guid()) { CurrentItem2 = GameCore.Instance.GetItemById(item2); } if (CurrentItem1.Id != new Guid() && CurrentItem2.Id != new Guid() && CurrentItem1.Id != CurrentItem2.Id) { //Afficher les groupes grpCommands.Visible = true; //Récupération des données du script ou création si nécessaire. VO_Script script = null; VO_ItemInteraction itemInteraction = CurrentItem1.ItemInteraction.Find(p => p.AssociatedItem == CurrentItem2.Id); if (itemInteraction == null) { script = ObjectsFactory.CreateScript(true, Enums.ScriptType.ItemEvents); VO_ItemInteraction itemInteraction1 = new VO_ItemInteraction(); itemInteraction1.AssociatedItem = CurrentItem2.Id; itemInteraction1.Script = script.Id; CurrentItem1.ItemInteraction.Add(itemInteraction1); VO_ItemInteraction itemInteraction2 = new VO_ItemInteraction(); itemInteraction2.AssociatedItem = CurrentItem1.Id; itemInteraction2.Script = script.Id; CurrentItem2.ItemInteraction.Add(itemInteraction2); } else { script = GameCore.Instance.GetInteractionScriptsById(itemInteraction.Script); if (script == null) { script = ObjectsFactory.CreateScript(true, Enums.ScriptType.ItemEvents); itemInteraction.Script = script.Id; VO_ItemInteraction itemInteraction2 = CurrentItem2.ItemInteraction.Find(p => p.AssociatedItem == CurrentItem1.Id); itemInteraction2.Script = script.Id; } } //Chargement du script _LoadedScript = script; ScriptManager.LoadScript(script); } else { grpCommands.Visible = false; } Cursor.Current = DefaultCursor; }
public void MousePress(MouseState e) { if (e.LeftButton == ButtonState.Pressed) { #region Quitter l'inventaire //Click en dehors de l'inventaire if (!_Service.MouseIsInGrid(new Point(e.X, e.Y), new Point(_MenuData.InventoryCoords.X, _MenuData.InventoryCoords.Y), _MenuData.GridWidth, _MenuData.GridHeight, _MenuData.ItemWidth, _MenuData.ItemHeight)) { Opened = false; return; } //Click sur le bouton de l'inventaire if (GetInventoryButtonEvent(new Point(e.X, e.Y))) { SwitchInventory(); } #endregion VO_InventoryItem item = GetInventoryItemEvent(new Point(e.X, e.Y)); if (ActionManager.ItemAsAction && item != null) { VO_InventoryItem item2 = _Service.GetItemFromGrid(ActionManager.CurrentLinkedItem.Id, _MenuData.GridWidth, _MenuData.GridHeight); if (item.ItemId != Guid.Empty && item2.ItemId != Guid.Empty && item2.ItemId != item.ItemId) { //Interaction d'objets VO_Item itemObj = GameCore.Instance.GetItemById(item.ItemId); VO_ItemInteraction itemInteraction = itemObj.ItemInteraction.Find(p => p.AssociatedItem == item2.ItemId); if (itemInteraction != null) { VO_Script scriptObj = GameCore.Instance.GetInteractionScriptsById(itemInteraction.Script); VO_RunningScript script = new VO_RunningScript(); script.Id = scriptObj.Id; script.Lines = scriptObj.Lines; ScriptManager.CurrentScript = script; } } else { _Service.SwitchItemPlaces(item, item2); _ItemDragDrop = null; ActionManager.UnloadItem(); } } else if (item != null && item.ItemId != Guid.Empty) { if (ActionManager.CurrentActionIsGo()) { _ItemDragDrop = item; ActionManager.SetCurrentItem(item.ItemId); } else { //Script sur action VO_Item itemObj = GameCore.Instance.GetItemById(item.ItemId); VO_ActionOnItemScript actionScript = itemObj.Scripts.Find(p => p.Id == ActionManager.CurrentAction.Id); if (actionScript != null) { VO_RunningScript script = new VO_RunningScript(); script.Id = actionScript.Script.Id; script.Lines = actionScript.Script.Lines; ScriptManager.CurrentScript = script; } } } } else if (e.RightButton == ButtonState.Pressed) { PlayableCharactersManager.CurrentPlayerCharacter.ChangeNextAction(); } }