using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; using V3.Camera; using V3.Objects; namespace V3.Map { /// /// Manager for loading and drawing game maps. Also holds information about map attributes. /// [SuppressMessage("ReSharper", "UnusedMember.Global")] public interface IMapManager { /// /// A list of map areas (rectangle-sized). /// List Areas { get; } /// /// Size of the shown map in pixels. /// Point SizeInPixel { get; } /// /// Size of the map in tiles. (Some tiles are cut off at the edges.) /// Point SizeInTiles { get; } /// /// Size of a single tile in pixels. /// Point TileSize { get; } /// /// Number of cells the pathfinding grid consists of. /// Point PathfindingGridSize { get; } /// /// Size of a single cell of the pathfinding grid in pixels. /// Point PathfindingCellSize { get; } /// /// File name of the loaded map (without suffix). /// string FileName { get; } /// /// Efficiently draw the floor layer. Only draw the tiles seen by the camera. /// /// /// void DrawFloor(SpriteBatch spriteBatch, ICamera camera); /// /// Load a map file and create the map layers and pathfinding information. /// /// Name of the map file (without suffix). void Load(string fileName); /// /// Returns all objects in the objects layer. /// /// List of all static game objects imported from the map. List GetObjects(); /// /// Returns the pathfinding grid for passing to the pathfinder. /// /// A grid used for pathfinding. PathfindingGrid GetPathfindingGrid(); /// /// Efficiently draw the pathfinding grid. For debugging purposes. /// /// Sprite batch used. /// Current camera for calculating the shown screen. void DrawPathfindingGrid(SpriteBatch spriteBatch, ICamera camera); /// /// Draws the minimap to specified position. /// /// Sprite batch used. /// Where to draw the minimap and which size. void DrawMinimap(SpriteBatch spriteBatch, Rectangle position); /// /// Automatically creates an initial population from the map data and returns it. /// /// Factory for creating creatues. /// Pathfinder is used for checking collisions when creating creatures. /// Initial population in a list. List GetPopulation(CreatureFactory creatureFactory, Pathfinder pathfinder); } }