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