diff --git a/src/Map.hs b/src/Map.hs new file mode 100644 index 0000000..4adff66 --- /dev/null +++ b/src/Map.hs @@ -0,0 +1,9 @@ +module Map where + +import Linear + +-- internal imports + +import Types + + diff --git a/src/Types/GameMap.hs b/src/Types/GameMap.hs index f5cb04f..7a4cd96 100644 --- a/src/Types/GameMap.hs +++ b/src/Types/GameMap.hs @@ -5,21 +5,22 @@ import Data.Vector import Linear data LevelMap = LevelMap - { mapLayers :: Vector MapLayer - , mapWalkLayer :: Word - , mapDimensions :: V2 Word - , mapTileMap :: TileMap + { mapLayers :: Vector MapLayer -- | Layer stack + , mapWalkLayer :: Word -- | Collision layer index in stack + , mapDimensions :: V2 Word -- | Dimension of map in tiles + , mapTileMap :: TileMap -- | The tile map + , mapStartPos :: V2 Word -- | Player start position } deriving (Eq, Show) newtype MapLayer = MapLayer - { layerTiles :: Vector Tile + { layerTiles :: Vector Tile -- | Tiles of this layer } deriving (Eq, Show) data Tile = Tile - { tileOffset :: V2 Float - , tileType :: TileType + { tileOffset :: V2 Float -- | Offset of this tile on the tile map + , tileType :: TileType -- | Type of tile } deriving (Eq, Show) @@ -30,7 +31,18 @@ data TileType deriving (Enum, Ord, Eq, Show) data TileMap = TileMap - { tileMapDimensions :: V2 Word - , tileMapPath :: FilePath - , tileMapIndex :: Word + { tileMapDimensions :: V2 Word -- | Dimensions of tile map image in pixels + , tileMapPath :: FilePath -- | Filepath to image + , tileMapIndex :: Word -- | Index on GPU } + +data LevelDescriptor = LevelDescriptor + { levelLayerPath :: [(Word, FilePath)] -- | Indexed paths aths to the layers + , levelWalkLayer :: Word -- | Index of walk layer + , levelTileMap :: FilePath -- | Filepath to tile map + , levelStartPos .. (Word, Word) -- | Player start position + -- , levelCollectibles :: [(V2 Word, ())] -- | TODO; Collectibles and their tile coords + -- , levelEnemies :: [(V2 Word, ())] -- | TODO: Enemies and their tile coords + -- , levelInteractables :: [(V2 Word, ())] -- | TODO: Interactables and their coords + } + deriving (Eq, Show)