public static World Create(MapData mapData, LevelData newLevel, Game game, Rectangle screenRec) { var tilesetList = new List<Tileset>(); foreach (TilesetData data in mapData.Tilesets) { tilesetList.Add( TilesetFactory.Create(data, game) ); } var mapLayers = mapData.Layers.Select(l => MapLayer.FromMapLayerData(l)).ToList(); // MUSTDO: modify TileMap to be able to accept multiple tile sets var map = new TileMap(tilesetList[0], mapLayers[0]); // SHOULDDO: find out why does map need tilesets to? for (int i = 1; i < tilesetList.Count; i++) map.AddTileset(tilesetList[i]); for (int i = 1; i < mapLayers.Count; i++) map.AddLayer(mapLayers[i]); var level = new Level(map); var world = new World(game, screenRec); world.Levels.Add(level); world.CurrentLevel = 0; return world; }
public Level(TileMap tileMap) { this.tileMap = tileMap; characters = new List<Character>(); chests = new List<ItemSprite>(); }
private void CreateWorld() { Texture2D tilesetTexture = Game.Content.Load<Texture2D>(@"Tilesets\tileset1"); Tileset tileset1 = new Tileset(tilesetTexture, 8, 8, 32, 32); tilesetTexture = Game.Content.Load<Texture2D>(@"Tilesets\tileset2"); Tileset tileset2 = new Tileset(tilesetTexture, 8, 8, 32, 32); MapLayer layer = new MapLayer(100, 100); for (int y = 0; y < layer.Height; y++) { for (int x = 0; x < layer.Width; x++) { Tile tile = new Tile(0, 0); layer.SetTile(x, y, tile); } } MapLayer splatter = new MapLayer(100, 100); Random random = new Random(); for (int i = 0; i < 100; i++) { int x = random.Next(0, 100); int y = random.Next(0, 100); int index = random.Next(2, 14); Tile tile = new Tile(index, 0); splatter.SetTile(x, y, tile); } splatter.SetTile(1, 0, new Tile(0, 1)); splatter.SetTile(2, 0, new Tile(2, 1)); splatter.SetTile(3, 0, new Tile(0, 1)); TileMap map = new TileMap(tileset1, layer); map.AddTileset(tileset2); map.AddLayer(splatter); Level level = new Level(map); World world = new World(GameRef, GameRef.ScreenRectangle); world.Levels.Add(level); world.CurrentLevel = 0; GamePlayScreen.World = world; }
private void CreateWorld() { Texture2D tilesetTexture = Game.Content.Load<Texture2D>(@"Tilesets\tileset1"); Tileset tileset1 = new Tileset(tilesetTexture, 8, 8, 32, 32); tilesetTexture = Game.Content.Load<Texture2D>(@"Tilesets\tileset2"); Tileset tileset2 = new Tileset(tilesetTexture, 8, 8, 32, 32); MapLayer layer = new MapLayer(100, 100); for (int y = 0; y < layer.Height; y++) { for (int x = 0; x < layer.Width; x++) { Tile tile = new Tile(0, 0); layer.SetTile(x, y, tile); } } MapLayer splatter = new MapLayer(100, 100); Random random = new Random(); for (int i = 0; i < 100; i++) { int x = random.Next(0, 100); int y = random.Next(0, 100); int index = random.Next(2, 14); Tile tile = new Tile(index, 0); splatter.SetTile(x, y, tile); } splatter.SetTile(1, 0, new Tile(0, 1)); splatter.SetTile(2, 0, new Tile(2, 1)); splatter.SetTile(3, 0, new Tile(0, 1)); TileMap map = new TileMap(tileset1, layer); map.AddTileset(tileset2); map.AddLayer(splatter); Level level = new Level(map); ChestData chestData = Game.Content.Load<ChestData>(@"Game\Chests\Plain Chest"); Chest chest = new Chest(chestData); BaseSprite chestSprite = new BaseSprite( containers, new Rectangle(0, 0, 32, 32), new Point(10, 10)); ItemSprite itemSprite = new ItemSprite( chest, chestSprite); level.Chests.Add(itemSprite); World world = new World(GameRef, GameRef.ScreenRectangle); world.Levels.Add(level); world.CurrentLevel = 0; GamePlayScreen.World = world; }
public void CreateWorld() { Texture2D tileSetTextureGrass = Game.Content.Load<Texture2D>(@"TileSets/grassTileSet"); Tileset tileSetGrass = new Tileset(tileSetTextureGrass, 8, 8, 32, 32); Texture2D tileSetTextureTown = Game.Content.Load<Texture2D>(@"TileSets/townTileSet"); Tileset tileSetTown = new Tileset(tileSetTextureTown, 8, 8, 32, 32); List<Tileset> tileSets = new List<Tileset>(); tileSets.Add(tileSetGrass); tileSets.Add(tileSetTown); MapLayer layer = new MapLayer(100, 100); for (int y = 0; y < layer.Height; y++) { for (int x = 0; x < layer.Width; x++) { Tile tile = new Tile(0, 0); layer.SetTile(x, y, tile); } } MapLayer splatter = new MapLayer(100, 100); Random random = new Random(); for (int i = 0; i < 100; i++) { int x = random.Next(0, 100); int y = random.Next(0, 100); int index = random.Next(2, 14); Tile tile = new Tile(index, 0); splatter.SetTile(x, y, tile); } splatter.SetTile(1, 0, new Tile(0, 1)); splatter.SetTile(2, 0, new Tile(2, 1)); splatter.SetTile(3, 0, new Tile(0, 1)); List<MapLayer> mapLayers = new List<MapLayer>(); mapLayers.Add(layer); mapLayers.Add(splatter); TileMap map = new TileMap(tileSets, mapLayers); Level level = new Level(map); World world = new World(gameRef, gameRef.ScreenRectangle); world.Levels.Add(level); world.CurrentLevel = 0; GamePlayScreen.World = world; }
void openLayerToolStripMenuItem_Click(object sender, EventArgs e) { OpenFileDialog ofDialog = new OpenFileDialog(); ofDialog.Filter = "Map Layer Data (*.mldt)|*.mldt"; ofDialog.CheckPathExists = true; ofDialog.CheckFileExists = true; DialogResult result = ofDialog.ShowDialog(); if (result != DialogResult.OK) return; MapLayerData data = null; try { data = XnaSerializer.Deserialize<MapLayerData>(ofDialog.FileName); } catch (Exception exc) { MessageBox.Show(exc.Message, "Error reading map layer"); return; } for (int i = 0; i < clbLayers.Items.Count; i++) { if (clbLayers.Items[i].ToString() == data.MapLayerName) { MessageBox.Show("Layer by that name already exists.", "Existing layer"); return; } } clbLayers.Items.Add(data.MapLayerName, true); layers.Add(MapLayer.FromMapLayerData(data)); if (map == null) { map = new TileMap(tileSets[0], (MapLayer)layers[0]); for (int i = 1; i < tileSets.Count; i++) map.AddTileset(tileSets[i]); } }
void openLevelToolStripMenuItem_Click(object sender, EventArgs e) { OpenFileDialog ofDialog = new OpenFileDialog(); ofDialog.Filter = "Level Files (*.xml)|*.xml"; ofDialog.CheckFileExists = true; ofDialog.CheckPathExists = true; DialogResult result = ofDialog.ShowDialog(); if (result != DialogResult.OK) return; string path = Path.GetDirectoryName(ofDialog.FileName); LevelData newLevel = null; MapData mapData = null; try { newLevel = XnaSerializer.Deserialize<LevelData>(ofDialog.FileName); mapData = XnaSerializer.Deserialize<MapData>(path + @"\Maps\" + newLevel.MapName + ".xml"); } catch (Exception exc) { MessageBox.Show(exc.Message, "Error reading level"); return; } tileSetImages.Clear(); tileSetData.Clear(); tileSets.Clear(); layers.Clear(); lbTileset.Items.Clear(); clbLayers.Items.Clear(); levelData = newLevel; foreach (TilesetData data in mapData.Tilesets) { Texture2D texture = null; tileSetData.Add(data); lbTileset.Items.Add(data.TilesetName); GDIImage image = (GDIImage)GDIBitmap.FromFile(data.TilesetImageName); tileSetImages.Add(image); using (Stream stream = new FileStream(data.TilesetImageName, FileMode.Open, FileAccess.Read)) { texture = Texture2D.FromStream(GraphicsDevice, stream); tileSets.Add( new Tileset( texture, data.TilesWide, data.TilesHigh, data.TileWidthInPixels, data.TileHeightInPixels)); } } foreach (MapLayerData data in mapData.Layers) { clbLayers.Items.Add(data.MapLayerName, true); layers.Add(MapLayer.FromMapLayerData(data)); } lbTileset.SelectedIndex = 0; clbLayers.SelectedIndex = 0; nudCurrentTile.Value = 0; map = new TileMap(tileSets[0], (MapLayer)layers[0]); for (int i = 1; i < tileSets.Count; i++) map.AddTileset(tileSets[i]); for (int i = 1; i < layers.Count; i++) map.AddLayer(layers[i]); tilesetToolStripMenuItem.Enabled = true; mapLayerToolStripMenuItem.Enabled = true; charactersToolStripMenuItem.Enabled = true; chestsToolStripMenuItem.Enabled = true; keysToolStripMenuItem.Enabled = true; }
void newLayerToolStripMenuItem_Click(object sender, EventArgs e) { using (FormNewLayer frmNewLayer = new FormNewLayer(levelData.MapWidth, levelData.MapHeight)) { frmNewLayer.ShowDialog(); if (frmNewLayer.OKPressed) { MapLayerData data = frmNewLayer.MapLayerData; if (clbLayers.Items.Contains(data.MapLayerName)) { MessageBox.Show("Layer with name " + data.MapLayerName + " exists.", "Existing layer"); return; } MapLayer layer = MapLayer.FromMapLayerData(data); clbLayers.Items.Add(data.MapLayerName, true); clbLayers.SelectedIndex = clbLayers.Items.Count - 1; layers.Add(layer); if (map == null) { map = new TileMap(tileSets[0], (MapLayer)layers[0]); for (int i = 1; i < tileSets.Count; i++) map.AddTileset(tileSets[1]); for (int i = 1; i < layers.Count; i++) map.AddLayer(layers[1]); } charactersToolStripMenuItem.Enabled = true; chestsToolStripMenuItem.Enabled = true; keysToolStripMenuItem.Enabled = true; } } }
public void CreateWorld() { Texture2D tileSetTextureGrass = Game.Content.Load<Texture2D>(@"TileSets/grassTileSet"); Tileset tileSetGrass = new Tileset(tileSetTextureGrass, 8, 8, 32, 32); Texture2D tileSetTextureTown = Game.Content.Load<Texture2D>(@"TileSets/townTileSet"); Tileset tileSetTown = new Tileset(tileSetTextureTown, 8, 8, 32, 32); List<Tileset> tileSets = new List<Tileset>(); tileSets.Add(tileSetGrass); tileSets.Add(tileSetTown); MapLayer layer = new MapLayer(100,100); for (int y = 0; y < layer.Height; y++) { for (int x = 0; x < layer.Width; x++) { Tile tile = new Tile(0,0); layer.SetTile(x,y,tile); } } MapLayer splatter = new MapLayer(100, 100); Random random = new Random(); for (int i = 0; i < 100; i++) { int x = random.Next(0,100); int y = random.Next(0, 100); int index = random.Next(2, 14); Tile tile = new Tile(index, 0); splatter.SetTile(x,y,tile); } splatter.SetTile(1,0,new Tile(0,1)); splatter.SetTile(2,0,new Tile(2,1)); splatter.SetTile(3,0,new Tile(0,1)); List<MapLayer> mapLayers = new List<MapLayer>(); mapLayers.Add(layer); mapLayers.Add(splatter); TileMap map = new TileMap(tileSets, mapLayers); Level level = new Level(map); ChestData chestData = new ChestData(); chestData.Name = "Chest"; chestData.MinGold = 10; chestData.MaxGold = 101; Chest chest = new Chest(chestData); BaseSprite chestSprite = new BaseSprite(containers, new Rectangle(0,0,32,32), new Point(10,10)); ItemSprite itemSprite = new ItemSprite(chest, chestSprite); level.Chests.Add(itemSprite); World world = new World(gameRef, gameRef.ScreenRectangle); world.Levels.Add(level); world.CurrentLevel = 0; GamePlayScreen.World = world; }
protected override void LoadContent() { base.LoadContent(); var tilesets = new List<Tileset>(); var tileset1 = Game.Content.Load<Texture2D>(@"Tilesets\tileset1"); var tileset2 = Game.Content.Load<Texture2D>(@"Tilesets\tileset2"); tilesets.Add(new Tileset(tileset1, 8, 8, 32, 32)); tilesets.Add(new Tileset(tileset2, 8, 8, 32, 32)); var layer = new MapLayer(40, 40); for (var y = 0; y < layer.Height; y++) { for (var x = 0; x < layer.Width; x++) { var tile = new Tile(0, 0); layer.SetTile(x, y, tile); } } var splatter = new MapLayer(40, 40); var random = new Random(); for (var i = 0; i < 80; i++) { var x = random.Next(0, 40); var y = random.Next(0, 40); var index = random.Next(2, 14); splatter.SetTile(x, y, new Tile(index, 0)); } splatter.SetTile(1, 0, new Tile(0, 1)); splatter.SetTile(2, 0, new Tile(2, 1)); splatter.SetTile(3, 0, new Tile(0, 1)); var mapLayers = new List<MapLayer> {layer, splatter}; _map = new TileMap(tilesets, mapLayers); }