static public string Process(string rootpath) // overall index of items { EliteDangerousCore.MaterialCommodityData.SetUpInitialTable(); string ret = "// DATA FROM Frontiers excel spreadsheet with corolis modules.json to give engineers names" + Environment.NewLine; ret += "// DO NOT UPDATE MANUALLY - use the netlogentry frontierdata scanner to do this" + Environment.NewLine; ret += "" + Environment.NewLine; string recipies = Path.Combine(rootpath, "recipes.csv"); CVSFile filerecipes = new CVSFile(); if (!filerecipes.Read(recipies)) { return("ERROR no recipies"); } string materials = Path.Combine(rootpath, "mats.csv"); CVSFile filemats = new CVSFile(); if (!filemats.Read(materials)) { return("ERROR no mats"); } List <CorolisEngineering.EngEntry> englist = CorolisEngineering.GetEng(rootpath); foreach (CVSFile.Row line in filerecipes.Rows) { string fdname = line["A"]; string ukname = line["C"]; string descr = line["D"]; int? level = line.GetInt("P"); long? matid1 = line.GetInt("Q"); long? matid1count = line.GetInt("R"); long? matid2 = line.GetInt("S"); long? matid2count = line.GetInt("T"); long? matid3 = line.GetInt("U"); long? matid3count = line.GetInt("V"); if (level != null) { fdname = fdname.Substring(0, fdname.LastIndexOf('_')); //examples, AFM_Shielded, Armour_Heavy Duty string fdfront = fdname.Substring(0, fdname.IndexOf('_')); string fdback = fdname.Substring(fdname.IndexOf('_') + 1).Replace(" ", ""); string ing = MatName(matid1, matid1count, filemats); ing = ing.AppendPrePad(MatName(matid2, matid2count, filemats), ","); ing = ing.AppendPrePad(MatName(matid3, matid3count, filemats), ","); string cat = fdname.Word(new char[] { '_' }, 1).SplitCapsWordFull(); if (cat == "FS Dinterdictor") { cat = "FSD Interdictor"; } List <CorolisEngineering.EngEntry> modulelist = (from x in englist where x.corolisfrontierid == fdfront select x).ToList(); string engnames = "Not Known"; if (modulelist.Count == 0) { Console.WriteLine("No matching corolis module found " + fdname + ":" + fdfront); } else { CorolisEngineering.EngEntry anylevelentry = (from x in modulelist where x.fdname.IndexOf(fdback, StringComparison.InvariantCultureIgnoreCase) >= 0 select x).FirstOrDefault(); CorolisEngineering.EngEntry entry = (from x in modulelist where x.fdname.IndexOf(fdback, StringComparison.InvariantCultureIgnoreCase) >= 0 && x.grade == level.ToString() select x).FirstOrDefault(); if (entry == null) { if (anylevelentry != null) { Console.WriteLine("Possible mismatched grade for " + fdname + ":" + fdfront + ":" + fdback + " at " + level); } else { Console.WriteLine("No matching engineering found for " + fdname + ":" + fdfront + ":" + fdback); } modulelist = null; } else { //Console.WriteLine("engineering found for FDName: " + fdname + ": Entry " + entry.fdname); engnames = entry.englist; } } if (ukname.StartsWith("Misc ")) { ukname = ukname.Substring(5); } if (modulelist != null) { string classline = " new EngineeringRecipe(\"" + ukname + "\", \"" + ing + "\", \"" + cat + "\", \"" + level.Value.ToString() + "\", \"" + engnames + "\" ),"; ret += classline + Environment.NewLine; } } } return(ret); }
static void Main(string[] stringargs) { CommandArgs args = new CommandArgs(stringargs); int repeatdelay = 0; while (true) // read optional args { string opt = (args.Left > 0) ? args[0] : null; if (opt != null) { if (opt.Equals("-keyrepeat", StringComparison.InvariantCultureIgnoreCase)) { repeatdelay = -1; args.Remove(); } else if (opt.Equals("-repeat", StringComparison.InvariantCultureIgnoreCase) && args.Left >= 1) { args.Remove(); if (!int.TryParse(args.Next, out repeatdelay)) { Console.WriteLine("Bad repeat delay\n"); return; } } else { break; } } else { break; } } string arg1 = args.Next; if (arg1 == null) { Help(); return; } if (arg1.Equals("StatusMove", StringComparison.InvariantCultureIgnoreCase)) { Status.StatusMove(args); return; } if (arg1.Equals("Status", StringComparison.InvariantCultureIgnoreCase)) { Status.StatusSet(args); return; } if (args.Left < 1) { Help(); return; } if (arg1.Equals("EDDBSTARS", StringComparison.InvariantCultureIgnoreCase)) { EDDB.EDDBLog(args.Next, "\"Star\"", "\"spectral_class\"", "Star class "); } else if (arg1.Equals("EDDBPLANETS", StringComparison.InvariantCultureIgnoreCase)) { EDDB.EDDBLog(args.Next, "\"Planet\"", "\"type_name\"", "Planet class"); } else if (arg1.Equals("EDDBSTARNAMES", StringComparison.InvariantCultureIgnoreCase)) { EDDB.EDDBLog(args.Next, "\"Star\"", "\"name\"", "Star Name"); } else if (arg1.Equals("voicerecon", StringComparison.InvariantCultureIgnoreCase)) { BindingsFile.Bindings(args.Next); } else if (arg1.Equals("devicemappings", StringComparison.InvariantCultureIgnoreCase)) { BindingsFile.DeviceMappings(args.Next); } else if (arg1.Equals("Phoneme", StringComparison.InvariantCultureIgnoreCase)) { if (args.Left >= 1) { Speech.Phoneme(args.Next, args.Next); } } else if (arg1.Equals("Corolisships", StringComparison.InvariantCultureIgnoreCase)) { FileInfo[] allFiles = Directory.EnumerateFiles(args.Next, "*.json", SearchOption.AllDirectories).Select(f => new FileInfo(f)).OrderBy(p => p.LastWriteTime).ToArray(); string ret = CorolisData.ProcessShips(allFiles); Console.WriteLine(ret); } else if (arg1.Equals("Corolisship", StringComparison.InvariantCultureIgnoreCase)) { FileInfo[] allFiles = Directory.EnumerateFiles(".", args.Next, SearchOption.AllDirectories).Select(f => new FileInfo(f)).OrderBy(p => p.LastWriteTime).ToArray(); string ret = CorolisData.ProcessShips(allFiles); Console.WriteLine(ret); } else if (arg1.Equals("Corolismodules", StringComparison.InvariantCultureIgnoreCase)) { FileInfo[] allFiles = Directory.EnumerateFiles(args.Next, "*.json", SearchOption.AllDirectories).Select(f => new FileInfo(f)).OrderBy(p => p.LastWriteTime).ToArray(); string ret = CorolisData.ProcessModules(allFiles); Console.WriteLine(ret); } else if (arg1.Equals("Corolismodule", StringComparison.InvariantCultureIgnoreCase)) { FileInfo[] allFiles = Directory.EnumerateFiles(".", args.Next, SearchOption.AllDirectories).Select(f => new FileInfo(f)).OrderBy(p => p.LastWriteTime).ToArray(); string ret = CorolisData.ProcessModules(allFiles); Console.WriteLine(ret); } else if (arg1.Equals("CorolisEng", StringComparison.InvariantCultureIgnoreCase)) { string ret = CorolisEngineering.ProcessEngineering(args.Next); Console.WriteLine(ret); } else if (arg1.Equals("FrontierData", StringComparison.InvariantCultureIgnoreCase)) { string ret = FrontierData.Process(args.Next); Console.WriteLine(ret); } else { Journal.JournalEntry(arg1, args.Next, args, repeatdelay); } }