| summaryrefslogtreecommitdiff | 
diff options
| author | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2017-09-27 10:31:16 +0200 | 
|---|---|---|
| committer | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2017-09-27 10:31:16 +0200 | 
| commit | 2c9b2af9ac011a871c5c02d3e2258fca73a98880 (patch) | |
| tree | 653db3959f444f1065f05658650c6ec81863d627 /elm/battlemap/src/Battlemap/Html.elm | |
| parent | 33e57128d48a012533c42635f52037fcdedd4c56 (diff) | |
Splits client and server into two repositories.
Diffstat (limited to 'elm/battlemap/src/Battlemap/Html.elm')
| -rw-r--r-- | elm/battlemap/src/Battlemap/Html.elm | 100 | 
1 files changed, 100 insertions, 0 deletions
diff --git a/elm/battlemap/src/Battlemap/Html.elm b/elm/battlemap/src/Battlemap/Html.elm new file mode 100644 index 0000000..6506c0f --- /dev/null +++ b/elm/battlemap/src/Battlemap/Html.elm @@ -0,0 +1,100 @@ +module Battlemap.Html exposing (view) + +import Array + +import Html +import Html.Events + +import Battlemap +import Battlemap.Tile +import Battlemap.Direction + +import Event + +type alias GridBuilder = +   { +      row : (List (Html.Html Event.Type)), +      columns : (List (Html.Html Event.Type)), +      row_size : Int, +      bmap : Battlemap.Type +   } + +nav_level_to_text : Battlemap.Tile.Type -> String +nav_level_to_text t = +   case t.nav_level of +      Battlemap.Direction.Right -> "R" +      Battlemap.Direction.Left -> "L" +      Battlemap.Direction.Up -> "U" +      Battlemap.Direction.Down -> "D" +      Battlemap.Direction.None -> (toString t.floor_level) + +view_battlemap_cell : Battlemap.Tile.Type -> (Html.Html Event.Type) +view_battlemap_cell t = +   case t.char_level of +      Nothing -> +         (Html.td +            [ (Html.Events.onClick (Event.SelectTile t.location)) ] +            [ +               (Html.text +                  (case t.mod_level of +                     Nothing -> "[_]" +                     (Just Battlemap.Tile.CanBeReached) -> "[M]" +                     (Just Battlemap.Tile.CanBeAttacked) -> "[A]" +                  ) +               ), +               (Html.text (nav_level_to_text t)) +            ] +         ) +      (Just char_id) -> +         (Html.td +            [ (Html.Events.onClick (Event.SelectCharacter char_id)) ] +            [ +               (Html.text ("[" ++ char_id ++ "]")), +               (Html.text (nav_level_to_text t)) +            ] +         ) + + +foldr_to_html : Battlemap.Tile.Type -> GridBuilder -> GridBuilder +foldr_to_html t gb = +   if (gb.row_size == gb.bmap.width) +   then +      {gb | +         row = [(view_battlemap_cell t)], +         row_size = 1, +         columns = +            ( +               (Html.tr [] gb.row) :: gb.columns +            ) +      } +   else +      {gb | +         row = ((view_battlemap_cell t) :: gb.row), +         row_size = (gb.row_size + 1) +      } + +grid_builder_to_html : GridBuilder -> (List (Html.Html Event.Type)) +grid_builder_to_html gb = +   if (gb.row_size == 0) +   then +      gb.columns +   else +     ((Html.tr [] gb.row) :: gb.columns) + +view : Battlemap.Type -> (Html.Html Event.Type) +view battlemap = +   (Html.table +      [] +      (grid_builder_to_html +         (Array.foldr +            (foldr_to_html) +            { +               row = [], +               columns = [], +               row_size = 0, +               bmap = battlemap +            } +            battlemap.content +         ) +      ) +   )  | 


