summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/battle/src/View/Map.elm')
-rw-r--r--src/battle/src/View/Map.elm162
1 files changed, 162 insertions, 0 deletions
diff --git a/src/battle/src/View/Map.elm b/src/battle/src/View/Map.elm
new file mode 100644
index 0000000..ad10695
--- /dev/null
+++ b/src/battle/src/View/Map.elm
@@ -0,0 +1,162 @@
+module View.Map exposing (get_html)
+
+-- Elm -------------------------------------------------------------------------
+import Array
+
+import Html
+import Html.Attributes
+import Html.Lazy
+
+import List
+
+-- Map -------------------------------------------------------------------
+import Constants.UI
+
+import Struct.Map
+import Struct.Character
+import Struct.Event
+import Struct.Model
+import Struct.Navigator
+import Struct.UI
+
+import Util.Html
+
+import View.Map.Character
+import View.Map.Navigator
+import View.Map.Tile
+
+--------------------------------------------------------------------------------
+-- LOCAL -----------------------------------------------------------------------
+--------------------------------------------------------------------------------
+get_tiles_html : Struct.Map.Type -> (Html.Html Struct.Event.Type)
+get_tiles_html map =
+ (Html.div
+ [
+ (Html.Attributes.class "battle-tiles-layer"),
+ (Html.Attributes.style
+ [
+ (
+ "width",
+ (
+ (toString
+ (
+ (Struct.Map.get_width map)
+ * Constants.UI.tile_size
+ )
+ )
+ ++ "px"
+ )
+ ),
+ (
+ "height",
+ (
+ (toString
+ (
+ (Struct.Map.get_height map)
+ * Constants.UI.tile_size
+ )
+ )
+ ++ "px"
+ )
+ )
+ ]
+ )
+ ]
+ (List.map
+ (View.Map.Tile.get_html)
+ (Array.toList (Struct.Map.get_tiles map))
+ )
+ )
+
+maybe_print_navigator : (
+ Bool ->
+ (Maybe Struct.Navigator.Type) ->
+ (Html.Html Struct.Event.Type)
+ )
+maybe_print_navigator interactive maybe_nav =
+ let
+ name_suffix =
+ if (interactive)
+ then
+ "interactive"
+ else
+ "non-interactive"
+ in
+ case maybe_nav of
+ (Just nav) ->
+ (Html.div
+ [
+ (Html.Attributes.class ("battle-navigator" ++ name_suffix))
+ ]
+ (View.Map.Navigator.get_html
+ (Struct.Navigator.get_summary nav)
+ interactive
+ )
+ )
+
+ Nothing ->
+ (Util.Html.nothing)
+
+get_characters_html : (
+ Struct.Model.Type ->
+ (Array.Array Struct.Character.Type) ->
+ (Html.Html Struct.Event.Type)
+ )
+get_characters_html model characters =
+ (Html.div
+ [
+ (Html.Attributes.class "battle-characters")
+ ]
+ (List.map
+ (View.Map.Character.get_html model)
+ (Array.toList model.characters)
+ )
+ )
+
+--------------------------------------------------------------------------------
+-- EXPORTED --------------------------------------------------------------------
+--------------------------------------------------------------------------------
+get_html : (
+ Struct.Model.Type ->
+ (Html.Html Struct.Event.Type)
+ )
+get_html model =
+ (Html.div
+ [
+ (Html.Attributes.class "battle-actual"),
+ (Html.Attributes.style
+ (
+ if ((Struct.UI.get_zoom_level model.ui) == 1)
+ then []
+ else
+ [
+ (
+ "transform",
+ (
+ "scale("
+ ++
+ (toString (Struct.UI.get_zoom_level model.ui))
+ ++ ")"
+ )
+ )
+ ]
+ )
+ )
+ ]
+ [
+ (Html.Lazy.lazy (get_tiles_html) model.map),
+ -- Not in lazy mode, because I can't easily get rid of that 'model'
+ -- parameter.
+ (get_characters_html model model.characters),
+ (Html.Lazy.lazy2
+ (maybe_print_navigator)
+ True
+ model.char_turn.navigator
+ ),
+ (Html.Lazy.lazy2
+ (maybe_print_navigator)
+ False
+ (Struct.UI.try_getting_displayed_nav model.ui)
+ )
+ ]
+ )