Be less dumb.

This commit is contained in:
Ottermandias 2024-09-09 16:51:23 +02:00
parent 10ce5da8c9
commit 26371d42f7
4 changed files with 26 additions and 24 deletions

View file

@ -170,14 +170,10 @@ public class ImcModGroup(Mod mod) : IModGroup
var identifier = ImcIdentifier.FromJson(json[nameof(Identifier)] as JObject); var identifier = ImcIdentifier.FromJson(json[nameof(Identifier)] as JObject);
var ret = new ImcModGroup(mod) var ret = new ImcModGroup(mod)
{ {
Name = json[nameof(Name)]?.ToObject<string>() ?? string.Empty,
Description = json[nameof(Description)]?.ToObject<string>() ?? string.Empty,
Image = json[nameof(Image)]?.ToObject<string>() ?? string.Empty,
Priority = json[nameof(Priority)]?.ToObject<ModPriority>() ?? ModPriority.Default,
DefaultEntry = json[nameof(DefaultEntry)]?.ToObject<ImcEntry>() ?? new ImcEntry(), DefaultEntry = json[nameof(DefaultEntry)]?.ToObject<ImcEntry>() ?? new ImcEntry(),
AllVariants = json[nameof(AllVariants)]?.ToObject<bool>() ?? false, AllVariants = json[nameof(AllVariants)]?.ToObject<bool>() ?? false,
}; };
if (ret.Name.Length == 0) if (!ModSaveGroup.ReadJsonBase(json, ret))
return null; return null;
if (!identifier.HasValue || ret.DefaultEntry.MaterialId == 0) if (!identifier.HasValue || ret.DefaultEntry.MaterialId == 0)
@ -216,7 +212,6 @@ public class ImcModGroup(Mod mod) : IModGroup
} }
ret.Identifier = identifier.Value; ret.Identifier = identifier.Value;
ret.DefaultSettings = json[nameof(DefaultSettings)]?.ToObject<Setting>() ?? Setting.Zero;
ret.DefaultSettings = ret.FixSetting(ret.DefaultSettings); ret.DefaultSettings = ret.FixSetting(ret.DefaultSettings);
return ret; return ret;
} }

View file

@ -1,4 +1,7 @@
using Newtonsoft.Json; using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using Penumbra.GameData.Files.ShaderStructs;
using Penumbra.Mods.Settings;
using Penumbra.Mods.SubMods; using Penumbra.Mods.SubMods;
using Penumbra.Services; using Penumbra.Services;
@ -90,6 +93,8 @@ public readonly struct ModSaveGroup : ISavable
jWriter.WriteValue(group.Description); jWriter.WriteValue(group.Description);
jWriter.WritePropertyName(nameof(group.Image)); jWriter.WritePropertyName(nameof(group.Image));
jWriter.WriteValue(group.Image); jWriter.WriteValue(group.Image);
jWriter.WritePropertyName(nameof(group.Page));
jWriter.WriteValue(group.Page);
jWriter.WritePropertyName(nameof(group.Priority)); jWriter.WritePropertyName(nameof(group.Priority));
jWriter.WriteValue(group.Priority.Value); jWriter.WriteValue(group.Priority.Value);
jWriter.WritePropertyName(nameof(group.Type)); jWriter.WritePropertyName(nameof(group.Type));
@ -97,4 +102,16 @@ public readonly struct ModSaveGroup : ISavable
jWriter.WritePropertyName(nameof(group.DefaultSettings)); jWriter.WritePropertyName(nameof(group.DefaultSettings));
jWriter.WriteValue(group.DefaultSettings.Value); jWriter.WriteValue(group.DefaultSettings.Value);
} }
public static bool ReadJsonBase(JObject json, IModGroup group)
{
group.Name = json[nameof(IModGroup.Name)]?.ToObject<string>() ?? string.Empty;
group.Description = json[nameof(IModGroup.Description)]?.ToObject<string>() ?? string.Empty;
group.Image = json[nameof(IModGroup.Image)]?.ToObject<string>() ?? string.Empty;
group.Page = json[nameof(IModGroup.Page)]?.ToObject<int>() ?? 0;
group.Priority = json[nameof(IModGroup.Priority)]?.ToObject<ModPriority>() ?? ModPriority.Default;
group.DefaultSettings = json[nameof(IModGroup.DefaultSettings)]?.ToObject<Setting>() ?? Setting.Zero;
return group.Name.Length > 0;
}
} }

View file

@ -67,15 +67,8 @@ public sealed class MultiModGroup(Mod mod) : IModGroup, ITexToolsGroup
public static MultiModGroup? Load(Mod mod, JObject json) public static MultiModGroup? Load(Mod mod, JObject json)
{ {
var ret = new MultiModGroup(mod) var ret = new MultiModGroup(mod);
{ if (!ModSaveGroup.ReadJsonBase(json, ret))
Name = json[nameof(Name)]?.ToObject<string>() ?? string.Empty,
Description = json[nameof(Description)]?.ToObject<string>() ?? string.Empty,
Image = json[nameof(Image)]?.ToObject<string>() ?? string.Empty,
Priority = json[nameof(Priority)]?.ToObject<ModPriority>() ?? ModPriority.Default,
DefaultSettings = json[nameof(DefaultSettings)]?.ToObject<Setting>() ?? Setting.Zero,
};
if (ret.Name.Length == 0)
return null; return null;
var options = json["Options"]; var options = json["Options"];
@ -106,6 +99,8 @@ public sealed class MultiModGroup(Mod mod) : IModGroup, ITexToolsGroup
Name = Name, Name = Name,
Description = Description, Description = Description,
Priority = Priority, Priority = Priority,
Image = Image,
Page = Page,
DefaultSettings = DefaultSettings.TurnMulti(OptionData.Count), DefaultSettings = DefaultSettings.TurnMulti(OptionData.Count),
}; };
single.OptionData.AddRange(OptionData.Select(o => o.ConvertToSingle(single))); single.OptionData.AddRange(OptionData.Select(o => o.ConvertToSingle(single)));

View file

@ -63,15 +63,8 @@ public sealed class SingleModGroup(Mod mod) : IModGroup, ITexToolsGroup
public static SingleModGroup? Load(Mod mod, JObject json) public static SingleModGroup? Load(Mod mod, JObject json)
{ {
var options = json["Options"]; var options = json["Options"];
var ret = new SingleModGroup(mod) var ret = new SingleModGroup(mod);
{ if (!ModSaveGroup.ReadJsonBase(json, ret))
Name = json[nameof(Name)]?.ToObject<string>() ?? string.Empty,
Description = json[nameof(Description)]?.ToObject<string>() ?? string.Empty,
Image = json[nameof(Image)]?.ToObject<string>() ?? string.Empty,
Priority = json[nameof(Priority)]?.ToObject<ModPriority>() ?? ModPriority.Default,
DefaultSettings = json[nameof(DefaultSettings)]?.ToObject<Setting>() ?? Setting.Zero,
};
if (ret.Name.Length == 0)
return null; return null;
if (options != null) if (options != null)
@ -92,6 +85,8 @@ public sealed class SingleModGroup(Mod mod) : IModGroup, ITexToolsGroup
Name = Name, Name = Name,
Description = Description, Description = Description,
Priority = Priority, Priority = Priority,
Image = Image,
Page = Page,
DefaultSettings = Setting.Multi((int)DefaultSettings.Value), DefaultSettings = Setting.Multi((int)DefaultSettings.Value),
}; };
multi.OptionData.AddRange(OptionData.Select((o, i) => o.ConvertToMulti(multi, new ModPriority(i)))); multi.OptionData.AddRange(OptionData.Select((o, i) => o.ConvertToMulti(multi, new ModPriority(i))));