| summaryrefslogtreecommitdiff | 
diff options
| author | nsensfel <SpamShield0@noot-noot.org> | 2017-10-18 13:48:58 +0200 | 
|---|---|---|
| committer | nsensfel <SpamShield0@noot-noot.org> | 2017-10-18 13:48:58 +0200 | 
| commit | 2805c647010cbcca126ebf162fcbdd691fc72488 (patch) | |
| tree | 2e05d66c8177cc5ff5125e2cbc23fdd4b1d05e36 /elm/battlemap/src/Model/SelectTile.elm | |
| parent | d0dc7f665ba90d126e41048b2d7b992c3e804163 (diff) | |
Correcting whatever the compiler tells me is wrong.
Diffstat (limited to 'elm/battlemap/src/Model/SelectTile.elm')
| -rw-r--r-- | elm/battlemap/src/Model/SelectTile.elm | 89 | 
1 files changed, 29 insertions, 60 deletions
diff --git a/elm/battlemap/src/Model/SelectTile.elm b/elm/battlemap/src/Model/SelectTile.elm index 9a01e77..0fe30fa 100644 --- a/elm/battlemap/src/Model/SelectTile.elm +++ b/elm/battlemap/src/Model/SelectTile.elm @@ -1,13 +1,8 @@  module Model.SelectTile exposing (apply_to) -import Dict - -import Character -  import Battlemap  import Battlemap.Direction  import Battlemap.Location -import Battlemap.Tile  import Model.RequestDirection  import Model.EndTurn @@ -17,66 +12,40 @@ import Error  autopilot : Battlemap.Direction.Type -> Model.Type -> Model.Type  autopilot dir model = -   (Update.DirectionRequest.apply_to model dir) +   (Model.RequestDirection.apply_to model dir)  go_to_tile : Model.Type -> Battlemap.Location.Ref -> Model.Type  go_to_tile model loc_ref = -   case model.selection of -      Nothing -> -         (Model.invalidate -            model -            (Error.new -               Error.Programming -               "SelectTile: model moving char, no selection." -            ) -         ) -      (Just selection) -> -         case (Dict.get loc_ref selection.range_indicator) of -            Nothing -> -- Clicked outside of the range indicator -               (Model.reset model) -            (Just indicator) -> -               let -                  new_model = -                     (List.foldr -                        (autopilot) -                        {model | -                           battlemap = -                              (Battlemap.apply_to_all_tiles -                                 model.battlemap -                                 (Battlemap.Tile.set_direction -                                    Battlemap.Direction.None -                                 ) -                              ), -                           selection = -                              (Just -                                 { -                                    selection | -                                    navigator = -                                       (Battlemap.Navigator.reset -                                          selection.navigator -                                       ) -                                 } -                              ) -                        } -                        indicator.path -                     ) -               in -                  if -                  ( -                     (model.state == Model.MovingCharacterWithClick) -                     && -                     ( -                        (Battlemap.Location.get_ref -                           selection.navigator.current_location -                        ) -                        == loc_ref -                     ) -                  ) -                  then -                     (Model.EndTurn.apply_to new_model) -                  else +   case (Battlemap.try_getting_navigator_location model.battlemap) of +      (Just nav_loc) -> +         if (loc_ref == (Battlemap.Location.get_ref nav_loc)) +         then +            -- We are already there. +            if (model.state == Model.MovingCharacterWithClick) +            then +               -- And we just clicked on that tile. +               (Model.EndTurn.apply_to model) +            else +               -- And we didn't just click on that tile. +               {model | state = Model.MovingCharacterWithClick} +         else +            -- We have to try getting there. +            case +               (Battlemap.try_getting_navigator_path_to +                  model.battlemap +                  loc_ref +               ) +            of +               (Just path) -> +                  let +                     new_model = (List.foldr (autopilot) model path) +                  in                       {new_model | state = Model.MovingCharacterWithClick} +               Nothing -> -- Clicked outside of the range indicator +                  (Model.reset model model.characters) +      Nothing -> -- Clicked outside of the range indicator +         (Model.reset model model.characters)  apply_to : Model.Type -> Battlemap.Location.Ref -> Model.Type  apply_to model loc_ref =  | 


