summaryrefslogtreecommitdiff |
diff options
-rw-r--r-- | src/battlemap/src/Action/Scroll.elm | 21 | ||||
-rw-r--r-- | src/battlemap/src/Constants/UI.elm | 6 | ||||
-rw-r--r-- | src/battlemap/src/Update/DisplayCharacterInfo.elm | 24 |
3 files changed, 44 insertions, 7 deletions
diff --git a/src/battlemap/src/Action/Scroll.elm b/src/battlemap/src/Action/Scroll.elm index e84e6d5..b949fc7 100644 --- a/src/battlemap/src/Action/Scroll.elm +++ b/src/battlemap/src/Action/Scroll.elm @@ -17,15 +17,23 @@ import Struct.Location -------------------------------------------------------------------------------- -- FIXME: Scrolling so that the focused element is in the middle, not in the top -- left corner, would be much better. +tile_to_px : Struct.UI.Type -> Int -> Float +tile_to_px ui t = + ( + (toFloat t) + * (Struct.UI.get_zoom_level ui) + * (toFloat Constants.UI.tile_size) + ) scroll_to_x : Int -> Struct.UI.Type -> (Task.Task Dom.Error ()) scroll_to_x x ui = (Dom.Scroll.toX Constants.UI.viewer_html_id ( - (toFloat x) - * (Struct.UI.get_zoom_level ui) - * (toFloat Constants.UI.tile_size) + (tile_to_px ui x) + - Constants.UI.half_viewer_min_width + -- center on that tile, not its top left corner + + ((tile_to_px ui 1) / 2.0) ) ) @@ -34,9 +42,10 @@ scroll_to_y y ui = (Dom.Scroll.toY Constants.UI.viewer_html_id ( - (toFloat y) - * (Struct.UI.get_zoom_level ui) - * (toFloat Constants.UI.tile_size) + (tile_to_px ui y) + - Constants.UI.half_viewer_min_height + -- center on that tile, not its top left corner + + ((tile_to_px ui 1) / 2.0) ) ) diff --git a/src/battlemap/src/Constants/UI.elm b/src/battlemap/src/Constants/UI.elm index 303f69e..701caac 100644 --- a/src/battlemap/src/Constants/UI.elm +++ b/src/battlemap/src/Constants/UI.elm @@ -5,3 +5,9 @@ tile_size = 32 viewer_html_id : String viewer_html_id = "battlemap_viewer" + +half_viewer_min_width : Float +half_viewer_min_width = 109.0 + +half_viewer_min_height : Float +half_viewer_min_height = 180.0 diff --git a/src/battlemap/src/Update/DisplayCharacterInfo.elm b/src/battlemap/src/Update/DisplayCharacterInfo.elm index 25ddb6c..37fe88e 100644 --- a/src/battlemap/src/Update/DisplayCharacterInfo.elm +++ b/src/battlemap/src/Update/DisplayCharacterInfo.elm @@ -1,7 +1,11 @@ module Update.DisplayCharacterInfo exposing (apply_to) -- Elm ------------------------------------------------------------------------- +import Dict +import Task -- Battlemap ------------------------------------------------------------------- +import Action.Scroll + import Struct.Character import Struct.Event import Struct.Model @@ -10,6 +14,24 @@ import Struct.UI -------------------------------------------------------------------------------- -- LOCAL ----------------------------------------------------------------------- -------------------------------------------------------------------------------- +scroll_to_char : ( + Struct.Model.Type -> + Struct.Character.Ref -> + (Cmd Struct.Event.Type) + ) +scroll_to_char model char_ref = + case (Dict.get char_ref model.characters) of + (Just char) -> + (Task.attempt + (Struct.Event.attempted) + (Action.Scroll.to + (Struct.Character.get_location char) + model.ui + ) + ) + + Nothing -> + Cmd.none -------------------------------------------------------------------------------- -- EXPORTED -------------------------------------------------------------------- @@ -31,5 +53,5 @@ apply_to model target_ref = ) ) }, - Cmd.none + (scroll_to_char model target_ref) ) |