summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/battle/src/Update/CharacterTurn/UnlockPath.elm')
-rw-r--r--src/battle/src/Update/CharacterTurn/UnlockPath.elm42
1 files changed, 42 insertions, 0 deletions
diff --git a/src/battle/src/Update/CharacterTurn/UnlockPath.elm b/src/battle/src/Update/CharacterTurn/UnlockPath.elm
new file mode 100644
index 0000000..41d0313
--- /dev/null
+++ b/src/battle/src/Update/CharacterTurn/UnlockPath.elm
@@ -0,0 +1,42 @@
+module Update.CharacterTurn.UnlockPath exposing (apply_to)
+
+-- Local Module ----------------------------------------------------------------
+import Struct.CharacterTurn
+import Struct.Error
+import Struct.Event
+import Struct.Model
+import Struct.Navigator
+
+--------------------------------------------------------------------------------
+-- LOCAL -----------------------------------------------------------------------
+--------------------------------------------------------------------------------
+
+--------------------------------------------------------------------------------
+-- EXPORTED --------------------------------------------------------------------
+--------------------------------------------------------------------------------
+apply_to : Struct.Model.Type -> (Struct.Model.Type, (Cmd Struct.Event.Type))
+apply_to model =
+ case (Struct.CharacterTurn.maybe_get_navigator model.char_turn) of
+ (Just nav) ->
+ (
+ {model |
+ char_turn =
+ (Struct.CharacterTurn.set_navigator
+ (Struct.Navigator.unlock_path nav)
+ (Struct.CharacterTurn.clear_path model.char_turn)
+ )
+ },
+ Cmd.none
+ )
+
+ _ ->
+ (
+ (Struct.Model.invalidate
+ (Struct.Error.new
+ Struct.Error.IllegalAction
+ "This can only be done while controlling a character."
+ )
+ model
+ ),
+ Cmd.none
+ )