public static void FindRecipes()
{
int num1 = Main.availableRecipe[Main.focusRecipe];
float num2 = Main.availableRecipeY[Main.focusRecipe];
for (int index = 0; index < Recipe.maxRecipes; ++index)
Main.availableRecipe[index] = 0;
Main.numAvailableRecipes = 0;
if (Main.guideItem.itemId > 0 && Main.guideItem.stack > 0 && Main.guideItem.name != "")
{
for (int index1 = 0; index1 < Recipe.maxRecipes && Main.recipe[index1].createItem.itemId != 0; ++index1)
{
for (int index2 = 0; index2 < Recipe.maxRequirements && Main.recipe[index1].requiredItem[index2].itemId != 0; ++index2)
{
if (Main.guideItem.IsTheSameAs(Main.recipe[index1].requiredItem[index2]) || Main.recipe[index1].useWood(Main.guideItem.itemId, Main.recipe[index1].requiredItem[index2].itemId) || (Main.recipe[index1].useSand(Main.guideItem.itemId, Main.recipe[index1].requiredItem[index2].itemId) || Main.recipe[index1].useIronBar(Main.guideItem.itemId, Main.recipe[index1].requiredItem[index2].itemId)) || (Main.recipe[index1].useFragment(Main.guideItem.itemId, Main.recipe[index1].requiredItem[index2].itemId) || Main.recipe[index1].usePressurePlate(Main.guideItem.itemId, Main.recipe[index1].requiredItem[index2].itemId)))
{
Main.availableRecipe[Main.numAvailableRecipes] = index1;
++Main.numAvailableRecipes;
break;
}
}
}
}
else
{
Dictionary<int, int> dictionary1 = new Dictionary<int, int>();
Item[] objArray = Main.player[Main.myPlayer].inventory;
for (int index1 = 0; index1 < 58; ++index1)
{
Item obj = objArray[index1];
if (obj.stack > 0)
{
if (dictionary1.ContainsKey(obj.netID))
{
Dictionary<int, int> dictionary2;
int index2;
(dictionary2 = dictionary1)[index2 = obj.netID] = dictionary2[index2] + obj.stack;
}
else
dictionary1[obj.netID] = obj.stack;
}
}
if (Main.player[Main.myPlayer].chest != -1)
{
if (Main.player[Main.myPlayer].chest > -1)
objArray = Main.chest[Main.player[Main.myPlayer].chest].item;
else if (Main.player[Main.myPlayer].chest == -2)
objArray = Main.player[Main.myPlayer].bank.item;
else if (Main.player[Main.myPlayer].chest == -3)
objArray = Main.player[Main.myPlayer].bank2.item;
for (int index1 = 0; index1 < 40; ++index1)
{
Item obj = objArray[index1];
if (obj.stack > 0)
{
if (dictionary1.ContainsKey(obj.netID))
{
Dictionary<int, int> dictionary2;
int index2;
(dictionary2 = dictionary1)[index2 = obj.netID] = dictionary2[index2] + obj.stack;
}
else
dictionary1[obj.netID] = obj.stack;
}
}
}
for (int index1 = 0; index1 < Recipe.maxRecipes && Main.recipe[index1].createItem.itemId != 0; ++index1)
{
bool flag1 = true;
if (flag1)
{
for (int index2 = 0; index2 < Recipe.maxRequirements && Main.recipe[index1].requiredTile[index2] != -1; ++index2)
{
if (!Main.player[Main.myPlayer].adjTile[Main.recipe[index1].requiredTile[index2]])
{
flag1 = false;
break;
}
}
}
if (flag1)
{
for (int index2 = 0; index2 < Recipe.maxRequirements; ++index2)
{
Item obj = Main.recipe[index1].requiredItem[index2];
if (obj.itemId != 0)
{
int num3 = obj.stack;
bool flag2 = false;
foreach (int invType in dictionary1.Keys)
{
if (Main.recipe[index1].useWood(invType, obj.itemId) || Main.recipe[index1].useSand(invType, obj.itemId) || (Main.recipe[index1].useIronBar(invType, obj.itemId) || Main.recipe[index1].useFragment(invType, obj.itemId)) || Main.recipe[index1].usePressurePlate(invType, obj.itemId))
{
num3 -= dictionary1[invType];
flag2 = true;
}
}
if (!flag2 && dictionary1.ContainsKey(obj.netID))
num3 -= dictionary1[obj.netID];
if (num3 > 0)
{
flag1 = false;
break;
}
}
else
break;
}
}
if (flag1 && (Main.recipe[index1].needWater && (!Main.player[Main.myPlayer].adjWater && !Main.player[Main.myPlayer].adjTile[172]) || Main.recipe[index1].needHoney && Main.recipe[index1].needHoney != Main.player[Main.myPlayer].adjHoney || Main.recipe[index1].needLava && Main.recipe[index1].needLava != Main.player[Main.myPlayer].adjLava))
flag1 = false;
if (flag1)
{
Main.availableRecipe[Main.numAvailableRecipes] = index1;
++Main.numAvailableRecipes;
}
}
}
for (int index = 0; index < Main.numAvailableRecipes; ++index)
{
if (num1 == Main.availableRecipe[index])
{
Main.focusRecipe = index;
break;
}
}
if (Main.focusRecipe >= Main.numAvailableRecipes)
Main.focusRecipe = Main.numAvailableRecipes - 1;
if (Main.focusRecipe < 0)
Main.focusRecipe = 0;
float num4 = Main.availableRecipeY[Main.focusRecipe] - num2;
for (int index = 0; index < Recipe.maxRecipes; ++index)
Main.availableRecipeY[index] -= num4;
}