/// <summary> /// Insère un item /// </summary> /// <returns></returns> public static VO_Item CreateItem() { //Création de l'objet int i = 1; string title = string.Empty; while (true) { if (GameCore.Instance.Game.Items.Find(p => p.Title == string.Format(GlobalConstants.ITEM_NEW_ITEM, i)) != null) { i++; continue; } else { title = string.Format(GlobalConstants.ITEM_NEW_ITEM, i); break; } } VO_Item newItem = new VO_Item(Guid.NewGuid()) { Title = title, ItemInteraction = new List <VO_ItemInteraction>(), Scripts = new List <VO_ActionOnItemScript>() }; //Insertion de l'objet GameCore.Instance.Game.Items.Add(newItem); return(newItem); }
/// <summary> /// Code ajouté lors de la création d'un item /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void ListItems_ItemToCreate(object sender, EventArgs e) { VO_Item vNewItem = _Service.CreateItem(); ListItems.AddItem(vNewItem.Id, vNewItem.Title); LoadItem(vNewItem.Id); }
/// <summary> /// Code ajouté lors de la création d'une action /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void ListItems_ItemToCreate(object sender, EventArgs e) { VO_Item newItem = _Service.CreateItem(); newItem.Title = GlobalConstants.ITEM_NEW_ITEM; ListItems.AddItem(newItem.Id, newItem.Title); LoadItem(newItem.Id); }
/// <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; }
/// <summary> /// Récupère un item /// </summary> /// <param name="id">ID de l'item</param> /// <returns>VO_Item</returns> public VO_Item GetItemById(Guid id) { VO_Item item = Game.Items.Find(p => p.Id == id); if (item != null) { return(item); } return((VO_Item)ValidationTools.CreateEmptyRessource(new VO_Item())); }
/// <summary> /// La visibilité change /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void DatabaseItemsInteraction_VisibleChanged(object sender, EventArgs e) { grpCommands.Visible = false; CurrentItem1 = new VO_Item(); CurrentItem2 = new VO_Item(); ProvisionList(); LoadItem(ListItems1.ItemSelectedValue, CurrentItem2.Id); LoadItem(CurrentItem1.Id, ListItems2.ItemSelectedValue); }
/// <summary> /// Crée un item /// </summary> /// <returns>VO_Item</returns> public VO_Item CreateItem() { VO_Item item = null; RunServiceTask(delegate { item = _Business.CreateItem(); }, Errors.ERROR_ITEM_STR_CREATE); return(item); }
/// <summary> /// Change d'action /// </summary> /// <param name="action">Id de l'action demandée</param> public static void SetCurrentAction(Guid action) { ItemAsAction = false; int x = (int)_CurrentActionSprite[0].Sprite.Position.X; int y = (int)_CurrentActionSprite[0].Sprite.Position.Y; _CurrentAction = GameCore.Instance.GetActionById(action); _CurrentItem = null; _CurrentActionSprite = _ActionSprites[action]; SetPosition(x, y); }
/// <summary> /// Change d'item /// </summary> /// <param name="item">Id de l'item demandé</param> public static void SetCurrentItem(Guid item) { ItemAsAction = true; ItemInUse = item; int x = (int)_CurrentActionSprite[0].Sprite.Position.X; int y = (int)_CurrentActionSprite[0].Sprite.Position.Y; _CurrentAction = _UseAction; _CurrentItem = GameCore.Instance.GetItemById(item); _CurrentActionSprite = ItemManager.GetFullItem(item); SetPosition(x, y); }
/// <summary> /// Charge un bouton /// </summary> /// <param name="value">Id du bouton</param> public void LoadItem(Guid value) { Cursor.Current = Cursors.WaitCursor; //Code de chargement CurrentItem = GameCore.Instance.GetItemById(value); ////Afficher les groupes //grpInformations.Visible = true; //Bind des infos dans les contrôles Cursor.Current = DefaultCursor; }
/// <summary> /// Survient lorsque le formulaire devient visible /// </summary> public void InitializeDBItems() { CurrentItem = null; ProvisionList(); if (ListItems.DataSource.Count > 0) { Guid firstItem = ListItems.DataSource[0].Id; ListItems.SelectItem(firstItem); LoadItem(firstItem); } else { ListItems_ListIsEmpty(this, new EventArgs()); } }
/// <summary> /// Au chargement du controle /// </summary> /// <param name="e"></param> protected override void OnLoad(EventArgs e) { base.OnLoad(e); CurrentItem = null; ProvisionList(); if (ListItems.DataSource.Count > 0) { Guid firstAction = ListItems.DataSource[0].Id; ListItems.SelectItem(firstAction); LoadItem(firstAction); } else { ListItems_ListIsEmpty(this, new EventArgs()); } }
/// <summary> /// Change d'action pour le go /// </summary> public static void SetCurrentActionToGo() { int x = 0; int y = 0; ItemAsAction = false; if (_CurrentActionSprite != null) { x = (int)_CurrentActionSprite[1].Sprite.Position.X; y = (int)_CurrentActionSprite[1].Sprite.Position.Y; } _CurrentItem = null; _CurrentAction = _GoAction; _CurrentActionSprite = _GoActionSprite; SetPosition(x, y); }
/// <summary> /// Commande RemoveItem /// </summary> /// <param name="command"></param> private static void CommandRemoveItem(string[] command) { if (command.Length != 2) { AddConsoleLine(string.Format("{0}: command format is incorrect", ConsoleConstants.C_REMOVEITEM)); return; } VO_Item item = GameCore.Instance.Game.Items.Find(p => p.Title.ToLower() == command[1]); if (item != null) { PlayableCharactersManager.CurrentPlayerCharacter.RemoveItem(item.Id); AddConsoleLine(string.Format("{0}: removed item {1}", ConsoleConstants.C_REMOVEITEM, item.Title)); } else { AddConsoleLine(string.Format("{0}: item {1} not found", ConsoleConstants.C_REMOVEITEM, command[1])); } }
/// <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> /// Chargement d'un item /// </summary> /// <param name="guid"></param> private void LoadItem(Guid guid) { Cursor.Current = Cursors.WaitCursor; //Code de chargement CurrentItem = GameCore.Instance.GetItemById(guid); //Désactiver les eventhandler txtDescription.TextChanged -= new EventHandler(txtDescription_TextChanged); txtName.LostFocus -= new EventHandler(txtName_TextChanged); //Afficher les groupes grpIcons.Visible = true; grpInformations.Visible = true; grpView.Visible = true; if (CurrentItem.InventoryIcon != new Guid()) { AnimInventory.LoadAnimation(CurrentItem.InventoryIcon); AnimInventory.Start(); } else { AnimInventory.LoadAnimation(new Guid()); } if (CurrentItem.Icon != new Guid()) { AnimIcon.LoadAnimation(CurrentItem.Icon); AnimIcon.Start(); } else { AnimIcon.LoadAnimation(new Guid()); } if (CurrentItem.ActiveIcon != new Guid()) { AnimActiveIcon.LoadAnimation(CurrentItem.ActiveIcon); AnimActiveIcon.Start(); } else { AnimActiveIcon.LoadAnimation(new Guid()); } //Bind des infos dans les contrôles txtDescription.Text = CurrentItem.Description; txtName.Text = CurrentItem.Title; //Bind des actions listActions.Items.Clear(); foreach (VO_Base action in GameCore.Instance.Game.Actions) { if (!((VO_Action)action).GoAction && !((VO_Action)action).UseAction) { listActions.Items.Add(action); } } listActions.DisplayMember = "Title"; listActions.ValueMember = "Id"; if (listActions.Items.Count > 0) { listActions.SelectedIndex = 0; } //Activer les eventhandler txtDescription.TextChanged += new EventHandler(txtDescription_TextChanged); txtName.LostFocus += new EventHandler(txtName_TextChanged); Cursor.Current = DefaultCursor; }
/// <summary> /// Code ajouté lors de la suppression d'une action /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void ListItems_ItemToDelete(object sender, EventArgs e) { CurrentItem.Delete(); CurrentItem = null; }
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(); } }