summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'client/elm/battlemap/src/Update/SelectCharacter.elm')
-rw-r--r--client/elm/battlemap/src/Update/SelectCharacter.elm65
1 files changed, 41 insertions, 24 deletions
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
+ }