summaryrefslogtreecommitdiff |
diff options
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 + } |