summaryrefslogtreecommitdiff |
diff options
Diffstat (limited to 'client/elm/battlemap/src/Battlemap.elm')
-rw-r--r-- | client/elm/battlemap/src/Battlemap.elm | 55 |
1 files changed, 29 insertions, 26 deletions
diff --git a/client/elm/battlemap/src/Battlemap.elm b/client/elm/battlemap/src/Battlemap.elm index ef24c80..309b538 100644 --- a/client/elm/battlemap/src/Battlemap.elm +++ b/client/elm/battlemap/src/Battlemap.elm @@ -1,39 +1,30 @@ module Battlemap exposing ( - Battlemap, - random, + Type, apply_to_tile, apply_to_tile_unsafe, has_location, apply_to_all_tiles ) -import Array exposing (Array, set, get, map) +import Array -import Battlemap.Tile exposing (Tile, generate) -import Battlemap.Direction exposing (Direction(..)) -import Battlemap.Location exposing (Location) +import Battlemap.Tile +import Battlemap.Direction +import Battlemap.Location -type alias Battlemap = +type alias Type = { width : Int, height : Int, - content : (Array Tile) + content : (Array.Array Battlemap.Tile.Type) } -random : Battlemap -random = - { - width = 6, - height = 6, - content = (generate 6 6) - } - -location_to_index : Battlemap -> Location -> Int +location_to_index : Type -> Battlemap.Location.Type -> Int location_to_index bmap loc = ((loc.y * bmap.width) + loc.x) -has_location : Battlemap -> Location -> Bool +has_location : Type -> Battlemap.Location.Type -> Bool has_location bmap loc = ( (loc.x >= 0) @@ -42,17 +33,24 @@ has_location bmap loc = && (loc.y < bmap.height) ) -apply_to_all_tiles : Battlemap -> (Tile -> Tile) -> Battlemap +apply_to_all_tiles : ( + Type -> (Battlemap.Tile.Type -> Battlemap.Tile.Type) -> Type + ) apply_to_all_tiles bmap fun = {bmap | - content = (map fun bmap.content) + content = (Array.map fun bmap.content) } -apply_to_tile : Battlemap -> Location -> (Tile -> Tile) -> (Maybe Battlemap) +apply_to_tile : ( + Type -> + Battlemap.Location.Type -> + (Battlemap.Tile.Type -> Battlemap.Tile.Type) -> + (Maybe Type) + ) apply_to_tile bmap loc fun = let index = (location_to_index bmap loc) - at_index = (get index bmap.content) + at_index = (Array.get index bmap.content) in case at_index of Nothing -> @@ -61,7 +59,7 @@ apply_to_tile bmap loc fun = (Just {bmap | content = - (set + (Array.set index (fun tile) bmap.content @@ -69,18 +67,23 @@ apply_to_tile bmap loc fun = } ) -apply_to_tile_unsafe : Battlemap -> Location -> (Tile -> Tile) -> Battlemap +apply_to_tile_unsafe : ( + Type -> + Battlemap.Location.Type -> + (Battlemap.Tile.Type -> Battlemap.Tile.Type) -> + Type + ) apply_to_tile_unsafe bmap loc fun = let index = (location_to_index bmap loc) - at_index = (get index bmap.content) + at_index = (Array.get index bmap.content) in case at_index of Nothing -> bmap (Just tile) -> {bmap | content = - (set + (Array.set index (fun tile) bmap.content |