summaryrefslogtreecommitdiff |
diff options
Diffstat (limited to 'src/shared/battle-map/BattleMap/View/Tile.elm')
-rw-r--r-- | src/shared/battle-map/BattleMap/View/Tile.elm | 242 |
1 files changed, 242 insertions, 0 deletions
diff --git a/src/shared/battle-map/BattleMap/View/Tile.elm b/src/shared/battle-map/BattleMap/View/Tile.elm new file mode 100644 index 0000000..6039ff4 --- /dev/null +++ b/src/shared/battle-map/BattleMap/View/Tile.elm @@ -0,0 +1,242 @@ +module BattleMap.View.Tile exposing (get_html, get_html_extra, get_content_html) + +-- Elm ------------------------------------------------------------------------- +import Html +import Html.Attributes +import Html.Events + +-- Battle Map ------------------------------------------------------------------ +import Constants.UI +import Constants.IO + +import BattleMap.Struct.Location +import BattleMap.Struct.TileInstance + +-- Local ----------------------------------------------------------------------- +import Struct.Event + +-------------------------------------------------------------------------------- +-- LOCAL ----------------------------------------------------------------------- +-------------------------------------------------------------------------------- +get_layer_html : ( + Int -> + BattleMap.Struct.TileInstance.Border -> + (Html.Html Struct.Event.Type) + ) +get_layer_html index border = + (Html.div + [ + (Html.Attributes.class ("tile-icon-f-" ++ (String.fromInt index))), + (Html.Attributes.style + "background-image" + ( + "url(" + ++ Constants.IO.tile_assets_url + ++ (BattleMap.Struct.TileInstance.get_border_class_id border) + ++ "-f-" + ++ (BattleMap.Struct.TileInstance.get_border_variant_id border) + ++ ".svg)" + ) + ) + ] + [] + ) + +-------------------------------------------------------------------------------- +-- EXPORTED -------------------------------------------------------------------- +-------------------------------------------------------------------------------- +get_content_html : ( + BattleMap.Struct.TileInstance.Type -> + (List (Html.Html Struct.Event.Type)) + ) +get_content_html tile = + ( + (Html.div + [ + (Html.Attributes.class "tile-icon-bg"), + (Html.Attributes.style + "background-image" + ( + "url(" + ++ Constants.IO.tile_assets_url + ++ (BattleMap.Struct.TileInstance.get_class_id tile) + ++ "-bg.svg)" + ) + ) + ] + [] + ) + (Html.div + [ + (Html.Attributes.class "tile-icon-bg"), + (Html.Attributes.style + "background-image" + ( + "url(" + ++ Constants.IO.tile_assets_url + ++ (BattleMap.Struct.TileInstance.get_class_id tile) + ++ "-bg.svg)" + ) + ) + ] + [] + ) + :: + ( + (Html.div + [ + (Html.Attributes.class "tile-icon-dt"), + (Html.Attributes.style + "background-image" + ( + "url(" + ++ Constants.IO.tile_assets_url + ++ (BattleMap.Struct.TileInstance.get_class_id tile) + ++ "-v-" + ++ (BattleMap.Struct.TileInstance.get_variant_id tile) + ++ ".svg)" + ) + ) + ] + [] + ) + :: + (List.indexedMap + (get_layer_html) + (BattleMap.Struct.TileInstance.get_borders tile) + ) + ) + ) + +get_html : ( + Bool -> + BattleMap.Struct.TileInstance.Type -> + (Html.Html Struct.Event.Type) + ) +get_html display_cost tile = + let tile_loc = (BattleMap.Struct.TileInstance.get_location tile) in + (Html.div + [ + (Html.Attributes.class "tile-icon"), + (Html.Attributes.class "tiled"), + (Html.Attributes.class + ( + "tile-variant-" + ++ + (String.fromInt + (BattleMap.Struct.TileInstance.get_local_variant_ix tile) + ) + ) + ), + (Html.Attributes.class "clickable"), + (Html.Events.onClick + (Struct.Event.TileSelected + (BattleMap.Struct.Location.get_ref tile_loc) + ) + ), + (Html.Attributes.style + "top" + ( + (String.fromInt (tile_loc.y * Constants.UI.tile_size)) + ++ "px" + ) + ), + (Html.Attributes.style + "left" + ( + (String.fromInt (tile_loc.x * Constants.UI.tile_size)) + ++ "px" + ) + ) + ] + ( + if (display_cost) + then + ( + (Html.div + [ + (Html.Attributes.class "tile-icon-cost") + ] + [ + (Html.text + (String.fromInt + (BattleMap.Struct.TileInstance.get_cost tile) + ) + ) + ] + ) + :: (get_content_html tile) + ) + else (get_content_html tile) + ) + ) + +get_html_with_extra : ( + Bool -> + (List Html.Attributes.Attribute) -> + BattleMap.Struct.TileInstance.Type -> + (Html.Html Struct.Event.Type) + ) +get_html_with_extra display_cost extra_classes tile = + let tile_loc = (BattleMap.Struct.TileInstance.get_location tile) in + (Html.div + ( + extra_classes + ++ + [ + (Html.Attributes.class "tile-icon"), + (Html.Attributes.class "tiled"), + (Html.Attributes.class + ( + "tile-variant-" + ++ + (String.fromInt + (BattleMap.Struct.TileInstance.get_local_variant_ix + tile + ) + ) + ) + ), + (Html.Attributes.class "clickable"), + (Html.Events.onClick + (Struct.Event.TileSelected + (BattleMap.Struct.Location.get_ref tile_loc) + ) + ), + (Html.Attributes.style + "top" + ( + (String.fromInt (tile_loc.y * Constants.UI.tile_size)) + ++ "px" + ) + ), + (Html.Attributes.style + "left" + ( + (String.fromInt (tile_loc.x * Constants.UI.tile_size)) + ++ "px" + ) + ) + ] + ) + ( + if (display_cost) + then + ( + (Html.div + [ + (Html.Attributes.class "tile-icon-cost") + ] + [ + (Html.text + (String.fromInt + (BattleMap.Struct.TileInstance.get_cost tile) + ) + ) + ] + ) + :: (get_content_html tile) + ) + else (get_content_html tile) + ) + ) |