From 5a75000ec7b961ad5fe93814e5b7905cacbdba49 Mon Sep 17 00:00:00 2001 From: Nathanael Sensfelder Date: Thu, 12 Oct 2017 19:46:36 +0200 Subject: Started a rather large reorganization. --- elm/battlemap/src/Model/RequestDirection.elm | 60 ++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 elm/battlemap/src/Model/RequestDirection.elm (limited to 'elm/battlemap/src/Model/RequestDirection.elm') diff --git a/elm/battlemap/src/Model/RequestDirection.elm b/elm/battlemap/src/Model/RequestDirection.elm new file mode 100644 index 0000000..f47a902 --- /dev/null +++ b/elm/battlemap/src/Model/RequestDirection.elm @@ -0,0 +1,60 @@ +module Model.RequestDirection exposing (apply_to) + +import Dict + +import Battlemap +import Battlemap.Direction + +import Model +import Error + +make_it_so : Model.Type -> Battlemap.Direction.Type -> Model.Type +make_it_so model dir = + case model.selection of + (Model.SelectedCharacter char_id) -> + let + new_bmap = + (Battlemap.add_step_to_navigator + model.battlemap + dir + (Dict.values model.characters) + ) + in + case new_bmap of + (Just bmap) -> + {model | + state = Model.MovingCharacterWithButtons, + battlemap = new_bmap + } + + Nothing -> + (Model.invalidate + model + (Error.new + Error.IllegalAction + "Unreachable/occupied tile." + ) + ) + + _ -> + (Model.invalidate + model + (Error.new + Error.Programming + "DirectionRequest: model moving char, no char selected." + ) + ) + +apply_to : Model.Type -> Battlemap.Direction.Type -> Model.Type +apply_to model dir = + case (Model.get_state model) of + Model.MovingCharacterWithButtons -> (make_it_so model dir) + Model.MovingCharacterWithClick -> (make_it_so model dir) + _ -> + (Model.invalidate + model + (Error.new + Error.IllegalAction + "This can only be done while moving a character." + ) + ) -- cgit v1.2.3-70-g09d2