summaryrefslogtreecommitdiff
blob: c6c7ae330104d6b7e26b19c772b71906935ed53d (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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
module ElmModule.Update exposing (update)

-- Local Module ----------------------------------------------------------------
import Struct.Event
import Struct.Model

import Update.HandleServerReply
import Update.Puppeteer
import Update.SelectCharacter
import Update.SelectCharacterOrTile
import Update.SelectTile
import Update.SetRequestedHelp

import Update.Character.DisplayCharacterInfo
import Update.Character.LookForCharacter

import Update.CharacterTurn.AbortTurn
import Update.CharacterTurn.Attack
import Update.CharacterTurn.EndTurn
import Update.CharacterTurn.RequestDirection
import Update.CharacterTurn.SwitchWeapon
import Update.CharacterTurn.UndoAction

import Update.UI.ChangeScale
import Update.UI.GoToMainMenu
import Update.UI.SelectTab

--------------------------------------------------------------------------------
-- LOCAL -----------------------------------------------------------------------
--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
-- EXPORTED --------------------------------------------------------------------
--------------------------------------------------------------------------------
update : (
      Struct.Event.Type ->
      Struct.Model.Type ->
      (Struct.Model.Type, (Cmd Struct.Event.Type))
   )
update event model =
   case event of
      Struct.Event.None -> (model, Cmd.none)

      (Struct.Event.Failed err) ->
         (
            (Struct.Model.invalidate err model),
            Cmd.none
         )

      Struct.Event.AttackRequest ->
         (Update.CharacterTurn.Attack.apply_to model)

      Struct.Event.AnimationEnded ->
         (Update.Puppeteer.apply_to model)

      (Struct.Event.DirectionRequested d) ->
         (Update.CharacterTurn.RequestDirection.apply_to d model)

      (Struct.Event.TileSelected loc) ->
         (Update.SelectTile.apply_to loc model)

      (Struct.Event.CharacterOrTileSelected loc) ->
         (Update.SelectCharacterOrTile.apply_to loc model)

      (Struct.Event.CharacterSelected char_id) ->
         (Update.SelectCharacter.apply_to char_id model)

      (Struct.Event.CharacterInfoRequested char_id) ->
         (Update.Character.DisplayCharacterInfo.apply_to char_id model)

      (Struct.Event.LookingForCharacter char_id) ->
         (Update.Character.LookForCharacter.apply_to char_id model)

      Struct.Event.TurnEnded ->
         (Update.CharacterTurn.EndTurn.apply_to model)

      (Struct.Event.ScaleChangeRequested mod) ->
         (Update.UI.ChangeScale.apply_to mod model)

      (Struct.Event.TabSelected tab) ->
         (Update.UI.SelectTab.apply_to tab model)

      (Struct.Event.ServerReplied result) ->
         (Update.HandleServerReply.apply_to result model)

      Struct.Event.WeaponSwitchRequest ->
         (Update.CharacterTurn.SwitchWeapon.apply_to model)

      Struct.Event.AbortTurnRequest ->
         (Update.CharacterTurn.AbortTurn.apply_to model)

      Struct.Event.UndoActionRequest ->
         (Update.CharacterTurn.UndoAction.apply_to model)

      (Struct.Event.RequestedHelp help_request) ->
         (Update.SetRequestedHelp.apply_to help_request model)

      Struct.Event.GoToMainMenu ->
         (Update.UI.GoToMainMenu.apply_to model)