Fixed crafting menu multi tiled objects not displaying.

This commit is contained in:
JoshuaNavarro 2019-09-11 22:48:38 -07:00
parent a2b66afb65
commit 048dfc9dc0
6 changed files with 61 additions and 41 deletions

View File

@ -6,6 +6,7 @@ using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.Xna.Framework; using Microsoft.Xna.Framework;
using Revitalize.Framework.Menus; using Revitalize.Framework.Menus;
using Revitalize.Framework.Objects;
using Revitalize.Framework.Objects.Machines; using Revitalize.Framework.Objects.Machines;
using Revitalize.Framework.Utilities; using Revitalize.Framework.Utilities;
using StardewValley; using StardewValley;
@ -257,6 +258,43 @@ namespace Revitalize.Framework.Crafting
} }
InitializeRecipeBooks(); InitializeRecipeBooks();
for(int bookIndex=0;bookIndex<CraftingRecipesByGroup.Count;bookIndex++)
{
KeyValuePair<string, CraftingRecipeBook> pair = CraftingRecipesByGroup.ElementAt(bookIndex);
for(int recipeIndex=0;recipeIndex<pair.Value.craftingRecipes.Count;recipeIndex++)
{
KeyValuePair<string, UnlockableCraftingRecipe> recipe = pair.Value.craftingRecipes.ElementAt(recipeIndex);
for (int i = 0; i < recipe.Value.recipe.ingredients.Count; i++)
{
if (recipe.Value.recipe.ingredients[i].item is MultiTiledObject)
{
ModCore.log("Found a multi tiled object as an output!");
//ModCore.log("Found a multi tiled object!");
Type t = recipe.Value.recipe.ingredients[i].item.GetType();
string id = (recipe.Value.recipe.ingredients[i].item as MultiTiledObject).info.id;
recipe.Value.recipe.ingredients[i].item = ModCore.ObjectManager.getItemByIDAndType(id, t);
}
}
for (int i = 0; i < recipe.Value.recipe.outputs.Count; i++)
{
if (recipe.Value.recipe.outputs[i].item is MultiTiledObject)
{
ModCore.log("Found a multi tiled object as an output!");
//ModCore.log("Found a multi tiled object!");
Type t = recipe.Value.recipe.outputs[i].item.GetType();
string id = (recipe.Value.recipe.outputs[i].item as MultiTiledObject).info.id;
recipe.Value.recipe.outputs[i].item = ModCore.ObjectManager.getItemByIDAndType(id, t);
ModCore.log("Components are: "+(recipe.Value.recipe.outputs[i].item as MultiTiledObject).objects.Count);
}
}
}
}
} }
private static void InitializeRecipeBooks() private static void InitializeRecipeBooks()

View File

@ -19,15 +19,10 @@ namespace Revitalize.Framework.Crafting
/// </summary> /// </summary>
public List<CraftingRecipeComponent> outputs; public List<CraftingRecipeComponent> outputs;
/// <summary>
/// The item that is displayed for the crafting recipe.
/// </summary>
private Item displayItem;
public Item DisplayItem public Item DisplayItem
{ {
get => this.displayItem ?? this.outputs.ElementAt(0).item; get => this.outputs.ElementAt(0).item;
set => this.displayItem = value;
} }
/// <summary> /// <summary>
@ -57,7 +52,6 @@ namespace Revitalize.Framework.Crafting
public Recipe(List<CraftingRecipeComponent> inputs, CraftingRecipeComponent output, StatCost StatCost = null,int TimeToCraft=0) public Recipe(List<CraftingRecipeComponent> inputs, CraftingRecipeComponent output, StatCost StatCost = null,int TimeToCraft=0)
{ {
this.ingredients = inputs; this.ingredients = inputs;
this.DisplayItem = output.item;
this.outputDescription = output.item.getDescription(); this.outputDescription = output.item.getDescription();
this.outputName = output.item.DisplayName; this.outputName = output.item.DisplayName;
this.outputs = new List<CraftingRecipeComponent>() this.outputs = new List<CraftingRecipeComponent>()
@ -74,7 +68,6 @@ namespace Revitalize.Framework.Crafting
this.outputs = outputs; this.outputs = outputs;
this.outputName = OutputName; this.outputName = OutputName;
this.outputDescription = OutputDescription; this.outputDescription = OutputDescription;
this.DisplayItem = DisplayItem;
this.statCost = StatCost ?? new StatCost(); this.statCost = StatCost ?? new StatCost();
this.timeToCraft = TimeToCraft; this.timeToCraft = TimeToCraft;
} }

View File

@ -213,7 +213,10 @@ namespace Revitalize.Framework.Objects
{ {
this.updateInfo(); this.updateInfo();
foreach (KeyValuePair<Vector2, StardewValley.Object> pair in this.objects) foreach (KeyValuePair<Vector2, StardewValley.Object> pair in this.objects)
pair.Value.drawInMenu(spriteBatch, location + (pair.Key * 16)+new Vector2(32,32), 1.0f, transparency, layerDepth, drawStackNumber, c, drawShadow); {
//ModCore.log(location + (pair.Key * 16) + new Vector2(32, 32));
pair.Value.drawInMenu(spriteBatch, location + (pair.Key * 16) + new Vector2(32, 32), 1.0f, transparency, layerDepth, drawStackNumber, c, drawShadow);
}
//base.drawInMenu(spriteBatch, location, scaleSize, transparency, layerDepth, drawStackNumber, c, drawShadow); //base.drawInMenu(spriteBatch, location, scaleSize, transparency, layerDepth, drawStackNumber, c, drawShadow);
} }
@ -366,7 +369,7 @@ namespace Revitalize.Framework.Objects
Dictionary<Vector2, MultiTiledComponent> objs = new Dictionary<Vector2, MultiTiledComponent>(); Dictionary<Vector2, MultiTiledComponent> objs = new Dictionary<Vector2, MultiTiledComponent>();
foreach (var pair in this.objects) foreach (var pair in this.objects)
{ {
objs.Add(pair.Key, (MultiTiledComponent)pair.Value); objs.Add(pair.Key, (MultiTiledComponent)pair.Value.getOne());
} }
return new MultiTiledObject(this.data, this.info.Copy(), this.TileLocation, objs); return new MultiTiledObject(this.data, this.info.Copy(), this.TileLocation, objs);
} }

View File

@ -356,13 +356,13 @@ namespace Revitalize.Framework.Objects
/// <param name="Key"></param> /// <param name="Key"></param>
/// <param name="Stack"></param> /// <param name="Stack"></param>
/// <returns></returns> /// <returns></returns>
public CustomObject GetItem(string Key,int Stack=1) public Item GetItem(string Key,int Stack=1)
{ {
if (this.ItemsByName.ContainsKey(Key)) if (this.ItemsByName.ContainsKey(Key))
{ {
Item I= this.ItemsByName[Key].getOne(); Item I= this.ItemsByName[Key].getOne();
I.Stack = Stack; I.Stack = Stack;
return (CustomObject)I; return I;
} }
else else
{ {

View File

@ -330,20 +330,16 @@ namespace Revitalize
*/ */
if (e.Button == SButton.U) if (e.Button == SButton.U)
{ {
MultiTiledObject test =(MultiTiledObject) ObjectManager.GetItem("SandBox"); CraftingMenuV1 craft = new CraftingMenuV1(100, 100, 600, 800, Color.White, Game1.player.Items);
test.EnergyManager.maxEnergy = 100; craft.addInCraftingPageTab("Default", new AnimatedButton(new StardustCore.Animations.AnimatedSprite("Default Tab", new Vector2(100 + 48, 100 + (24 * 4)), new AnimationManager(TextureManager.GetExtendedTexture(ModCore.Manifest, "Menus", "MenuTabHorizontal"), new Animation(0, 0, 24, 24)), Color.White), new Rectangle(0, 0, 24, 24), 2f));
test.EnergyManager.produceEnergy(100); craft.addInCraftingRecipe(new Framework.Menus.MenuComponents.CraftingRecipeButton(new Recipe(new List<CraftingRecipeComponent>()
MachineSummaryMenu m= new Framework.Menus.Machines.MachineSummaryMenu((Game1.viewport.Width/2)-400, 48, 800, 600,Color.White,test); {
InventoryTransferMenu transferMenu = new InventoryTransferMenu(100, 150, 500, 600, test.info.inventory.items, 36); //Inputs here
MachineMenu machineMenu = new MachineMenu((Game1.viewport.Width / 2) - 400, 0, 800, 600); new CraftingRecipeComponent(ModCore.ObjectManager.GetItem("SteelIngot"),20)
CraftingMenuV1 craftingMenu= new Framework.Menus.CraftingMenuV1(100, 100, 400, 700, Color.White, Game1.player.Items); }, new CraftingRecipeComponent(ModCore.ObjectManager.GetItem("Anvil"), 1)),null,new Vector2(),new Rectangle(0,0,32,32),1f,false,Color.White),"Default");
craft.currentTab = "Default";
machineMenu.addInMenuTab("Summary",new AnimatedButton(new StardustCore.Animations.AnimatedSprite("SummaryTab",new Vector2(),new AnimationManager(TextureManager.GetExtendedTexture(ModCore.Manifest,"Menus","MenuTab"),new Animation(0,0,24,24)),Color.White),new Rectangle(0,0,24,24),2f),m,true); craft.sortRecipes();
machineMenu.addInMenuTab("Inventory", new AnimatedButton(new StardustCore.Animations.AnimatedSprite("Inventory Tab", new Vector2(), new AnimationManager(TextureManager.GetExtendedTexture(ModCore.Manifest, "Menus", "MenuTab"), new Animation(0, 0, 24, 24)), Color.White), new Rectangle(0, 0, 24, 24), 2f), transferMenu, true); Game1.activeClickableMenu = craft;
machineMenu.addInMenuTab("Crafting", new AnimatedButton(new StardustCore.Animations.AnimatedSprite("Crafting Tab", new Vector2(), new AnimationManager(TextureManager.GetExtendedTexture(ModCore.Manifest, "Menus", "MenuTab"), new Animation(0, 0, 24, 24)), Color.White), new Rectangle(0, 0, 24, 24), 2f), craftingMenu, true);
if (Game1.activeClickableMenu == null) Game1.activeClickableMenu = machineMenu;
} }
/* /*
if (e.Button == SButton.Y) if (e.Button == SButton.Y)

View File

@ -108,7 +108,7 @@ namespace StardustCore.UIUtilities.MenuComponents.ComponentsV2.Buttons
{ {
//this.background.draw(b); //this.background.draw(b);
//if(this.item!=null)this.item.drawInMenu(b, this.position, this.scale); //if(this.item!=null)this.item.drawInMenu(b, this.position, this.scale);
this.draw(b, 1f, Alpha, false); this.draw(b, 0f, Alpha, false);
} }
@ -122,11 +122,10 @@ namespace StardustCore.UIUtilities.MenuComponents.ComponentsV2.Buttons
public void draw(SpriteBatch b,float Depth, float Alpha,bool DrawShadow) public void draw(SpriteBatch b,float Depth, float Alpha,bool DrawShadow)
{ {
if(this.background!=null)this.background.draw(b, this.scale, Depth,Alpha); if(this.background!=null)this.background.draw(b, this.scale, Depth,Alpha);
if (this.item == null) if (this.item != null)
{ {
ModCore.log("ITEM IS NULL!!!!"); this.item.drawInMenu(b, this.position, 1f, Alpha, Depth, this.drawStackNumber, this.drawColor, DrawShadow);
} }
if(this.item!=null)this.item.drawInMenu(b, this.position, 1f,Alpha,Depth,this.drawStackNumber,this.drawColor,DrawShadow);
} }
/// <summary> /// <summary>
@ -140,10 +139,9 @@ namespace StardustCore.UIUtilities.MenuComponents.ComponentsV2.Buttons
public void draw(SpriteBatch b,Vector2 Position ,float Depth, float Alpha, bool DrawShadow) public void draw(SpriteBatch b,Vector2 Position ,float Depth, float Alpha, bool DrawShadow)
{ {
if (this.background != null) this.background.draw(b,Position,this.scale, Depth, Alpha); if (this.background != null) this.background.draw(b,Position,this.scale, Depth, Alpha);
if (this.item != null) this.item.drawInMenu(b, Position, 1f, Alpha, Depth, this.drawStackNumber, this.drawColor, DrawShadow); if (this.item != null)
if (this.item == null)
{ {
ModCore.log("ITEM IS NULL!!!!"); this.item.drawInMenu(b, Position, 1f, Alpha, Depth, this.drawStackNumber, this.drawColor, DrawShadow);
} }
} }
@ -151,10 +149,6 @@ namespace StardustCore.UIUtilities.MenuComponents.ComponentsV2.Buttons
{ {
this.background.draw(b, this.scale, Depth, Alpha); this.background.draw(b, this.scale, Depth, Alpha);
if (this.item != null) this.item.drawInMenu(b, this.position, ItemScale, Alpha, Depth, this.drawStackNumber, this.drawColor, DrawShadow); if (this.item != null) this.item.drawInMenu(b, this.position, ItemScale, Alpha, Depth, this.drawStackNumber, this.drawColor, DrawShadow);
if (this.item == null)
{
ModCore.log("ITEM IS NULL!!!!");
}
} }
/// <summary> /// <summary>
@ -167,10 +161,6 @@ namespace StardustCore.UIUtilities.MenuComponents.ComponentsV2.Buttons
/// <param name="DrawShadow">Should the shadow be drawn for the item?</param> /// <param name="DrawShadow">Should the shadow be drawn for the item?</param>
public void drawJustItem(SpriteBatch b,float Scale,float Depth, float Alpha, bool DrawShadow) public void drawJustItem(SpriteBatch b,float Scale,float Depth, float Alpha, bool DrawShadow)
{ {
if (this.item == null)
{
ModCore.log("ITEM IS NULL!!!!");
}
if (this.item != null) this.item.drawInMenu(b, this.position, Scale, Alpha, Depth, this.drawStackNumber, this.drawColor, DrawShadow); if (this.item != null) this.item.drawInMenu(b, this.position, Scale, Alpha, Depth, this.drawStackNumber, this.drawColor, DrawShadow);
} }