summaryrefslogtreecommitdiff |
diff options
Diffstat (limited to 'client/elm/battlemap/src/Battlemap/Html.elm')
-rw-r--r-- | client/elm/battlemap/src/Battlemap/Html.elm | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/client/elm/battlemap/src/Battlemap/Html.elm b/client/elm/battlemap/src/Battlemap/Html.elm new file mode 100644 index 0000000..d14e075 --- /dev/null +++ b/client/elm/battlemap/src/Battlemap/Html.elm @@ -0,0 +1,84 @@ +module Battlemap.Html exposing (view) + +import Html exposing (Html, text, table, tr, td) +-- import List as Lt exposing (map) +import Array as Ay exposing (foldr) + +import Update exposing (Msg) +import Model exposing (Model) + +import Battlemap exposing (Battlemap, random) +import Battlemap.Tile exposing (Tile) + +view_battlemap_cell : Tile -> (Html Msg) +view_battlemap_cell t = + (td + [] + [ (text (toString t.floor_level)) ] + ) + +type alias GridBuilder = + { + row : (List (Html Msg)), + columns : (List (Html Msg)), + row_size : Int, + bmap : Battlemap + } + +foldr_to_html : Tile -> GridBuilder -> GridBuilder +foldr_to_html t bg = + if (bg.row_size == bg.bmap.width) + then + {bg | + row = [(view_battlemap_cell t)], + row_size = 1, + columns = + ( + (tr [] bg.row) :: bg.columns + ) + } + else + {bg | + row = ((view_battlemap_cell t) :: bg.row), + row_size = (bg.row_size + 1) + } + +grid_builder_to_html : GridBuilder -> (List (Html Msg)) +grid_builder_to_html gb = + if (gb.row_size == 0) + then + gb.columns + else + (grid_builder_to_html + {gb | + row = [], + row_size = 0, + columns = + ( + (tr [] gb.row) :: gb.columns + ) + } + ) + +view_battlemap : Battlemap -> (Html Msg) +view_battlemap battlemap = + (table + [] + (grid_builder_to_html + (Ay.foldr + (foldr_to_html) + { + row = [], + columns = [], + row_size = 0, + bmap = battlemap + } + battlemap.content + ) + ) + ) + + +view : Model -> (Html Msg) +view m = + (view_battlemap random) |