Esempio n. 1
0
        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.");
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }