//////////////////////////////////////////////////////////////////////// // テキストファイルとしてマップを出力 //////////////////////////////////////////////////////////////////////// private void button3_Click(object sender, EventArgs e) { SaveFileDialog dialog = new SaveFileDialog(); dialog.FileName = "map.txt"; dialog.InitialDirectory = Environment.CurrentDirectory; dialog.Filter = "テキストファイル(*.txt) | *.txt"; dialog.Title = "マップを保存"; dialog.RestoreDirectory = true; if (dialog.ShowDialog() == DialogResult.OK) { var fileName = dialog.FileName; using (StreamWriter writer = new StreamWriter(fileName, false, Encoding.UTF8)) { var datas = World.ExportCurrentMapData(); for (int x = 0; x < World.MAX_COORD_X; x++) { for (int y = 0; y < World.MAX_COORD_Y; y++) { writer.WriteLine(Convert.ToInt32(datas[x, y].GetTileType()).ToString()); } } } } }
//////////////////////////////////////////////////////////////////////// // テキストファイルとしてマップを入力 //////////////////////////////////////////////////////////////////////// private void button4_Click(object sender, EventArgs e) { OpenFileDialog dialog = new OpenFileDialog(); dialog.InitialDirectory = Environment.CurrentDirectory; dialog.Filter = "テキストファイル(*.txt) | *.txt"; dialog.Title = "マップを読込"; dialog.RestoreDirectory = true; if (dialog.ShowDialog() == DialogResult.OK) { var fileName = dialog.FileName; using (StreamReader reader = new StreamReader(fileName, Encoding.UTF8)) { var line = string.Empty; TileBlock[,] datas = World.ExportCurrentMapData(); List <string> list = new List <string>(); while ((line = reader.ReadLine()) != null) { list.Add(line); } int counter = 0; for (int x = 0; x < World.MAX_COORD_X; x++) { for (int y = 0; y < World.MAX_COORD_Y; y++) { counter++; if (World.IsTileBlockExists(new Vector2(x, y))) { int result = 5; if (int.TryParse(list[counter - 1], out result)) { datas[x, y].SetTileType(int.Parse(list[counter - 1])); } else { LoggerForm.WriteError(string.Format("Failed to parse data[{0}, {1}] [{2}]", x, y, list[counter - 1])); } } else { LoggerForm.WriteError(string.Format("Failed to load data[{0}, {1}] [{2}]. Tile is not exists.", x, y, list[counter - 1])); } } } World.ImportMapData(datas); } } }