MoveCoins() public static method

public static MoveCoins ( Item pInv, Item cInv ) : void
pInv Terraria.Item
cInv Terraria.Item
return void
示例#1
0
        public static void QuickStack()
        {
            Player player = Main.player[Main.myPlayer];

            if (player.chest == -3)
            {
                ChestUI.MoveCoins(player.inventory, player.bank2.item);
            }
            else if (player.chest == -2)
            {
                ChestUI.MoveCoins(player.inventory, player.bank.item);
            }
            Item[] objArray1 = player.inventory;
            Item[] objArray2 = player.bank.item;
            if (player.chest > -1)
            {
                objArray2 = Main.chest[player.chest].item;
            }
            else if (player.chest == -2)
            {
                objArray2 = player.bank.item;
            }
            else if (player.chest == -3)
            {
                objArray2 = player.bank2.item;
            }
            List <int>            list1      = new List <int>();
            List <int>            list2      = new List <int>();
            List <int>            list3      = new List <int>();
            Dictionary <int, int> dictionary = new Dictionary <int, int>();
            List <int>            list4      = new List <int>();

            bool[] flagArray = new bool[objArray2.Length];
            for (int index = 0; index < 40; ++index)
            {
                if (objArray2[index].itemId > 0 && objArray2[index].stack > 0 && objArray2[index].maxStack > 1 && (objArray2[index].itemId < 71 || objArray2[index].itemId > 74))
                {
                    list2.Add(index);
                    list1.Add(objArray2[index].netID);
                }
                if (objArray2[index].itemId == 0 || objArray2[index].stack <= 0)
                {
                    list3.Add(index);
                }
            }
            int num1 = 50;

            if (player.chest <= -2)
            {
                num1 += 4;
            }
            for (int key = 0; key < num1; ++key)
            {
                if (list1.Contains(objArray1[key].netID) && !objArray1[key].favorited)
                {
                    dictionary.Add(key, objArray1[key].netID);
                }
            }
            for (int index1 = 0; index1 < list2.Count; ++index1)
            {
                int index2 = list2[index1];
                int num2   = objArray2[index2].netID;
                foreach (KeyValuePair <int, int> keyValuePair in dictionary)
                {
                    if (keyValuePair.Value == num2 && objArray1[keyValuePair.Key].netID == num2)
                    {
                        int num3 = objArray1[keyValuePair.Key].stack;
                        int num4 = objArray2[index2].maxStack - objArray2[index2].stack;
                        if (num4 != 0)
                        {
                            if (num3 > num4)
                            {
                                num3 = num4;
                            }
                            Main.PlaySound(7, -1, -1, 1);
                            objArray2[index2].stack           += num3;
                            objArray1[keyValuePair.Key].stack -= num3;
                            if (objArray1[keyValuePair.Key].stack == 0)
                            {
                                objArray1[keyValuePair.Key].SetDefaults(0, false);
                            }
                            flagArray[index2] = true;
                        }
                        else
                        {
                            break;
                        }
                    }
                }
            }
            foreach (KeyValuePair <int, int> keyValuePair in dictionary)
            {
                if (objArray1[keyValuePair.Key].stack == 0)
                {
                    list4.Add(keyValuePair.Key);
                }
            }
            foreach (int key in list4)
            {
                dictionary.Remove(key);
            }
            for (int index1 = 0; index1 < list3.Count; ++index1)
            {
                int  index2 = list3[index1];
                bool flag   = true;
                int  num2   = objArray2[index2].netID;
                foreach (KeyValuePair <int, int> keyValuePair in dictionary)
                {
                    if (keyValuePair.Value == num2 && objArray1[keyValuePair.Key].netID == num2 || flag && objArray1[keyValuePair.Key].stack > 0)
                    {
                        Main.PlaySound(7, -1, -1, 1);
                        if (flag)
                        {
                            num2 = keyValuePair.Value;
                            objArray2[index2]           = objArray1[keyValuePair.Key];
                            objArray1[keyValuePair.Key] = new Item();
                        }
                        else
                        {
                            int num3 = objArray1[keyValuePair.Key].stack;
                            int num4 = objArray2[index2].maxStack - objArray2[index2].stack;
                            if (num4 != 0)
                            {
                                if (num3 > num4)
                                {
                                    num3 = num4;
                                }
                                objArray2[index2].stack           += num3;
                                objArray1[keyValuePair.Key].stack -= num3;
                                if (objArray1[keyValuePair.Key].stack == 0)
                                {
                                    objArray1[keyValuePair.Key] = new Item();
                                }
                            }
                            else
                            {
                                break;
                            }
                        }
                        flagArray[index2] = true;
                        flag = false;
                    }
                }
            }
            if (Main.netMode == 1 && player.chest >= 0)
            {
                for (int index = 0; index < flagArray.Length; ++index)
                {
                    NetMessage.SendData(32, -1, -1, "", player.chest, (float)index, 0.0f, 0.0f, 0, 0, 0);
                }
            }
            list1.Clear();
            list2.Clear();
            list3.Clear();
            dictionary.Clear();
            list4.Clear();
        }
示例#2
0
        public static void DepositAll()
        {
            Player player = Main.player[Main.myPlayer];

            if (player.chest > -1)
            {
                ChestUI.MoveCoins(player.inventory, Main.chest[player.chest].item);
            }
            else if (player.chest == -3)
            {
                ChestUI.MoveCoins(player.inventory, player.bank2.item);
            }
            else
            {
                ChestUI.MoveCoins(player.inventory, player.bank.item);
            }
            for (int index1 = 49; index1 >= 10; --index1)
            {
                if (player.inventory[index1].stack > 0 && player.inventory[index1].itemId > 0 && !player.inventory[index1].favorited)
                {
                    if (player.inventory[index1].maxStack > 1)
                    {
                        for (int index2 = 0; index2 < 40; ++index2)
                        {
                            if (player.chest > -1)
                            {
                                Chest chest = Main.chest[player.chest];
                                if (chest.item[index2].stack < chest.item[index2].maxStack && player.inventory[index1].IsTheSameAs(chest.item[index2]))
                                {
                                    int num = player.inventory[index1].stack;
                                    if (player.inventory[index1].stack + chest.item[index2].stack > chest.item[index2].maxStack)
                                    {
                                        num = chest.item[index2].maxStack - chest.item[index2].stack;
                                    }
                                    player.inventory[index1].stack -= num;
                                    chest.item[index2].stack       += num;
                                    Main.PlaySound(7, -1, -1, 1);
                                    if (player.inventory[index1].stack <= 0)
                                    {
                                        player.inventory[index1].SetDefaults(0, false);
                                        if (Main.netMode == 1)
                                        {
                                            NetMessage.SendData(32, -1, -1, "", player.chest, (float)index2, 0.0f, 0.0f, 0, 0, 0);
                                            break;
                                        }
                                        break;
                                    }
                                    if (chest.item[index2].itemId == 0)
                                    {
                                        chest.item[index2] = player.inventory[index1].Clone();
                                        player.inventory[index1].SetDefaults(0, false);
                                    }
                                    if (Main.netMode == 1)
                                    {
                                        NetMessage.SendData(32, -1, -1, "", player.chest, (float)index2, 0.0f, 0.0f, 0, 0, 0);
                                    }
                                }
                            }
                            else if (player.chest == -3)
                            {
                                if (player.bank2.item[index2].stack < player.bank2.item[index2].maxStack && player.inventory[index1].IsTheSameAs(player.bank2.item[index2]))
                                {
                                    int num = player.inventory[index1].stack;
                                    if (player.inventory[index1].stack + player.bank2.item[index2].stack > player.bank2.item[index2].maxStack)
                                    {
                                        num = player.bank2.item[index2].maxStack - player.bank2.item[index2].stack;
                                    }
                                    player.inventory[index1].stack  -= num;
                                    player.bank2.item[index2].stack += num;
                                    Main.PlaySound(7, -1, -1, 1);
                                    if (player.inventory[index1].stack <= 0)
                                    {
                                        player.inventory[index1].SetDefaults(0, false);
                                        break;
                                    }
                                    if (player.bank2.item[index2].itemId == 0)
                                    {
                                        player.bank2.item[index2] = player.inventory[index1].Clone();
                                        player.inventory[index1].SetDefaults(0, false);
                                    }
                                }
                            }
                            else if (player.bank.item[index2].stack < player.bank.item[index2].maxStack && player.inventory[index1].IsTheSameAs(player.bank.item[index2]))
                            {
                                int num = player.inventory[index1].stack;
                                if (player.inventory[index1].stack + player.bank.item[index2].stack > player.bank.item[index2].maxStack)
                                {
                                    num = player.bank.item[index2].maxStack - player.bank.item[index2].stack;
                                }
                                player.inventory[index1].stack -= num;
                                player.bank.item[index2].stack += num;
                                Main.PlaySound(7, -1, -1, 1);
                                if (player.inventory[index1].stack <= 0)
                                {
                                    player.inventory[index1].SetDefaults(0, false);
                                    break;
                                }
                                if (player.bank.item[index2].itemId == 0)
                                {
                                    player.bank.item[index2] = player.inventory[index1].Clone();
                                    player.inventory[index1].SetDefaults(0, false);
                                }
                            }
                        }
                    }
                    if (player.inventory[index1].stack > 0)
                    {
                        if (player.chest > -1)
                        {
                            for (int index2 = 0; index2 < 40; ++index2)
                            {
                                if (Main.chest[player.chest].item[index2].stack == 0)
                                {
                                    Main.PlaySound(7, -1, -1, 1);
                                    Main.chest[player.chest].item[index2] = player.inventory[index1].Clone();
                                    player.inventory[index1].SetDefaults(0, false);
                                    if (Main.netMode == 1)
                                    {
                                        NetMessage.SendData(32, -1, -1, "", player.chest, (float)index2, 0.0f, 0.0f, 0, 0, 0);
                                        break;
                                    }
                                    break;
                                }
                            }
                        }
                        else if (player.chest == -3)
                        {
                            for (int index2 = 0; index2 < 40; ++index2)
                            {
                                if (player.bank2.item[index2].stack == 0)
                                {
                                    Main.PlaySound(7, -1, -1, 1);
                                    player.bank2.item[index2] = player.inventory[index1].Clone();
                                    player.inventory[index1].SetDefaults(0, false);
                                    break;
                                }
                            }
                        }
                        else
                        {
                            for (int index2 = 0; index2 < 40; ++index2)
                            {
                                if (player.bank.item[index2].stack == 0)
                                {
                                    Main.PlaySound(7, -1, -1, 1);
                                    player.bank.item[index2] = player.inventory[index1].Clone();
                                    player.inventory[index1].SetDefaults(0, false);
                                    break;
                                }
                            }
                        }
                    }
                }
            }
        }