| summaryrefslogtreecommitdiff | 
diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/battlemap/src/Update/EndTurn.elm | 100 | 
1 files changed, 54 insertions, 46 deletions
| diff --git a/src/battlemap/src/Update/EndTurn.elm b/src/battlemap/src/Update/EndTurn.elm index 150188a..0e046bf 100644 --- a/src/battlemap/src/Update/EndTurn.elm +++ b/src/battlemap/src/Update/EndTurn.elm @@ -16,64 +16,72 @@ import Struct.Model  --------------------------------------------------------------------------------  -- LOCAL -----------------------------------------------------------------------  -------------------------------------------------------------------------------- -make_it_so : Struct.Model.Type -> (Struct.Model.Type, (Cmd Struct.Event.Type)) -make_it_so model = -   case -- (Struct.Battlemap.try_getting_navigator_location model.battlemap) of -      (Just {x = 0, y = 0}) -   of -      (Just location) -> -         case (Send.CharacterTurn.try model) of -            (Just cmd) -> -               ( -                  (Struct.Model.reset -                     model -                     (Dict.update -                        "0" --char_ref -                        (\maybe_char -> -                           case maybe_char of -                              (Just char) -> -                                 (Just -                                    (Struct.Character.set_enabled -                                       (Struct.Character.set_location -                                          location -                                          char -                                       ) -                                       False -                                    ) -                                 ) -                              Nothing -> Nothing -                        ) -                        model.characters -                     ) -                  ), -                  cmd -               ) - -            Nothing -> -               (model, Cmd.none) - -      Nothing -> +make_it_so : ( +      Struct.Model.Type -> +      Struct.Character.Ref -> +      Struct.Navigator.Type -> +      (Struct.Model.Type, (Cmd Struct.Event.Type)) +   ) +make_it_so model char_id nav = +   case (Send.CharacterTurn.try model) of +      (Just cmd) ->           ( -            (Struct.Model.invalidate +            (Struct.Model.reset                 model -               (Struct.Error.new -                  Struct.Error.Programming -                  "EndTurn: model moving char, no navigator location." +               (Dict.update +                  char_id +                  (\maybe_char -> +                     case maybe_char of +                        (Just char) -> +                           (Just +                              (Struct.Character.set_enabled +                                 (Struct.Character.set_location +                                    (Struct.Navigator.get_current_location nav) +                                    char +                                 ) +                                 False +                              ) +                           ) +                        Nothing -> Nothing +                  ) +                  model.characters                 )              ), -            Cmd.none +            cmd           ) +      Nothing -> +         (model, Cmd.none) +  --------------------------------------------------------------------------------  -- EXPORTED --------------------------------------------------------------------  --------------------------------------------------------------------------------  apply_to : Struct.Model.Type -> (Struct.Model.Type, (Cmd Struct.Event.Type))  apply_to model = -   case (Struct.CharacterTurn.get_state model.char_turn) of -      Struct.CharacterTurn.MovedCharacter -> (make_it_so model) -      Struct.CharacterTurn.ChoseTarget -> (make_it_so model) +   case +      ( +         (Struct.CharacterTurn.get_state model.char_turn), +         (Struct.CharacterTurn.try_getting_controlled_character +            model.char_turn +         ), +         (Struct.CharacterTurn.try_getting_navigator model.char_turn) +      ) +   of +      ( +         Struct.CharacterTurn.MovedCharacter, +         (Just char_id), +         (Just nav) +      ) -> +         (make_it_so model char_id nav) + +      ( +         Struct.CharacterTurn.ChoseTarget, +         (Just char_id), +         (Just nav) +      ) -> +         (make_it_so model char_id nav) -      _ -> +      (_, _, _) ->           (              (Struct.Model.invalidate                 model | 


