Exemplo n.º 1
0
        public TailorItemRecipe ToGameData()
        {
            var tir = new TailorItemRecipe();

            tir.FirstItemTags  = new List <string>(FirstItemTags);
            tir.SecondItemTags = new List <string>(SecondItemTags);

            tir.SpendRightItem = ConsumeSecondItem;

            if (CraftedItems.Count > 1)
            {
                tir.CraftedItemIDs = new List <string>();
                foreach (var entry in CraftedItems)
                {
                    tir.CraftedItemIDs.Add(Mod.instance.ResolveClothingId(CraftedItems[0]).ToString());
                }
            }
            else
            {
                tir.CraftedItemID = Mod.instance.ResolveClothingId(CraftedItems[0]);
            }
            tir.CraftedItemColor = $"{CraftedItemColor.R} {CraftedItemColor.G} {CraftedItemColor.B}";

            return(tir);
        }
        /*********
        ** Public methods
        *********/
        public TailorItemRecipe ToGameData()
        {
            var recipe = new TailorItemRecipe
            {
                FirstItemTags    = new List <string>(this.FirstItemTags),
                SecondItemTags   = new List <string>(this.SecondItemTags),
                SpendRightItem   = this.ConsumeSecondItem,
                CraftedItemColor = $"{this.CraftedItemColor.R} {this.CraftedItemColor.G} {this.CraftedItemColor.B}"
            };

            if (this.CraftedItems.Count > 1)
            {
                recipe.CraftedItemIDs = new List <string>();
                foreach (object entry in this.CraftedItems)
                {
                    recipe.CraftedItemIDs.Add(Mod.instance.ResolveClothingId(this.CraftedItems[0]).ToString()); // TODO: always uses first crafted item?
                }
            }
            else
            {
                recipe.CraftedItemID = Mod.instance.ResolveClothingId(this.CraftedItems[0]);
            }

            return(recipe);
        }
Exemplo n.º 3
0
        public TailorRecipeListTool()
            : base(Game1.uiViewport.Width / 2 - (632 + IClickableMenu.borderWidth * 2) / 2, Game1.uiViewport.Height / 2 - (600 + IClickableMenu.borderWidth * 2) / 2 - 64, 632 + IClickableMenu.borderWidth * 2, 600 + IClickableMenu.borderWidth * 2 + 64)
        {
            TailoringMenu tailoring_menu = new TailoringMenu();

            Game1.player.faceDirection(2);
            Game1.player.FarmerSprite.StopAnimation();
            recipeComponents = new List <ClickableTextureComponent>();
            _recipeLookup    = new Dictionary <string, KeyValuePair <Item, Item> >();
            _recipeMetadata  = new Dictionary <string, string>();
            _recipeColors    = new Dictionary <string, Color>();
            Item cloth = new Object(Vector2.Zero, 428, 1);

            foreach (int id in Game1.objectInformation.Keys)
            {
                Item key = new Object(Vector2.Zero, id, 1);
                if (key.Name.Contains("Seeds") || key.Name.Contains("Floor") || key.Name.Equals("Stone") || key.Name.Contains("Weeds") || key.Name.Equals("Lumber") || key.Name.Contains("Fence") || key.Name.Equals("Gate") || key.Name.Contains("Starter") || key.Name.Contains("Twig") || key.Name.Equals("Secret Note") || key.Name.Contains("Guide") || key.Name.Contains("Path") || key.Name.Contains("Ring") || (int)key.category == -22 || key.Name.Contains("Sapling"))
                {
                    continue;
                }
                Item                      value  = tailoring_menu.CraftItem(cloth, key);
                TailorItemRecipe          recipe = tailoring_menu.GetRecipeForItems(cloth, key);
                KeyValuePair <Item, Item> kvp    = new KeyValuePair <Item, Item>(key, value);
                _recipeLookup[Utility.getStandardDescriptionFromItem(key, 1)] = kvp;
                string metadata  = "";
                Color? dye_color = TailoringMenu.GetDyeColor(key);
                if (dye_color.HasValue)
                {
                    _recipeColors[Utility.getStandardDescriptionFromItem(key, 1)] = dye_color.Value;
                }
                if (recipe != null)
                {
                    metadata = "clothes id: " + recipe.CraftedItemID + " from ";
                    foreach (string context_tag in recipe.SecondItemTags)
                    {
                        metadata = metadata + context_tag + " ";
                    }
                    metadata.Trim();
                }
                _recipeMetadata[Utility.getStandardDescriptionFromItem(key, 1)] = metadata;
                ClickableTextureComponent component = new ClickableTextureComponent(new Rectangle(0, 0, 64, 64), null, default(Rectangle), 1f)
                {
                    myID  = 0,
                    name  = Utility.getStandardDescriptionFromItem(key, 1),
                    label = key.DisplayName
                };
                recipeComponents.Add(component);
            }
            okButton = new ClickableTextureComponent("OK", new Rectangle(xPositionOnScreen + width - IClickableMenu.borderWidth - IClickableMenu.spaceToClearSideBorder - 64, yPositionOnScreen + height - IClickableMenu.borderWidth - IClickableMenu.spaceToClearTopBorder + 16, 64, 64), null, null, Game1.mouseCursors, Game1.getSourceRectForStandardTileSheet(Game1.mouseCursors, 46), 1f)
            {
                upNeighborID    = -99998,
                leftNeighborID  = -99998,
                rightNeighborID = -99998,
                downNeighborID  = -99998
            };
            RepositionElements();
        }
Exemplo n.º 4
0
        /*********
        ** Private methods
        *********/
        /// <summary>The method to call before <see cref="TailoringMenu.GetRecipeForItems"/>.</summary>
        /// <returns>Returns whether to run the original method.</returns>
        private static bool Before_GetRecipeForItems(TailoringMenu __instance, Item left_item, Item right_item, ref TailorItemRecipe __result)
        {
            if (left_item == null || right_item == null)
            {
                return(true);
            }

            for (int i = 0; i < Mod.customTailoringRecipes.Count; ++i)
            {
                var recipe = Mod.customTailoringRecipes[i];

                bool okay = true;

                foreach (string tag in recipe.FirstItemTags)
                {
                    if (!left_item.HasContextTag(tag))
                    {
                        okay = false;
                        break;
                    }
                }
                if (!okay)
                {
                    continue;
                }
                foreach (string tag in recipe.SecondItemTags)
                {
                    if (!right_item.HasContextTag(tag))
                    {
                        okay = false;
                        break;
                    }
                }

                if (okay)
                {
                    __result = new TailorItemRecipe()
                    {
                        FirstItemTags  = recipe.FirstItemTags,
                        SecondItemTags = recipe.SecondItemTags,
                        SpendRightItem = recipe.ConsumeSecondItem,
                        CraftedItemIDs = new List <string>(new[] { "DGA/TailoringRecipe/" + i })
                    };
                    return(false);
                }
            }

            return(true);
        }