summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathanael Sensfelder <SpamShield0@MultiAgentSystems.org>2017-09-27 10:31:16 +0200
committerNathanael Sensfelder <SpamShield0@MultiAgentSystems.org>2017-09-27 10:31:16 +0200
commit2c9b2af9ac011a871c5c02d3e2258fca73a98880 (patch)
tree653db3959f444f1065f05658650c6ec81863d627 /elm/battlemap/src/Update/DirectionRequest.elm
parent33e57128d48a012533c42635f52037fcdedd4c56 (diff)
Splits client and server into two repositories.
Diffstat (limited to 'elm/battlemap/src/Update/DirectionRequest.elm')
-rw-r--r--elm/battlemap/src/Update/DirectionRequest.elm37
1 files changed, 37 insertions, 0 deletions
diff --git a/elm/battlemap/src/Update/DirectionRequest.elm b/elm/battlemap/src/Update/DirectionRequest.elm
new file mode 100644
index 0000000..da32240
--- /dev/null
+++ b/elm/battlemap/src/Update/DirectionRequest.elm
@@ -0,0 +1,37 @@
+module Update.DirectionRequest exposing (apply_to)
+
+import Dict
+
+import Battlemap.Direction
+import Battlemap.Navigator.Move
+
+import Model
+import Error
+
+make_it_so : Model.Type -> Battlemap.Direction.Type -> Model.Type
+make_it_so model dir =
+ case model.selection of
+ Nothing -> {model | state = (Model.Error Error.Programming)}
+ (Just selection) ->
+ let
+ (new_bmap, new_nav) =
+ (Battlemap.Navigator.Move.to
+ model.battlemap
+ selection.navigator
+ dir
+ (Dict.values model.characters)
+ )
+ in
+ {model |
+ state = Model.MovingCharacterWithButtons,
+ battlemap = new_bmap,
+ selection = (Just {selection | navigator = new_nav})
+ }
+
+
+apply_to : Model.Type -> Battlemap.Direction.Type -> Model.Type
+apply_to model dir =
+ case model.state of
+ Model.MovingCharacterWithButtons -> (make_it_so model dir)
+ Model.MovingCharacterWithClick -> (make_it_so model dir)
+ _ -> {model | state = (Model.Error Error.IllegalAction)}