Exemple #1
0
 static void Prefix(ref SGBarracksMWCustomizationPopup __instance, ref PortraitSettings portraitSettingsData)
 {
     try {
         if (portraitSettingsData == null)
         {
             if (!string.IsNullOrEmpty(__instance.pilot.pilotDef.Description.Icon))
             {
                 foreach (string path in CommanderPortraitLoader.jsonSearchablePaths)
                 {
                     string filePath = path + __instance.pilot.pilotDef.Description.Icon + ".json";
                     if (File.Exists(filePath))
                     {
                         portraitSettingsData = new PortraitSettings();
                         using (StreamReader r = new StreamReader(filePath))
                         {
                             string json = r.ReadToEnd();
                             portraitSettingsData.FromJSON(json);
                             break;
                         }
                     }
                 }
             }
         }
     } catch (Exception e) {
         Logger.LogError(e);
     }
 }
Exemple #2
0
        public static void CreateJsons()
        {
            try
            {
                //Create a path for the Json files if it does not already exist
                string jsonPath = $"{ CommanderPortraitLoader.ModDirectory}/PortraitJsons/";
                Directory.CreateDirectory(jsonPath);

                string        filePath = $"{ CommanderPortraitLoader.ModDirectory}/Portraits/";
                DirectoryInfo d1       = new DirectoryInfo(filePath);
                FileInfo[]    f1       = d1.GetFiles("*.png");
                foreach (FileInfo info in f1)
                {
                    if (!File.Exists(info.FullName.Replace(".png", ".json")))
                    {
                        PortraitSettings portait = new PortraitSettings();
                        portait.headMesh = 0.5f;
                        portait.Randomize(true);
                        portait.Description.SetName(info.Name.Replace(".png", ""));
                        portait.Description.SetID(info.Name.Replace(".png", ""));
                        portait.Description.SetIcon(info.Name.Replace(".png", ""));
                        portait.isCommander = true;
                        using (StreamWriter writer = new StreamWriter(jsonPath + info.Name.Replace(".png", ".json"), false))
                        {
                            writer.WriteLine(portait.ToJSON());
                        }
                    }
                }
            }
            catch (Exception e)
            {
                Logger.LogError(e);
            }
        }
        // Direct copy of BattleTech.PilotGenerator.GetPortraitForGenderAndAge
        private static PortraitSettings GetPortraitForGenderAndAge(Gender gender, int age, List <string> blackListedIDs)
        {
            List <PortraitSettings> list = new List <PortraitSettings>();

            VersionManifestEntry[] array = ModState.SimGameState.DataManager.ResourceLocator.AllEntriesOfResource(BattleTechResourceType.PortraitSettings);
            foreach (VersionManifestEntry versionManifestEntry in array)
            {
                if (!blackListedIDs.Contains(versionManifestEntry.Id))
                {
                    list.Add(ModState.SimGameState.DataManager.PortraitSettings.Get(versionManifestEntry.Id));
                }
            }
            List <PortraitSettings> list2 = list.FindAll((PortraitSettings x) => (gender == Gender.NonBinary || x.Gender == gender) && x.MatchesAge(age));

            if (list2 != null && list2.Count > 0)
            {
                list = list2;
            }
            else
            {
                Debug.LogWarning($"Cannot find any portrait settings to match Gender {gender} and Age {age}");
            }
            List <PortraitSettings> list3 = new List <PortraitSettings>();

            for (int num = list.Count - 1; num >= 0; num--)
            {
                if (ModState.SimGameState.pilotGenPortraitDiscardPile.Contains(list[num].Description.Id))
                {
                    list3.Add(list[num]);
                    list.RemoveAt(num);
                }
            }
            if ((float)list3.Count >= (float)list.Count * ModState.SimGameState.Constants.Story.DiscardPileToActiveRatio)
            {
                list.AddRange(list3);
                ModState.SimGameState.pilotGenPortraitDiscardPile.Clear();
            }
            PortraitSettings portraitSettings = list[Mod.Random.Next(0, list.Count)];

            ModState.SimGameState.pilotGenPortraitDiscardPile.Add(portraitSettings.Description.Id);
            return(portraitSettings);
        }
Exemple #4
0
        public static void Postfix(ref VersionManifest __result)
        {
            try
            {
                string        filePath = $"{ CommanderPortraitLoader.ModDirectory}/PortraitJsons/";
                DirectoryInfo d1       = new DirectoryInfo(filePath);
                FileInfo[]    f1       = d1.GetFiles("*.json");

                PortraitSettings preset = new PortraitSettings();
                foreach (FileInfo info in f1)
                {
                    using (StreamReader r = new StreamReader(info.FullName))
                    {
                        string json = r.ReadToEnd();
                        preset.FromJSON(json);
                    }
                    __result.AddOrUpdate(preset.Description.Id, info.FullName, "PortraitSettings", DateTime.Now, null, false);
                }
            }
            catch (Exception e)
            {
                Logger.LogError(e);
            }
        }