public static void Init(VillageMap map, Game game) { Map = map; CurrentGame = game; _tileGraphics = new Dictionary <Tile, Texture2D>(); MapStructManager = new MapStructManager <MapStructDef>(Map); var defs = Village.Core.Loader.DefLoader.LoadDefs <MapStructDef>("C:/temp"); var mapStruc = new BaseMapStructInstance <MapStructDef>(MapStructManager, Map, defs.First(), 2, 1); mapStruc.Def.SpriteDetails = new Village.Core.SpriteDetails { SpriteHeight = 2, SpriteWidth = 2, SpriteOffsetX = 0, SpriteOffsetY = -1, SpriteName = "house" }; MapStructManager.TryAddStructure(mapStruc); DebugDef = defs.First(); MapStructManager.TryAddStructure(new BaseMapStructInstance <MapStructDef>(MapStructManager, Map, defs.Last(), 8, 3)); foreach (var tile in Map.Tiles) { if (defaultGraphic == null) { defaultGraphic = MakeTileGraphic(tile); } _tileGraphics.Add(tile, defaultGraphic); } }
public static void DrawMap(GameTime gameTime, SpriteBatch spriteBatch, GraphicsDeviceManager graphics) { if (SpriteFont == null) { SpriteFont = CurrentGame.Content.Load <SpriteFont>("8Bit"); } spriteBatch.Begin(); foreach (var tile in _tileGraphics) { var coor = new Vector2(tile.Key.X * Scaled_Width + xOffset, tile.Key.Y * Scaled_Height + yOffset); var dest = new Rectangle((int)coor.X, (int)coor.Y, Scaled_Width, Scaled_Height); var rect = tile.Value; var color = Color.Wheat; var mapStuc = MapStructManager.StructureAt(tile.Key.X, tile.Key.Y); if (mapStuc != null && mapStuc.XAnchor == tile.Key.X && mapStuc.YAnchor == tile.Key.Y) { var scaledDest = new Rectangle( dest.X + (mapStuc.MapStructDef.SpriteDetails.SpriteOffsetX * Tile_Width), dest.Y + (mapStuc.MapStructDef.SpriteDetails.SpriteOffsetY * Tile_Height), dest.Width * mapStuc.MapStructDef.SpriteDetails.SpriteWidth, dest.Height * mapStuc.MapStructDef.SpriteDetails.SpriteHeight); spriteBatch.Draw(Game1.texts["house"], scaledDest, color); } else if (mapStuc != null) { } else { spriteBatch.Draw(rect, dest, color);; spriteBatch.DrawString(SpriteFont, string.Format("({0},{1})", tile.Key.X, tile.Key.Y), coor + new Vector2(10, 10), Color.Black); } if (DebugTool.CurrentX == tile.Key.X && DebugTool.CurrentY == tile.Key.Y) { var text = DebugTool.createCircleText(Tile_Width / 2, graphics.GraphicsDevice); if (mapStuc == null) { spriteBatch.Draw(text, dest, Color.Gray); } else { spriteBatch.Draw(text, dest, Color.Red); } } } wasLast++; if (wasLast > 100) { wasLast = -100; } spriteBatch.End(); }
public static void MakeNewStructAtLocation(int x, int y) { var mapStruc = new BaseMapStructInstance <MapStructDef>(MapStructManager, Map, DebugDef, x, y); mapStruc.Def.SpriteDetails = new Village.Core.SpriteDetails { SpriteHeight = 2, SpriteWidth = 2, SpriteOffsetX = 0, SpriteOffsetY = -1, SpriteName = "house" }; MapStructManager.TryAddStructure(mapStruc); }