public static void Init(string modDir, string settings) { var harmony = HarmonyInstance.Create("BattleTech.Haree.FullXotlTables"); harmony.PatchAll(Assembly.GetExecutingAssembly()); // read settings try { Settings = JsonConvert.DeserializeObject <ModSettings>(settings); Settings.modDirectory = modDir; } catch (Exception) { Settings = new ModSettings(); } // blank the logfile Clear(); try { xotlTables = GenerateTables.GenerateFromFiles(); } catch (Exception e) { Logger.Log("Failed to generate Xotl Tables"); Logger.Error(e); } // PrintObjectFields(Settings, "Settings"); foreach (KeyValuePair <string, FactionTable> kvp in xotlTables.Factions) { Logger.Log("Faction: " + kvp.Key); Logger.Log(" Number of Lights: " + xotlTables.Factions[kvp.Key].Mechs.Lights.Count.ToString()); Logger.Log(" Number of Mediums: " + xotlTables.Factions[kvp.Key].Mechs.Mediums.Count.ToString()); Logger.Log(" Number of Heavies: " + xotlTables.Factions[kvp.Key].Mechs.Heavies.Count.ToString()); Logger.Log(" Number of Assaults: " + xotlTables.Factions[kvp.Key].Mechs.Assaults.Count.ToString()); } }
public static XotlTable GenerateFromFiles() { string currentDirectory = Directory.GetParent(Assembly.GetExecutingAssembly().Location).FullName; string tablesFolder = Path.Combine(currentDirectory, "XotlTables"); string[] filePaths = Directory.GetFiles(tablesFolder, "*.csv"); XotlTable generatedTable = new XotlTable(); foreach (string path in filePaths) { FactionTable factionTable = new FactionTable(); string factionName = null; using (var reader = new StreamReader(path)) { if (reader != null) { var firstLine = reader.ReadLine(); var firstValues = firstLine.Split(','); factionName = firstValues[0]; while (!reader.EndOfStream) { var line = reader.ReadLine(); var values = line.Split(','); if (values[0].StartsWith("Collection:")) { factionTable.Collection.Add(values[0].TrimStart('C', 'o', 'l', 'e', 'c', 't', 'i', 'o', 'n', ':'), ReadWeightLine(values)); } else if (values[0].StartsWith("Salvage:")) { factionTable.Salvage.Add(values[0].TrimStart('S', 'a', 'l', 'v', 'a', 'g', 'e', ':'), ReadWeightLine(values)); } else if (values[0].Contains("Dates")) { for (int element = 1; element < values.Length; element += 2) { factionTable.Dates.Add(DateTime.Parse(values[element])); } } else if (values[0].Contains("Lights")) { while (!reader.EndOfStream && !values[0].Contains("Mediums")) { line = reader.ReadLine(); values = line.Split(','); if (values[0] != "" && !values[0].Contains("Mediums")) { factionTable.Mechs.Lights.Add(values[0], ReadWeightLine(values)); } } while (!reader.EndOfStream && !values[0].Contains("Heavies")) { line = reader.ReadLine(); values = line.Split(','); if (values[0] != "" && !values[0].Contains("Heavies")) { factionTable.Mechs.Mediums.Add(values[0], ReadWeightLine(values)); } } while (!reader.EndOfStream && !values[0].Contains("Assaults")) { line = reader.ReadLine(); values = line.Split(','); if (values[0] != "" && !values[0].Contains("Assaults")) { factionTable.Mechs.Heavies.Add(values[0], ReadWeightLine(values)); } } while (!reader.EndOfStream) { line = reader.ReadLine(); values = line.Split(','); if (values[0] != "") { factionTable.Mechs.Assaults.Add(values[0], ReadWeightLine(values)); } } } } } } if (factionName != null) { generatedTable.Factions.Add(factionName, factionTable); } } return(generatedTable); }