summaryrefslogtreecommitdiff |
diff options
author | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2017-09-23 20:26:52 +0200 |
---|---|---|
committer | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2017-09-23 20:26:52 +0200 |
commit | 568309d0cfb5114accbc21962d5d23c3b9bf7036 (patch) | |
tree | 3db7174f104eba060dd1e6b545c74f984e209139 /client/elm/battlemap/src/Update | |
parent | dbad54ad228df4b70f56bf6be1380b6ae3064ac3 (diff) |
Fixes "Too much recursion" and some similar issues
Diffstat (limited to 'client/elm/battlemap/src/Update')
-rw-r--r-- | client/elm/battlemap/src/Update/EndTurn.elm | 2 | ||||
-rw-r--r-- | client/elm/battlemap/src/Update/SelectCharacter.elm | 65 |
2 files changed, 42 insertions, 25 deletions
diff --git a/client/elm/battlemap/src/Update/EndTurn.elm b/client/elm/battlemap/src/Update/EndTurn.elm index 2e02d19..3490d57 100644 --- a/client/elm/battlemap/src/Update/EndTurn.elm +++ b/client/elm/battlemap/src/Update/EndTurn.elm @@ -27,7 +27,7 @@ update_model model nav char_id = nav.current_location (\t -> {t | char_level = (Just char_id)}) ) - (Battlemap.Tile.set_navigation Battlemap.Direction.None) + (Battlemap.Tile.reset_tile) ), characters = (Dict.update 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 + } |