コード例 #1
0
        /// <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);
        }
コード例 #2
0
        /// <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);
        }
コード例 #3
0
        /// <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);
        }
コード例 #4
0
        /// <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;
        }
コード例 #5
0
        /// <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()));
        }
コード例 #6
0
        /// <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);
        }
コード例 #7
0
        /// <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);
        }
コード例 #8
0
        /// <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);
        }
コード例 #9
0
        /// <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);
        }
コード例 #10
0
        /// <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;
        }
コード例 #11
0
 /// <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());
     }
 }
コード例 #12
0
        /// <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());
            }
        }
コード例 #13
0
        /// <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);
        }
コード例 #14
0
        /// <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]));
            }
        }
コード例 #15
0
 /// <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);
 }
コード例 #16
0
        /// <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;
        }
コード例 #17
0
 /// <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;
 }
コード例 #18
0
        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();
            }
        }