Beispiel #1
0
        /// <summary>
        /// Create and set the output for a giving output config, output object, input object and a given farmer.
        /// If the farmer is not passed, the default one will be used.
        /// </summary>
        /// <param name="outputConfig">The output config</param>
        /// <param name="output">The output to load the name on</param>
        /// <param name="input">The input used</param>
        /// <param name="who">The farmer to be used</param>
        public static void LoadOutputName(OutputConfig outputConfig, Object output, Object input, Farmer who = null)
        {
            string outputName = null;
            bool   inputUsed  = false;

            who = who ?? Game1.player;
            if (outputConfig.PreserveType.HasValue)
            {
                string inputName = input?.Name ?? outputConfig.OutputGenericParentName ?? "";
                if (outputConfig.KeepInputParentIndex)
                {
                    if (input?.preservedParentSheetIndex.Value == -1)
                    {
                        inputName = outputConfig.OutputGenericParentName;
                    }
                    else if (input?.preservedParentSheetIndex.Value > 0 && Game1.objectInformation.ContainsKey(input.preservedParentSheetIndex.Value))
                    {
                        inputName = ObjectUtils.GetObjectParameter(Game1.objectInformation[input.preservedParentSheetIndex.Value], (int)ObjectParameter.Name);
                    }
                }
                else if (input?.preservedParentSheetIndex.Value > 0 && Game1.objectInformation.ContainsKey(input.ParentSheetIndex))
                {
                    inputName = ObjectUtils.GetObjectParameter(Game1.objectInformation[input.ParentSheetIndex], (int)ObjectParameter.Name);
                }
                outputName            = ObjectUtils.GetPreserveName(outputConfig.PreserveType.Value, inputName);
                output.preserve.Value = outputConfig.PreserveType;
                inputUsed             = true;
            }
            else if (output.parentSheetIndex == 340)
            {
                outputName = $"{input?.Name ?? "Wild"} Honey";
                inputUsed  = true;
            }
            else if (outputConfig.OutputName != null)
            {
                string inputName = input?.Name ?? outputConfig.OutputGenericParentName ?? "";

                if (outputConfig.KeepInputParentIndex)
                {
                    if (input?.preservedParentSheetIndex.Value == -1)
                    {
                        inputName = outputConfig.OutputGenericParentName;
                    }
                    else if (input?.preservedParentSheetIndex.Value > 0 && Game1.objectInformation.ContainsKey(input.preservedParentSheetIndex.Value))
                    {
                        inputName = ObjectUtils.GetObjectParameter(Game1.objectInformation[input.preservedParentSheetIndex.Value], (int)ObjectParameter.Name);
                    }
                }
                else if (input?.preservedParentSheetIndex.Value > 0 && Game1.objectInformation.ContainsKey(input.ParentSheetIndex))
                {
                    inputName = ObjectUtils.GetObjectParameter(Game1.objectInformation[input.ParentSheetIndex], (int)ObjectParameter.Name);
                }

                outputName = outputConfig.OutputName
                             .Replace("{inputName}", inputName)
                             .Replace("{outputName}", output.Name)
                             .Replace("{farmerName}", who.Name)
                             .Replace("{farmName}", who.farmName.Value);

                inputUsed = outputConfig.OutputName.Contains("{inputName}");
            }

            if (outputName != null)
            {
                Regex regex = new Regex("[ ]{2,}", RegexOptions.None);
                output.Name = regex.Replace(outputName, " ").Trim();
            }

            if (inputUsed)
            {
                output.preservedParentSheetIndex.Value = input == null ? -1 : outputConfig.KeepInputParentIndex && input.preservedParentSheetIndex.Value != 0 ? input.preservedParentSheetIndex.Value : input.ParentSheetIndex;
            }

            if (outputName != null)
            {
                output.AddCustomName(outputConfig);
                output.AddGenericParentName(outputConfig);
                output.AddContentPackUniqueID(outputConfig);
            }

            //Called just to load the display name.
            string loadingDisplayName = output.DisplayName;
        }