summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/shared/tonkadur/Tonkadur')
-rw-r--r--src/shared/tonkadur/Tonkadur/Compute.elm1
-rw-r--r--src/shared/tonkadur/Tonkadur/Execute.elm1
-rw-r--r--src/shared/tonkadur/Tonkadur/PlayerInput.elm2
-rw-r--r--src/shared/tonkadur/Tonkadur/Types.elm36
4 files changed, 38 insertions, 2 deletions
diff --git a/src/shared/tonkadur/Tonkadur/Compute.elm b/src/shared/tonkadur/Tonkadur/Compute.elm
index b22c3ac..92e5527 100644
--- a/src/shared/tonkadur/Tonkadur/Compute.elm
+++ b/src/shared/tonkadur/Tonkadur/Compute.elm
@@ -1,6 +1,7 @@
module Tonkadur.Compute exposing (compute)
-- Elm -------------------------------------------------------------------------
+import Dict
import List
-- Tonkadur --------------------------------------------------------------------
diff --git a/src/shared/tonkadur/Tonkadur/Execute.elm b/src/shared/tonkadur/Tonkadur/Execute.elm
index 6876e80..200d4a7 100644
--- a/src/shared/tonkadur/Tonkadur/Execute.elm
+++ b/src/shared/tonkadur/Tonkadur/Execute.elm
@@ -1,6 +1,7 @@
module Tonkadur.Execute exposing (execute)
-- Elm -------------------------------------------------------------------------
+import Dict
import List
-- Tonkadur --------------------------------------------------------------------
diff --git a/src/shared/tonkadur/Tonkadur/PlayerInput.elm b/src/shared/tonkadur/Tonkadur/PlayerInput.elm
index 0cd75aa..c5fd837 100644
--- a/src/shared/tonkadur/Tonkadur/PlayerInput.elm
+++ b/src/shared/tonkadur/Tonkadur/PlayerInput.elm
@@ -1,8 +1,8 @@
module Tonkadur.PlayerInput exposing (..)
-- Elm -------------------------------------------------------------------------
-import List
import Dict
+import List
-- Tonkadur --------------------------------------------------------------------
import Tonkadur.Types
diff --git a/src/shared/tonkadur/Tonkadur/Types.elm b/src/shared/tonkadur/Tonkadur/Types.elm
index 3393970..3c3806f 100644
--- a/src/shared/tonkadur/Tonkadur/Types.elm
+++ b/src/shared/tonkadur/Tonkadur/Types.elm
@@ -87,7 +87,9 @@ type alias State =
allocated_data : Int,
last_choice_index : Int,
available_options : (List.List Option),
- memorized_target : Value
+ memorized_target : Value,
+
+ last_instruction_effect : InstructionEffect
}
--------------------------------------------------------------------------------
@@ -223,3 +225,35 @@ get_default state type_name =
case (Dict.get other state.user_types) of
(Just default) -> default
Nothing -> (StringValue ("Unknown type '" + other + "'"))
+
+apply_at_address : (
+ (List.List String) ->
+ (
+ String ->
+ (Dict.Dict String Value) ->
+ (Dict.Dict String Value)
+ )
+ (Dict.Dict String Value) ->
+ (Dict.Dict String Value)
+ )
+apply_at_address address fun memory =
+ case address of
+ [] -> memory
+ (last_element :: []) -> (fun last_element memory)
+ (next_element :: next_address) ->
+ (Dict.update
+ next_element
+ (\maybe_value ->
+ case maybe_value of
+ (Just value) ->
+ (Just
+ (apply_at_address
+ next_address
+ fun
+ (Tonkadur.Types.value_to_dict value)
+ )
+ )
+
+ Nothing -> Nothing
+ )
+ )