public static void RandomizeMap(string args = null) { // Randomize maintains a list of the chosen area types for the purposes of passing on to WriteWorldMap() AreaTypesChosen = new List <string>(); saveDir = settings.GameDirectory; if (args == "savemod") { saveDir = SaveRunPrompt(); } if (saveDir == null) { return; } TilesetManip.MakeShaderPool(); // make the draw pool based on which level pools are enabled MakeDrawPool(); // make randomized selections from drawpool ChooseLevels(); // The rest of the randomization process is delegated to the functions below. try { CleanFolders(); } catch (Exception ex) { Console.WriteLine($"Error cleaning folders or printing debug. Exception {ex}"); MessageBox.Show($"Error cleaning folders or printing debug. Exception {ex}", "Error", MessageBoxButton.OK, MessageBoxImage.Error); throw; } try { LevelInfo(); } catch (Exception ex) { Console.WriteLine($"Error creating levelinfo. Exception {ex}"); MessageBox.Show($"Error creating levelinfo. Exception {ex}", "Error", MessageBoxButton.OK, MessageBoxImage.Error); throw; } try { MapCSV(); } catch (Exception ex) { Console.WriteLine($"Error creating map. Exception {ex}"); MessageBox.Show($"Error creating map. Exception {ex}", "Error", MessageBoxButton.OK, MessageBoxImage.Error); throw; } try { TileMaps(); } catch (Exception ex) { Console.WriteLine($"Error copying tilemaps. Exception {ex}"); MessageBox.Show($"Error copying tilemaps. Exception {ex}", "Error", MessageBoxButton.OK, MessageBoxImage.Error); throw; } try { Tilesets(); } catch (Exception ex) { Console.WriteLine($"Error creating tilesets. Exception {ex}"); MessageBox.Show($"Error creating tilesets. Exception {ex}", "Error", MessageBoxButton.OK, MessageBoxImage.Error); throw; } try { NPCs(); } catch (Exception ex) { Console.WriteLine($"Error creating npcs. Exception {ex}"); MessageBox.Show($"Error creating tilesets. Exception {ex}", "Error", MessageBoxButton.OK, MessageBoxImage.Error); throw; } try { Worldmap.WriteWorldMap(); } catch (Exception ex) { Console.WriteLine($"Error creating worldmap. Exception {ex}"); MessageBox.Show($"Error creating worldmap. Exception {ex}", "Error", MessageBoxButton.OK, MessageBoxImage.Error); throw; } Console.WriteLine(AppResources.GameSeed); }
static void Tilesets() { using (StreamWriter sw = File.CreateText(saveDir + "data/tilesets.txt.append")) { sw.WriteLine("v { area_name \"Void\" area_label_frame 0 tile_graphics Tilehell overlay_graphics Overlaysairship background_graphics neverbg foreground_graphics none palette 0 do_tilt true fx_shader ripples fx_shader_mid heatwave2 midfx_graphics SolidBox global_particle_1 bgrain global_particle_2 embers global_particle_3 leaves decoration_1 CreepingMass decoration_2 OrbBlob2 decoration_3 OrbLarge2 ambience flesh.ogg art_alts[[OrbSmall, OrbBlob2][OrbLarge, OrbLarge2][ChainLink, None][ChainLink2, None]]"); for (int j = 0; j < settings.NumAreas; j++) // npc levels { sw.WriteLine($"npc{j + 1} {{ npc_1 NPCv{j + 1} }}"); } sw.WriteLine("}"); for (int j = 0; j < settings.NumAreas; j++) // area loop { var areatileset = TilesetManip.GetTileset(settings, true); AreaTypesChosen.Add(areatileset.AreaType); sw.WriteLine("v" + (j + 1).ToString() + $" {{\n area_name \"TEiN Randomizer\"\n area_label_frame 0\n background_graphics neverbg\n area_type {areatileset.AreaType}\n"); if (settings.UseAreaTileset || (settings.DoShaders && settings.DoParticles)) { sw.WriteLine(areatileset.All + "art_alts[" + areatileset.ArtAlts + "]"); } for (int i = 0; i < settings.NumLevels; i++) // level loop { var tileset = TilesetManip.GetTileset(settings, false); sw.WriteLine(" " + Convert.ToString(i + 1) + " {"); sw.WriteLine(" " + ChosenLevels[j][i].TSDefault); sw.WriteLine($"# Level Name: {ChosenLevels[j][i].Name}"); // Write Tileset info for level if (settings.UseAreaTileset) { tileset = areatileset; } if (settings.DoMusic) { sw.WriteLine(areatileset.Music); } if (settings.DoPalettes) { sw.WriteLine(tileset.Palette); } if (settings.DoTileGraphics) { sw.WriteLine(tileset.Tile); } if (settings.DoOverlays) { sw.WriteLine(tileset.Overlay); } if (settings.DoShaders) { sw.WriteLine(tileset.Shader); } if (settings.DoParticles) { sw.WriteLine("global_particle_1 None\nglobal_particle_2 None\nglobal_particle_3 None\n"); sw.WriteLine(tileset.Particles); } sw.WriteLine(tileset.DoTilt); sw.WriteLine(tileset.DoWobble); sw.WriteLine(tileset.Extras); // Art alts sw.Write(" art_alts[" + ChosenLevels[j][i].Art); sw.Write(tileset.ArtAlts); //if (settings.UseCommonTileset) // sw.Write(areatileset.ArtAlts); sw.WriteLine(" ]"); sw.WriteLine(" # TS Needs"); sw.WriteLine(" " + ChosenLevels[j][i].TSNeed); foreach (var line in AppResources.AttachToTS) { sw.WriteLine(line); } // NPCs sw.WriteLine($" npc_1 NPC{j}-{i}\n"); sw.WriteLine(" }\n"); } sw.WriteLine("}"); } } File.Copy(saveDir + "data/tilesets.txt.append", "data/debug/last_tilesets.txt", true); }
public static void RandomizeMod(MainWindow mw) { //ShadersList = mw.ShadersList; saveDir = settings.GameDirectory; PrepModFolders(); // level corruptions string dir = $"{saveDir}tilemaps"; if (Directory.Exists(dir)) { string[] paths = Directory.GetFiles(dir); foreach (var file in paths) { LevelFile level = LevelManip.Load(file); //if(settings.MirrorMode) //{ // LevelManip.FlipLevelH(ref level); // FlipCSV(saveDir + "data/map.csv"); //} if (settings.DoCorruptions) { LevelCorruptors.CorruptLevel(ref level); } LevelManip.Save(level, file); } } // data folder dir = $"{saveDir}data"; if (Directory.Exists(dir)) { // tilesets.txt var file = $"{dir}/tilesets.txt"; if (File.Exists(file)) { string[] text = File.ReadAllLines(file); for (int i = 0; i < text.Length; i++) { if (text[i].Contains("palette")) { text[i] = TilesetManip.GetPalette(); } if (text[i].Contains("tile_graphics")) { text[i] = TilesetManip.GetTile(); } if (text[i].Contains("overlay_graphics")) { text[i] = TilesetManip.GetOverlay(); } if (text[i].Contains("global_particle")) { var split = text[i].Trim().Split(Convert.ToChar(" ")); text[i] = split[0] + " " + ParticleGenerator.GetParticle(settings); } } File.Delete(file); File.WriteAllLines(file, text); } } }