aboutsummaryrefslogtreecommitdiff |
diff options
Diffstat (limited to 'elm/battlemap/src/Model/EndTurn.elm')
-rw-r--r-- | elm/battlemap/src/Model/EndTurn.elm | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/elm/battlemap/src/Model/EndTurn.elm b/elm/battlemap/src/Model/EndTurn.elm new file mode 100644 index 0000000..788c3a1 --- /dev/null +++ b/elm/battlemap/src/Model/EndTurn.elm @@ -0,0 +1,63 @@ +module Model.EndTurn exposing (apply_to) + +import Dict + +import Battlemap + +import Character + +import Error + +import Model + +make_it_so : Model.Type -> Model.Type +make_it_so model = + case model.selection of + (Model.SelectedCharacter char_id) -> + case (Battlemap.get_navigator_location model.battlemap) of + (Just location) -> + (Model.reset + model + (Dict.update + char_id + (\maybe_char -> + case maybe_char of + (Just char) -> + (Just + (Character.set_location location char) + ) + Nothing -> Nothing + ) + model.characters + ) + ) + Nothing -> + (Model.invalidate + model + (Error.new + Error.Programming + "EndTurn: model moving char, no navigator location." + ) + ) + _ -> + (Model.invalidate + model + (Error.new + Error.Programming + "EndTurn: model moving char, no char selected." + ) + ) + +apply_to : Model.Type -> Model.Type +apply_to model = + case (Model.get_state model) of + Model.MovingCharacterWithButtons -> (make_it_so model) + Model.MovingCharacterWithClick -> (make_it_so model) + _ -> + (Model.invalidate + model + (Error.new + Error.IllegalAction + "This can only be done while moving a character." + ) + ) |