示例#1
0
 public SpInventoryMove(MoveItemArgs args)
 {
     Args = args;
 }
示例#2
0
        public void ReplaceItem(Player player, Storage storage, MoveItemArgs Args, bool showStorage = true)
        {
            lock (storage.ItemsLock)
            {
                switch (Args.IsFromInventory)
                {
                    case 1: // Move item from inventory
                        storage.Items.TryGetValue(Args.FromSlot, out Args.ItemToMove);

                        switch (Args.IsToInventory)
                        {
                            case 1: // to inventory
                                {
                                    Args.ItemToReplace = player.Inventory.GetItem(Args.ToSlot);
                                    storage.Items.Remove(Args.FromSlot);
                                    if (Args.ItemToReplace != null)
                                    {
                                        storage.Items.Remove(Args.ToSlot);
                                        storage.Items.Add(Args.FromSlot, Args.ItemToReplace);
                                    }
                                    storage.Items.Add(Args.ToSlot, Args.ItemToMove);
                                }
                                break;

                            case 0: // to Equiped
                                {
                                    if (!CanDress(player, Args.ItemToMove) && !Global.Global.AdminEngine.IsDev(player))
                                        return;

                                    storage.EquipItems.TryGetValue(Args.ToSlot, out Args.ItemToReplace);
                                    storage.Items.Remove(Args.FromSlot);
                                    storage.EquipItems.Remove(Args.ToSlot);

                                    if (Args.ItemToReplace != null)
                                        storage.Items.Add(Args.FromSlot, Args.ItemToReplace);

                                    storage.EquipItems.Add(Args.ToSlot, Args.ItemToMove);
                                }
                                break;
                        }
                        break;

                    case 0: // Move item from Equiped
                        Args.ItemToMove = player.Inventory.GetEquipItem(Args.FromSlot);

                        switch (Args.IsToInventory)
                        {
                            case 1: // to inventory
                                {
                                    Args.ItemToReplace = player.Inventory.GetItem(Args.ToSlot);

                                    storage.EquipItems.Remove(Args.FromSlot);
                                    if (Args.ItemToReplace != null)
                                    {
                                        storage.Items.Remove(Args.ToSlot);
                                        //storage.EquipItems.Add(Args.FromSlot, Args.ItemToReplace);
                                    }
                                    storage.Items.Add(Args.ToSlot, Args.ItemToMove);
                                }
                                break;

                            case 0: // to Equiped
                                // this may be not use
                                break;
                        }
                        break;
                }

                switch (Args.ItemToMove.State)
                {
                    case ItemState.NEW:
                        Args.ItemToMove.State = ItemState.NEW;
                        break;
                    case ItemState.UPDATE:
                        Args.ItemToMove.State = ItemState.UPDATE;
                        break;
                    case ItemState.DELETE:
                        break;
                }
            }

            new SpInventoryMove(Args).Send(player.Connection);

            CreatureLogic.UpdateCreatureStats(player);

            if (showStorage)
            {
                Global.Global.VisibleService.Send(player, new SpEquipInfo(player));
                ShowPlayerStorage(player, storage.StorageType);
            }
        }