public HCSLoader() { Logger = base.Logger; var harmonyInstance = HarmonyWrapper.PatchAll(); harmonyInstance.Patch(AccessTools.Constructor(typeof(Game), Type.EmptyTypes), postfix: new HarmonyMethod(typeof(HCSLoader), nameof(LoadGirlsHook))); string modsDirectory = Path.Combine(Paths.GameRootPath, "Mods"); if (!Directory.Exists(modsDirectory)) { Directory.CreateDirectory(modsDirectory); } foreach (var subdir in Directory.GetDirectories(modsDirectory, "*", SearchOption.TopDirectoryOnly)) { if (CharacterAdditionMod.TryLoad(subdir, out var addMod)) { CharacterAdditions.Add(addMod); } else if (CharacterModificationMod.TryLoad(subdir, out var editMod)) { CharacterModifications.Add(editMod); } else { Logger.LogWarning($"Unknown mod type for folder '{Path.GetFileName(subdir)}', skipping"); } } Logger.Log(LogLevel.Message, $"Found {CharacterAdditions.Count + CharacterModifications.Count} mods."); }
public static bool TryLoad(string directory, out CharacterAdditionMod mod) { string girlManifestPath = Path.Combine(directory, "addgirl.json"); if (!File.Exists(girlManifestPath)) { mod = null; return(false); } mod = JsonConvert.DeserializeObject <CharacterAdditionMod>(File.ReadAllText(girlManifestPath)); mod.ModDirectory = directory; return(true); }
protected static List <GirlDefinitionDollPart> ProcessDollParts(CharacterAdditionMod addition, out List <string> outfits, out List <string> hairstyles) { List <GirlDefinitionDollPart> parts = new List <GirlDefinitionDollPart>(addition.Parts.Count); outfits = new List <string>(MaxOutfits); hairstyles = new List <string>(MaxOutfits); foreach (var part in addition.Parts) { var dollPart = new GirlDefinitionDollPart { editorExpanded = true, sprite = LoadSprite(Path.Combine(addition.ModDirectory, part.File)), type = (GirlDollPartType)Enum.Parse(typeof(GirlDollPartType), part.Type, true), x = part.X, y = part.Y }; parts.Add(dollPart); if (dollPart.type == GirlDollPartType.OUTFIT && outfits.Count < MaxOutfits) { outfits.Add(part.Name ?? $"Outfit {outfits.Count + 1}"); } else if (dollPart.type == GirlDollPartType.FRONTHAIR && hairstyles.Count < MaxOutfits) { hairstyles.Add(part.Name ?? $"Hairstyle {outfits.Count + 1}"); } } while (outfits.Count < MaxOutfits) { outfits.Add("Default"); } while (hairstyles.Count < MaxOutfits) { hairstyles.Add("Default"); } return(parts); }