summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'elm/battlemap/src/Update/EndTurn.elm')
-rw-r--r--elm/battlemap/src/Update/EndTurn.elm61
1 files changed, 61 insertions, 0 deletions
diff --git a/elm/battlemap/src/Update/EndTurn.elm b/elm/battlemap/src/Update/EndTurn.elm
new file mode 100644
index 0000000..7172b2f
--- /dev/null
+++ b/elm/battlemap/src/Update/EndTurn.elm
@@ -0,0 +1,61 @@
+module Update.EndTurn exposing (apply_to)
+
+import Dict
+
+import Battlemap
+import Battlemap.Direction
+import Battlemap.Navigator
+import Battlemap.Tile
+
+import Model
+
+import Error
+
+make_it_so : Model.Type -> Model.Type
+make_it_so model =
+ case model.selection of
+ Nothing -> {model | state = (Model.Error Error.Programming)}
+ (Just selection) ->
+ case (Dict.get selection.character model.characters) of
+ Nothing -> {model | state = (Model.Error Error.Programming)}
+ (Just char) ->
+ {model |
+ state = Model.Default,
+ selection = Nothing,
+ battlemap =
+ (Battlemap.apply_to_all_tiles
+ (Battlemap.apply_to_tile_unsafe
+ (Battlemap.apply_to_tile_unsafe
+ model.battlemap
+ char.location
+ (\t -> {t | char_level = Nothing})
+ )
+ selection.navigator.current_location
+ (\t -> {t | char_level = (Just selection.character)})
+ )
+ (Battlemap.Tile.reset_tile)
+ ),
+ characters =
+ (Dict.update
+ selection.character
+ (\mc ->
+ case mc of
+ Nothing -> Nothing
+ (Just c) ->
+ (Just
+ {c |
+ location = selection.navigator.current_location
+ }
+ )
+ )
+ model.characters
+ )
+ }
+
+apply_to : Model.Type -> Model.Type
+apply_to model =
+ case model.state of
+ Model.MovingCharacterWithButtons -> (make_it_so model)
+ Model.MovingCharacterWithClick -> (make_it_so model)
+ _ -> {model | state = (Model.Error Error.IllegalAction)}
+