/// <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); }
/// <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) }); }