public static void MoveCoins(Item[] pInv, Item[] cInv)
{
int[] numArray1 = new int[4];
List<int> list1 = new List<int>();
List<int> list2 = new List<int>();
bool flag = false;
int[] numArray2 = new int[40];
for (int index = 0; index < cInv.Length; ++index)
{
numArray2[index] = -1;
if (cInv[index].stack < 1 || cInv[index].itemId < 1)
{
list2.Add(index);
cInv[index] = new Item();
}
if (cInv[index] != null && cInv[index].stack > 0)
{
int num = 0;
if (cInv[index].itemId == 71)
num = 1;
if (cInv[index].itemId == 72)
num = 2;
if (cInv[index].itemId == 73)
num = 3;
if (cInv[index].itemId == 74)
num = 4;
numArray2[index] = num - 1;
if (num > 0)
{
numArray1[num - 1] += cInv[index].stack;
list2.Add(index);
cInv[index] = new Item();
flag = true;
}
}
}
if (!flag)
return;
Main.PlaySound(7, -1, -1, 1);
for (int index = 0; index < pInv.Length; ++index)
{
if (index != 58 && pInv[index] != null && pInv[index].stack > 0)
{
int num = 0;
if (pInv[index].itemId == 71)
num = 1;
if (pInv[index].itemId == 72)
num = 2;
if (pInv[index].itemId == 73)
num = 3;
if (pInv[index].itemId == 74)
num = 4;
if (num > 0)
{
numArray1[num - 1] += pInv[index].stack;
list1.Add(index);
pInv[index] = new Item();
}
}
}
for (int index = 0; index < 3; ++index)
{
while (numArray1[index] >= 100)
{
numArray1[index] -= 100;
++numArray1[index + 1];
}
}
for (int index1 = 0; index1 < 40; ++index1)
{
if (numArray2[index1] >= 0 && cInv[index1].itemId == 0)
{
int index2 = index1;
int index3 = numArray2[index1];
if (numArray1[index3] > 0)
{
cInv[index2].SetDefaults(71 + index3, false);
cInv[index2].stack = numArray1[index3];
if (cInv[index2].stack > cInv[index2].maxStack)
cInv[index2].stack = cInv[index2].maxStack;
numArray1[index3] -= cInv[index2].stack;
numArray2[index1] = -1;
}
if (Main.netMode == 1 && Main.player[Main.myPlayer].chest > -1)
NetMessage.SendData(32, -1, -1, "", Main.player[Main.myPlayer].chest, (float)index2, 0.0f, 0.0f, 0, 0, 0);
list2.Remove(index2);
}
}
for (int index1 = 0; index1 < 40; ++index1)
{
if (numArray2[index1] >= 0 && cInv[index1].itemId == 0)
{
int index2 = index1;
int index3 = 3;
while (index3 >= 0)
{
if (numArray1[index3] > 0)
{
cInv[index2].SetDefaults(71 + index3, false);
cInv[index2].stack = numArray1[index3];
if (cInv[index2].stack > cInv[index2].maxStack)
cInv[index2].stack = cInv[index2].maxStack;
numArray1[index3] -= cInv[index2].stack;
numArray2[index1] = -1;
break;
}
if (numArray1[index3] == 0)
--index3;
}
if (Main.netMode == 1 && Main.player[Main.myPlayer].chest > -1)
NetMessage.SendData(32, -1, -1, "", Main.player[Main.myPlayer].chest, (float)index2, 0.0f, 0.0f, 0, 0, 0);
list2.Remove(index2);
}
}
while (list2.Count > 0)
{
int index1 = list2[0];
int index2 = 3;
while (index2 >= 0)
{
if (numArray1[index2] > 0)
{
cInv[index1].SetDefaults(71 + index2, false);
cInv[index1].stack = numArray1[index2];
if (cInv[index1].stack > cInv[index1].maxStack)
cInv[index1].stack = cInv[index1].maxStack;
numArray1[index2] -= cInv[index1].stack;
break;
}
if (numArray1[index2] == 0)
--index2;
}
if (Main.netMode == 1 && Main.player[Main.myPlayer].chest > -1)
NetMessage.SendData(32, -1, -1, "", Main.player[Main.myPlayer].chest, (float)list2[0], 0.0f, 0.0f, 0, 0, 0);
list2.RemoveAt(0);
}
int index4 = 3;
while (index4 >= 0 && list1.Count > 0)
{
int index1 = list1[0];
if (numArray1[index4] > 0)
{
pInv[index1].SetDefaults(71 + index4, false);
pInv[index1].stack = numArray1[index4];
if (pInv[index1].stack > pInv[index1].maxStack)
pInv[index1].stack = pInv[index1].maxStack;
numArray1[index4] -= pInv[index1].stack;
}
if (numArray1[index4] == 0)
--index4;
list1.RemoveAt(0);
}
}