public static void GenerateLevel() { string SavePath = @"C:\Program Files (x86)\N8\Saves\maxprotecttest.ncd"; string TronicsPath = @"C:\Program Files (x86)\N8\Saves\maxprotect_tronics_base_proxies.ncd"; //I like black best, so make it more likely to show up //string[] colors = { "blue", "green", "orange", "purple", "red", "black", "black" }; //Apparently nobody else likes the colors, so we're back to just black. string[] colors = { "black" }; N8Level Level = new N8Level(); N8Level tronics = new N8Level(TronicsPath); N8BlockFactory LevelBlocks = Level.blocks; Random rand = new Random(); for (int i = -1000; i < 1380; i = i + 70) { for (int j = -1333; j <= 2000; j = j + 1333) { for(int k = -1333; k <= 2000; k = k + 1333) { if (!(k == 0 && j == 0)) { string color = colors[rand.Next(0, colors.Length)]; N8Block CurrentBlock = LevelBlocks.GenerateBlock("simpleland" + color, "Vault of the Heavens"); CurrentBlock.position.Z = i; CurrentBlock.position.X = j; CurrentBlock.position.Y = k; } } } } Level.MergeWithDestructive(tronics); //Non position dependent tronics - tronics whose position doesn't matter var NPDTronics = from N8Tronic t in LevelBlocks.Tronics where !(t.type == "rproximity" || t.type == "rkeyboard" || t.type == "tmover") select t; N8Block AttachmentPoint = (from N8Block b in LevelBlocks.Blocks where b.name == "Attach Point" select b).First(); foreach (N8Tronic t in NPDTronics) { t.Detach(); t.position.X = 0; t.position.Y = 0; t.position.Z = -250; AttachmentPoint.AttachToMe(t); } string ret = Level.GenerateSaveFile(); Console.Read(); if (!File.Exists(SavePath)) { using (File.Create(SavePath)) { } } using (StreamWriter sw = new StreamWriter(File.Open(SavePath, FileMode.Truncate, FileAccess.Write, FileShare.None))) { sw.WriteLine(ret); } Console.WriteLine(ret); }
public static void GenerateProxyMatrix() { string TronicsPath = @"C:\Program Files (x86)\N8\Saves\maxprotect_tronics_base.ncd"; string SavePath = @"C:\Program Files (x86)\N8\Saves\maxprotect_tronics_base_proxies.ncd"; N8Level tronics = new N8Level(TronicsPath); N8Level proxies = new N8Level(); N8BlockFactory LevelBlocks = proxies.blocks; List<N8Tronic> ProxyBlocks = new List<N8Tronic>(); int stepsize = 36; for (int i = -90 + stepsize; i <= 90 - stepsize; i += stepsize) { for (int j = -90 + stepsize; j <= 90 - stepsize; j += stepsize) { N8Tronic LowerProxy = LevelBlocks.GenerateTronic("rproximity", "Detector Mesh"); LowerProxy.position.X = i; LowerProxy.position.Y = j; LowerProxy.position.Z = 45; N8Tronic UpperProxy = LevelBlocks.GenerateTronic("rproximity", "Detector Mesh"); UpperProxy.position.X = i * 2.5; UpperProxy.position.Y = j * 2.5; UpperProxy.position.Z = 335; UpperProxy.rotation = new Quaternion(new Vector3D(1, 0, 0), 90); ProxyBlocks.Add(LowerProxy); ProxyBlocks.Add(UpperProxy); } } proxies.MergeWithDestructive(tronics); N8Tronic MoverGateway = (from N8Tronic b in proxies.blocks.Tronics where b.type == "cifgreat" select b).First(); N8Block ControlPoint = LevelBlocks.GenerateBlock("snowmancoal", "Control Point"); ControlPoint.position.X = -100; foreach (N8Tronic prox in ProxyBlocks) { ControlPoint.AttachToMe(prox); //MoverGateway.WireTo(prox, Tronics.NodeType.FlowIn, Tronics.NodeType.FlowOutA); } Console.Read(); if (!File.Exists(SavePath)) { using (File.Create(SavePath)) { } } using (StreamWriter sw = new StreamWriter(File.Open(SavePath, FileMode.Truncate, FileAccess.Write, FileShare.None))) { sw.WriteLine(proxies.GenerateSaveFile()); } }