summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathanael Sensfelder <SpamShield0@MultiAgentSystems.org>2017-09-27 10:31:16 +0200
committerNathanael Sensfelder <SpamShield0@MultiAgentSystems.org>2017-09-27 10:31:16 +0200
commit2c9b2af9ac011a871c5c02d3e2258fca73a98880 (patch)
tree653db3959f444f1065f05658650c6ec81863d627 /elm/battlemap/src/Battlemap/Html.elm
parent33e57128d48a012533c42635f52037fcdedd4c56 (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.elm100
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
+ )
+ )
+ )