public void NewMap(int mapWidth, int mapHeight, Texture2D tileset, string mapName)
 {
     //set the dimensions
     this.mapWidth = mapWidth;
     this.mapHeight = mapHeight;
     this.mapName = mapName;
     //Create the map
     foregroundLayer = new cCell[mapWidth, mapHeight];
     interactiveLayer = new cCell[mapWidth, mapHeight];
     backgroundLayer = new cCell[mapWidth, mapHeight];
     entityLayer = new cCell[mapWidth, mapHeight];
     tempVisualLayer = new cCell[mapWidth, mapHeight];
     tempInteractiveVisualLayer = new cCell[mapWidth, mapHeight];
     tempForegroundVisualLayer = new cCell[mapWidth, mapHeight];
     //fill the map with cells
     for (int x = 0; x < mapWidth; x++)
     {
         for (int y = 0; y < mapHeight; y++)
         {
             backgroundLayer[x, y] = new cCell(tileWidth, tileHeight, 0, Game1.hud.tilesetManager.tilesetWidth);
             interactiveLayer[x, y] = new cCell(tileWidth, tileHeight, 0, Game1.hud.tilesetManager.tilesetWidth);
             foregroundLayer[x, y] = new cCell(tileWidth, tileHeight, 0, Game1.hud.tilesetManager.tilesetWidth);
             entityLayer[x, y] = new cCell(tileWidth, tileHeight, 0, Game1.hud.tilesetManager.tilesetWidth);
             tempVisualLayer[x, y] = new cCell(tileWidth, tileHeight, 0, Game1.hud.tilesetManager.tilesetWidth);
             tempInteractiveVisualLayer[x, y] = new cCell(tileWidth, tileHeight, 0, Game1.hud.tilesetManager.tilesetWidth);
             tempForegroundVisualLayer[x, y] = new cCell(tileWidth, tileHeight, 0, Game1.hud.tilesetManager.tilesetWidth);
         }
     }
     this.tileset = tileset;
 }
        public void LoadMap(string filepath)
        {
            this.filePath = filepath;
            StreamReader reader = new StreamReader(filepath);
            //Read the global map data
            try
            {
                // get the tile dimensions from the tileset
                tileWidth = Game1.mapController.tileWidth;
                tileHeight = Game1.mapController.tileHeight;

                mapName = reader.ReadLine();
                //set the map dimensions
                mapWidth = int.Parse(reader.ReadLine());
                mapHeight = int.Parse(reader.ReadLine());
                Game1.mapController.SetEditableArea();
                Game1.mapController.mapWidth = mapWidth;
                Game1.mapController.mapHeight = mapHeight;
                reader.ReadLine();
                reader.ReadLine();
                reader.ReadLine();
                reader.ReadLine();
                //create an empty map based on the data
                backgroundLayer = new cCell[mapWidth, mapHeight];
                interactiveLayer = new cCell[mapWidth, mapHeight];
                foregroundLayer = new cCell[mapWidth, mapHeight];
                entityLayer = new cCell[mapWidth, mapHeight];
                tempVisualLayer = new cCell[mapWidth, mapHeight];
                tempInteractiveVisualLayer = new cCell[mapWidth, mapHeight];
                tempForegroundVisualLayer = new cCell[mapWidth, mapHeight];

                for (int x = 0; x < mapWidth; x++)
                {
                    for (int y = 0; y < mapHeight; y++)
                    {
                        backgroundLayer[x, y] = new cCell(tileWidth, tileHeight, 0, Game1.hud.tilesetManager.tilesetWidth);
                        interactiveLayer[x, y] = new cCell(tileWidth, tileHeight, 0, Game1.hud.tilesetManager.tilesetWidth);
                        foregroundLayer[x, y] = new cCell(tileWidth, tileHeight, 0, Game1.hud.tilesetManager.tilesetWidth);
                        entityLayer[x, y] = new cCell(tileWidth, tileHeight, 0, Game1.hud.tilesetManager.tilesetWidth);
                        tempVisualLayer[x, y] = new cCell(tileWidth, tileHeight, 0, Game1.hud.tilesetManager.tilesetWidth);
                        tempInteractiveVisualLayer[x, y] = new cCell(tileWidth, tileHeight, 0, Game1.hud.tilesetManager.tilesetWidth);
                        tempForegroundVisualLayer[x, y] = new cCell(tileWidth, tileHeight, 0, Game1.hud.tilesetManager.tilesetWidth);
                    }
                }
                //fill the map with data from the 3 arrays in the map file
                for (int y = 0; y < mapHeight; y++)
                {
                    string line = reader.ReadLine();
                    string[] values = line.Split(',');

                    for (int i = 0; i < values.Length-1; i++)
                    {
                        backgroundLayer[i, y].tileID = int.Parse(values[i]);
                        Console.Write(values[i] + " .");
                    }
                }
                reader.ReadLine();
                for (int y = 0; y < mapHeight; y++)
                {
                    string line = reader.ReadLine();
                    string[] values = line.Split(',');

                    for (int i = 0; i < values.Length - 1; i++)
                    {
                        interactiveLayer[i, y].tileID = int.Parse(values[i]);
                        Console.Write(values[i] + " .");
                    }
                }
                reader.ReadLine();
                for (int y = 0; y < mapHeight; y++)
                {
                    string line = reader.ReadLine();
                    string[] values = line.Split(',');

                    for (int i = 0; i < values.Length - 1; i++)
                    {
                        foregroundLayer[i, y].tileID = int.Parse(values[i]);
                        Console.Write(values[i] + " .");
                    }
                }
                reader.ReadLine();
                for (int y = 0; y < mapHeight; y++)
                {
                    string line = reader.ReadLine();
                    string[] values = line.Split(',');

                    for (int i = 0; i < values.Length - 1; i++)
                    {
                        entityLayer[i, y].tileID = int.Parse(values[i]);
                        Console.Write(values[i] + " .");
                    }
                }
                reader.Close();
            }
            catch
            {
                System.Windows.Forms.MessageBox.Show("Failed to load map, possibly incorrect file format.");
                reader.Close();
            }
            rootPath = filePath.Remove(filePath.Length - mapName.Length - 7);
            Console.WriteLine(rootPath);
            Game1.hud.LoadNpc();
            Game1.hud.LoadWarp();
        }