module View.Battlemap exposing (get_html)
import Array
import List
import Html
import Html.Attributes
import Html.Events
import Battlemap
import Character
import View.Battlemap.Tile
import View.Battlemap.Navigator
import Event
--------------------------------------------------------------------------------
-- LOCAL -----------------------------------------------------------------------
--------------------------------------------------------------------------------
char_on_map : Int -> Character.Type -> (Html.Html Event.Type)
char_on_map tile_size char =
let
char_loc = (Character.get_location char)
in
(Html.div
[
(Html.Attributes.class "battlemap-character-icon"),
(Html.Attributes.class
("asset-character-icon-" ++ (Character.get_icon_id char))
),
(Html.Events.onClick
(Event.CharacterSelected (Character.get_ref char))
),
(Html.Attributes.style
[
("top", ((toString (char_loc.y * tile_size)) ++ "px")),
("left", ((toString (char_loc.x * tile_size)) ++ "px"))
]
)
]
[
]
)
--------------------------------------------------------------------------------
-- EXPORTED --------------------------------------------------------------------
--------------------------------------------------------------------------------
get_html : (
Battlemap.Type ->
Int ->
(List Character.Type) ->
(Html.Html Event.Type)
)
get_html battlemap tile_size characters =
(Html.div
[
(Html.Attributes.class "battlemap-container")
]
(
(List.map
(View.Battlemap.Tile.get_html tile_size)
(Array.toList (Battlemap.get_tiles battlemap))
)
++
(List.map
(char_on_map tile_size)
characters
)
++
case (Battlemap.try_getting_navigator_summary battlemap) of
(Just nav_summary) ->
(View.Battlemap.Navigator.get_html tile_size nav_summary)
Nothing -> [(Html.text "")]
)
)