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); tilesetTexture = Game.Content.Load <Texture2D>(@"Tilesets\fire-tiles"); TextureManager.AddTexture("FullSheet", Game.Content.Load <Texture2D>(@"GUI\ProjectUtumno_full")); TextureManager.AddTexture("SuppSheet", Game.Content.Load <Texture2D>(@"GUI\ProjectUtumno_supplemental")); AnimatedTileset animatedSet = new AnimatedTileset(tilesetTexture, 8, 1, 64, 64); 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(5, 0, new Tile(14, 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)); TileMap map = new TileMap(tileset1, animatedSet, layer); map.AddTileset(tileset2); map.AddLayer(splatter); map.CollisionLayer.Collisions.Add(new Point(1, 0), CollisionType.Impassable); map.CollisionLayer.Collisions.Add(new Point(3, 0), CollisionType.Impassable); map.AnimatedTileLayer.AnimatedTiles.Add(new Point(5, 0), new AnimatedTile(0, 8)); }
private void animatedTIlesetToolStripMenuItem_Click(object sender, EventArgs e) { FormNewAnimatedTileset frm = new FormNewAnimatedTileset(); frm.ShowDialog(); if (frm.Tileset == null) { return; } animatedSetData = frm.Tileset; try { GDIImage image = (GDIImage)GDIBitmap.FromFile(animatedSetData.TilesetImageName); pbAnimatedSet.Image = image; Stream stream = new FileStream(animatedSetData.TilesetImageName, FileMode.Open, FileAccess.Read); Texture2D texture = Texture2D.FromStream(GraphicsDevice, stream); animatedSet = new AnimatedTileset( texture, animatedSetData.FramesAcross, animatedSetData.TilesHigh, animatedSetData.TileWidthInPixels, animatedSetData.TileHeightInPixels); if (map != null) { map.AddAnimatedTileset(animatedSet); } sbAnimatedTile.Maximum = 0; chkPaintAnimated.Enabled = true; stream.Close(); stream.Dispose(); } catch (Exception ex) { MessageBox.Show("Error reading file.\n" + ex.Message, "Error reading image"); return; } }
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; CharacterLayerData charData = null; try { newLevel = XnaSerializer.Deserialize <LevelData>(ofDialog.FileName); mapData = XnaSerializer.Deserialize <MapData>(path + @"\Maps\" + newLevel.MapName + ".xml"); charData = XnaSerializer.Deserialize <CharacterLayerData>(path + @"\Chars\" + newLevel.LevelName + ".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(); collisionLayer.Collisions.Clear(); animatedLayer.AnimatedTiles.Clear(); characters.Characters.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)); } } using (Stream textureStream = new FileStream(mapData.AnimatedTileset.TilesetImageName, FileMode.Open, FileAccess.Read)) { Texture2D aniamtedTexture = Texture2D.FromStream(GraphicsDevice, textureStream); animatedSet = new AnimatedTileset( aniamtedTexture, mapData.AnimatedTileset.FramesAcross, mapData.AnimatedTileset.TilesHigh, mapData.AnimatedTileset.TileWidthInPixels, mapData.AnimatedTileset.TileHeightInPixels); animatedSetData = mapData.AnimatedTileset; } 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; sbAnimatedTile.Maximum = 0; map = new TileMap(tileSets[0], animatedSet, (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]); } foreach (var collision in mapData.Collisions.Collisions) { collisionLayer.Collisions.Add(collision.Key, collision.Value); } foreach (var tile in mapData.AnimatedTiles.AnimatedTiles) { animatedLayer.AnimatedTiles.Add(tile.Key, tile.Value); } foreach (var c in charData.Characters) { Character character; if (c.Value is NonPlayerCharacterData) { Entity entity = new Entity(c.Value.Name, c.Value.EntityData, c.Value.Gender, EntityType.NPC); using (Stream stream = new FileStream(c.Value.TextureName, FileMode.Open, FileAccess.Read)) { Texture2D texture = Texture2D.FromStream(GraphicsDevice, stream); AnimatedSprite sprite = new AnimatedSprite(texture, Animations); sprite.Position = new Vector2(c.Key.X * Engine.TileWidth, c.Key.Y * Engine.TileHeight); character = new NonPlayerCharacter(entity, sprite); ((NonPlayerCharacter)character).SetConversation( ((NonPlayerCharacterData)c.Value).CurrentConversation); characters.Characters.Add(c.Key, character); } } } tilesetToolStripMenuItem.Enabled = true; mapLayerToolStripMenuItem.Enabled = true; charactersToolStripMenuItem.Enabled = true; chestsToolStripMenuItem.Enabled = true; keysToolStripMenuItem.Enabled = true; }
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); tilesetTexture = Game.Content.Load <Texture2D>(@"Tilesets\fire-tiles"); AnimatedTileset animatedSet = new AnimatedTileset(tilesetTexture, 8, 1, 64, 64); 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(5, 0, new Tile(14, 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)); TileMap map = new TileMap(tileset1, animatedSet, layer); map.AddTileset(tileset2); map.AddLayer(splatter); map.CollisionLayer.Collisions.Add(new Point(1, 0), CollisionType.Impassable); map.CollisionLayer.Collisions.Add(new Point(3, 0), CollisionType.Impassable); map.AnimatedTileLayer.AnimatedTiles.Add(new Point(5, 0), new AnimatedTile(0, 8)); 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; AnimatedSprite s = new AnimatedSprite( GameRef.Content.Load <Texture2D>(@"SpriteSheets\Eliza"), AnimationManager.Instance.Animations); s.Position = new Vector2(5 * Engine.TileWidth, 5 * Engine.TileHeight); EntityData ed = new EntityData("Eliza", 10, 10, 10, 10, 10, 10, "20|CON|12", "16|WIL|16", "0|0|0"); Entity e = new Entity("Eliza", ed, EntityGender.Female, EntityType.NPC); NonPlayerCharacter npc = new NonPlayerCharacter(e, s); npc.SetConversation("eliza1"); world.Levels[world.CurrentLevel].Characters.Add(npc); GamePlayScreen.World = world; CreateConversation(); ((NonPlayerCharacter)world.Levels[world.CurrentLevel].Characters[0]).SetConversation("eliza1"); }
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)); } } Stream textureStream = new FileStream(mapData.AnimatedTileset.TilesetImageName, FileMode.Open, FileAccess.Read); Texture2D aniamtedTexture = Texture2D.FromStream(GraphicsDevice, textureStream); animatedSet = new AnimatedTileset(aniamtedTexture, 8, 1, 64, 64); 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], animatedSet, (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; }
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); tilesetTexture = Game.Content.Load <Texture2D>(@"Tilesets\fire-tiles"); AnimatedTileset animatedSet = new AnimatedTileset(tilesetTexture, 8, 1, 64, 64); 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(5, 5, new Tile(0, 15)); 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, animatedSet, layer); map.AddTileset(tileset2); map.AddLayer(splatter); map.CollisionLayer.Collisions.Add(new Point(1, 0), CollisionType.Impassable); map.CollisionLayer.Collisions.Add(new Point(3, 0), CollisionType.Impassable); map.AnimatedTileLayer.AnimatedTiles.Add(new Point(5, 5), new AnimatedTile(0, 8)); Level level = new Level(map); World world = new World(GameRef, GameRef.ScreenRectangle); world.Levels.Add(level); world.CurrentLevel = 0; GamePlayScreen.World = world; }