From 568309d0cfb5114accbc21962d5d23c3b9bf7036 Mon Sep 17 00:00:00 2001 From: Nathanael Sensfelder Date: Sat, 23 Sep 2017 20:26:52 +0200 Subject: Fixes "Too much recursion" and some similar issues --- .../elm/battlemap/src/Update/SelectCharacter.elm | 65 ++++++++++++++-------- 1 file changed, 41 insertions(+), 24 deletions(-) (limited to 'client/elm/battlemap/src/Update/SelectCharacter.elm') diff --git a/client/elm/battlemap/src/Update/SelectCharacter.elm b/client/elm/battlemap/src/Update/SelectCharacter.elm index 7ee8dfa..c8a0ddb 100644 --- a/client/elm/battlemap/src/Update/SelectCharacter.elm +++ b/client/elm/battlemap/src/Update/SelectCharacter.elm @@ -6,40 +6,57 @@ import Character import Battlemap import Battlemap.Direction +import Battlemap.Location import Battlemap.Navigator import Battlemap.Tile import Battlemap.RangeIndicator import Model +display_range : ( + Battlemap.Location.Ref -> + Battlemap.RangeIndicator.Type -> + Battlemap.Type -> + Battlemap.Type + ) +display_range loc_ref indicator bmap = + (Battlemap.apply_to_tile_unsafe + bmap + (Battlemap.Location.from_ref loc_ref) + (\e -> {e | mod_level = (Just Battlemap.Tile.CanBeReached)}) + ) + + apply_to : Model.Type -> Character.Ref -> Model.Type apply_to model char_id = - {model | - selection = (Just char_id), - battlemap = - (Battlemap.apply_to_all_tiles - model.battlemap - (Battlemap.Tile.set_navigation Battlemap.Direction.None) - ), - navigator = - (case (Dict.get char_id model.characters) of - Nothing -> Nothing - (Just char) -> - (Just - (Battlemap.Navigator.new_navigator - char.location - char.movement_points - ) - ) - ), - range_indicator = - (case (Dict.get char_id model.characters) of - Nothing -> Dict.empty - (Just char) -> + case (Dict.get char_id model.characters) of + Nothing -> model + (Just char) -> + let + new_range_indicator = (Battlemap.RangeIndicator.generate model.battlemap char.location char.movement_points ) - ) - } + in + {model | + selection = (Just char_id), + battlemap = + (Battlemap.apply_to_all_tiles + (Dict.foldl + (display_range) + model.battlemap + new_range_indicator + ) + (Battlemap.Tile.set_navigation Battlemap.Direction.None) + ), + navigator = + (Just + (Battlemap.Navigator.new_navigator + char.location + char.movement_points + ) + ), + range_indicator = new_range_indicator + } -- cgit v1.2.3-70-g09d2