summaryrefslogtreecommitdiff
blob: c5fd83706674e8855026930fea19def55a24a270 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
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.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
         )
   }