/// <summary>Load contain data for the given item.</summary>
        /// <param name="data">The mod data to read.</param>
        /// <param name="discriminator">A key added to the mod data keys to distinguish different containers in the same mod data.</param>
        public ContainerData(ModDataDictionary data, string?discriminator = null)
        {
            string prefix = ContainerData.GetKeyPrefix(discriminator);

            this.IsIgnored                     = data.ReadField($"{prefix}/{nameof(ContainerData.IsIgnored)}", bool.Parse);
            this.Category                      = data.ReadField($"{prefix}/{nameof(ContainerData.Category)}");
            this.Name                          = data.ReadField($"{prefix}/{nameof(ContainerData.Name)}");
            this.Order                         = data.ReadField($"{prefix}/{nameof(ContainerData.Order)}", int.Parse);
            this.AutomateStoreItems            = data.ReadField(AutomateContainerHelper.StoreItemsKey, p => (AutomateContainerPreference)Enum.Parse(typeof(AutomateContainerPreference), p), defaultValue: AutomateContainerPreference.Allow);
            this.AutomateTakeItems             = data.ReadField(AutomateContainerHelper.TakeItemsKey, p => (AutomateContainerPreference)Enum.Parse(typeof(AutomateContainerPreference), p), defaultValue: AutomateContainerPreference.Allow);
            this.AutomatePreventRemovingStacks = data.ReadField(AutomateContainerHelper.PreventRemovingStacksKey, bool.Parse);
        }
Beispiel #2
0
        /// <summary>Load contain data for the given item.</summary>
        /// <param name="data">The mod data to read.</param>
        /// <param name="defaultInternalName">The game's default name for the container, if any.</param>
        /// <param name="discriminator">A key added to the mod data keys to distinguish different containers in the same mod data.</param>
        public static ContainerData FromModData(ModDataDictionary data, string defaultInternalName, string discriminator = null)
        {
            string prefix = ContainerData.GetKeyPrefix(discriminator);

            return(new ContainerData(defaultInternalName)
            {
                IsIgnored = data.ReadField($"{prefix}/{nameof(ContainerData.IsIgnored)}", bool.Parse),
                Category = data.ReadField($"{prefix}/{nameof(ContainerData.Category)}"),
                Name = data.ReadField($"{prefix}/{nameof(ContainerData.Name)}"),
                Order = data.ReadField($"{prefix}/{nameof(ContainerData.Order)}", int.Parse),
                AutomateStoreItems = data.ReadField(AutomateContainerHelper.StoreItemsKey, p => (AutomateContainerPreference)Enum.Parse(typeof(AutomateContainerPreference), p), defaultValue: AutomateContainerPreference.Allow),
                AutomateTakeItems = data.ReadField(AutomateContainerHelper.TakeItemsKey, p => (AutomateContainerPreference)Enum.Parse(typeof(AutomateContainerPreference), p), defaultValue: AutomateContainerPreference.Allow)
            });
        }