| summaryrefslogtreecommitdiff | 
diff options
Diffstat (limited to 'client/elm/battlemap/src/Update')
| -rw-r--r-- | client/elm/battlemap/src/Update/DirectionRequest.elm | 28 | ||||
| -rw-r--r-- | client/elm/battlemap/src/Update/EndTurn.elm | 48 | ||||
| -rw-r--r-- | client/elm/battlemap/src/Update/SelectCharacter.elm | 32 | 
3 files changed, 108 insertions, 0 deletions
| diff --git a/client/elm/battlemap/src/Update/DirectionRequest.elm b/client/elm/battlemap/src/Update/DirectionRequest.elm new file mode 100644 index 0000000..6f30866 --- /dev/null +++ b/client/elm/battlemap/src/Update/DirectionRequest.elm @@ -0,0 +1,28 @@ +module Update.DirectionRequest exposing (apply_to) + +import Dict + +import Battlemap.Direction +import Battlemap.Navigator + +import Model + +apply_to : Model.Type -> Battlemap.Direction.Type -> Model.Type +apply_to model dir = +   case (model.selection, model.navigator) of +      (Nothing, _) -> model +      (_ , Nothing) -> model +      ((Just char_id), (Just nav)) -> +         let +            (new_bmap, new_nav) = +               (Battlemap.Navigator.go +                  model.battlemap +                  nav +                  dir +                  (Dict.values model.characters) +               ) +         in +            {model | +               battlemap = new_bmap, +               navigator = (Just new_nav) +            } diff --git a/client/elm/battlemap/src/Update/EndTurn.elm b/client/elm/battlemap/src/Update/EndTurn.elm new file mode 100644 index 0000000..3fb479b --- /dev/null +++ b/client/elm/battlemap/src/Update/EndTurn.elm @@ -0,0 +1,48 @@ +module Update.EndTurn exposing (apply_to) + +import Dict + +import Battlemap +import Battlemap.Navigator + +import Model + +update_model : Model.Type -> Battlemap.Navigator.Type -> String -> Model.Type +update_model model nav char_id = +   case (Dict.get char_id model.characters) of +      Nothing -> model +      (Just char) -> +         {model | +            navigator = Nothing, +            battlemap = +               (Battlemap.apply_to_all_tiles +                  (Battlemap.apply_to_tile_unsafe +                     (Battlemap.apply_to_tile_unsafe +                        model.battlemap +                        char.location +                        (\t -> {t | char_level = Nothing}) +                     ) +                     nav.current_location +                     (\t -> {t | char_level = (Just char_id)}) +                  ) +                  (Battlemap.Navigator.reset_navigation) +               ), +            characters = +               (Dict.update +                  char_id +                  (\mc -> +                     case mc of +                        Nothing -> Nothing +                        (Just c) -> +                           (Just {c | location = nav.current_location}) +                  ) +                  model.characters +               ) +         } + +apply_to : Model.Type -> Model.Type +apply_to model = +   case (model.navigator, model.selection) of +      (_, Nothing) -> model +      (Nothing, _) -> model +      ((Just nav), (Just char_id)) -> (update_model model nav char_id) diff --git a/client/elm/battlemap/src/Update/SelectCharacter.elm b/client/elm/battlemap/src/Update/SelectCharacter.elm new file mode 100644 index 0000000..c9c1c94 --- /dev/null +++ b/client/elm/battlemap/src/Update/SelectCharacter.elm @@ -0,0 +1,32 @@ +module Update.SelectCharacter exposing (apply_to) + +import Dict + +import Character + +import Battlemap +import Battlemap.Navigator + +import Model + +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.Navigator.reset_navigation) +         ), +      navigator = +         (case (Dict.get char_id model.characters) of +            Nothing -> Nothing +            (Just char) -> +               (Just +                  (Battlemap.Navigator.new_navigator +                     char.location +                     char.movement_points +                  ) +               ) +         ) +   } | 


