summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/shared/tonkadur/Tonkadur/PlayerInput.elm')
-rw-r--r--src/shared/tonkadur/Tonkadur/PlayerInput.elm85
1 files changed, 85 insertions, 0 deletions
diff --git a/src/shared/tonkadur/Tonkadur/PlayerInput.elm b/src/shared/tonkadur/Tonkadur/PlayerInput.elm
new file mode 100644
index 0000000..0cd75aa
--- /dev/null
+++ b/src/shared/tonkadur/Tonkadur/PlayerInput.elm
@@ -0,0 +1,85 @@
+module Tonkadur.PlayerInput exposing (..)
+
+-- Elm -------------------------------------------------------------------------
+import List
+import Dict
+
+-- Tonkadur --------------------------------------------------------------------
+import Tonkadur.Types
+
+--------------------------------------------------------------------------------
+-- TYPES -----------------------------------------------------------------------
+--------------------------------------------------------------------------------
+
+--------------------------------------------------------------------------------
+-- LOCAL -----------------------------------------------------------------------
+--------------------------------------------------------------------------------
+
+--------------------------------------------------------------------------------
+-- EXPORTED --------------------------------------------------------------------
+--------------------------------------------------------------------------------
+select_choice : Int -> Tonkadur.Types.State -> Tonkadur.Types.State
+select_choice index state = {state | last_choice_index = index}
+
+input_string : String -> Tonkadur.Types.State -> Tonkadur.Types.State
+input_string string state =
+ {state |
+ memory =
+ (Tonkadur.Types.apply_at_address
+ (Tonkadur.Types.value_to_address state.memorized_target)
+ (\last_address dict ->
+ (Dict.insert last_address (StringValue string) dict)
+ )
+ state.memory
+ )
+ }
+
+input_int : Int -> Tonkadur.Types.State -> Tonkadur.Types.State
+input_int int state =
+ {state |
+ memory =
+ (Tonkadur.Types.apply_at_address
+ (Tonkadur.Types.value_to_address state.memorized_target)
+ (\last_address dict ->
+ (Dict.insert last_address (IntValue int) dict)
+ )
+ state.memory
+ )
+ }
+
+input_command : (
+ (List.List String) ->
+ Tonkadur.Types.State ->
+ Tonkadur.Types.State
+ )
+input_command commands state =
+ {state |
+ memory =
+ (Tonkadur.Types.apply_at_address
+ (Tonkadur.Types.value_to_address state.memorized_target)
+ (\last_address dict ->
+ (Dict.insert
+ last_address
+ (ListValue
+ (Dict.fromList
+ (List.indexedMap
+ (\index value ->
+ (
+ (
+ case (String.fromInt index) of
+ (Just i) -> i
+ Nothing -> "invalid_index"
+ ),
+ value
+ )
+ )
+ commands
+ )
+ )
+ )
+ dict
+ )
+ )
+ state.memory
+ )
+ }