| summaryrefslogtreecommitdiff | 
diff options
Diffstat (limited to 'src/shared/battle-map/BattleMap/View')
| -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) +         ) +      ) | 


