예제 #1
0
        ////////////////////////////////////////////////////////////////////////
        // テキストファイルとしてマップを出力
        ////////////////////////////////////////////////////////////////////////
        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());
                        }
                    }
                }
            }
        }
예제 #2
0
        ////////////////////////////////////////////////////////////////////////
        // テキストファイルとしてマップを入力
        ////////////////////////////////////////////////////////////////////////
        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);
                }
            }
        }