| summaryrefslogtreecommitdiff | 
diff options
| author | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2021-12-26 17:13:33 +0100 | 
|---|---|---|
| committer | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2021-12-26 17:13:33 +0100 | 
| commit | 9c46df53ad401e060664aafe8fdfbcb9a3da5731 (patch) | |
| tree | cbe3e412bc04e322ddab5ca52bdb776c63b3fdc2 /src/Tonkadur/PlayerInput.elm | |
Initial commit.
Diffstat (limited to 'src/Tonkadur/PlayerInput.elm')
| -rw-r--r-- | src/Tonkadur/PlayerInput.elm | 85 | 
1 files changed, 85 insertions, 0 deletions
| diff --git a/src/Tonkadur/PlayerInput.elm b/src/Tonkadur/PlayerInput.elm new file mode 100644 index 0000000..facf9e5 --- /dev/null +++ b/src/Tonkadur/PlayerInput.elm @@ -0,0 +1,85 @@ +module Tonkadur.PlayerInput exposing (..) + +-- Elm ------------------------------------------------------------------------- +import Dict +import List + +-- 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 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 +         ) +   } | 


