| summaryrefslogtreecommitdiff | 
diff options
Diffstat (limited to 'client/elm/battlemap/src/Update/SelectCharacter.elm')
| -rw-r--r-- | client/elm/battlemap/src/Update/SelectCharacter.elm | 65 | 
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 +            } | 


