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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
|
module View.Controlled exposing (get_html)
-- Elm -------------------------------------------------------------------------
import Html
import Html.Attributes
import Html.Events
-- Struct.Map -------------------------------------------------------------------
import Struct.CharacterTurn
import Struct.Event
import Struct.Navigator
import Util.Html
import View.Controlled.CharacterCard
import View.Controlled.ManualControls
--------------------------------------------------------------------------------
-- LOCAL -----------------------------------------------------------------------
--------------------------------------------------------------------------------
has_a_path : Struct.CharacterTurn.Type -> Bool
has_a_path char_turn =
case (Struct.CharacterTurn.try_getting_navigator char_turn) of
(Just nav) -> ((Struct.Navigator.get_path nav) /= [])
Nothing -> False
attack_button : Struct.CharacterTurn.Type -> (Html.Html Struct.Event.Type)
attack_button char_turn =
(Html.button
[ (Html.Events.onClick Struct.Event.AttackWithoutMovingRequest) ]
[
(Html.text
(
if (has_a_path char_turn)
then ("Go & Select Target")
else ("Select Target")
)
)
]
)
abort_button : (Html.Html Struct.Event.Type)
abort_button =
(Html.button
[ (Html.Events.onClick Struct.Event.AbortTurnRequest) ]
[ (Html.text "Abort") ]
)
undo_button : (Html.Html Struct.Event.Type)
undo_button =
(Html.button
[ (Html.Events.onClick Struct.Event.UndoActionRequest) ]
[ (Html.text "Undo") ]
)
end_turn_button : String -> (Html.Html Struct.Event.Type)
end_turn_button suffix =
(Html.button
[
(Html.Events.onClick Struct.Event.TurnEnded),
(Html.Attributes.class "battle-end-turn-button")
]
[ (Html.text ("End Turn" ++ suffix)) ]
)
inventory_button : Bool -> (Html.Html Struct.Event.Type)
inventory_button go_prefix =
(Html.button
[ (Html.Events.onClick Struct.Event.WeaponSwitchRequest) ]
[
(Html.text
(
if (go_prefix)
then ("Go & Switch Weapon")
else ("Switch Weapon")
)
)
]
)
get_available_actions : (
Struct.CharacterTurn.Type ->
(List (Html.Html Struct.Event.Type))
)
get_available_actions char_turn =
case (Struct.CharacterTurn.get_state char_turn) of
Struct.CharacterTurn.SelectedCharacter ->
[
(attack_button char_turn),
(inventory_button (has_a_path char_turn)),
(end_turn_button " Doing Nothing"),
(abort_button)
]
Struct.CharacterTurn.MovedCharacter ->
[
(inventory_button False),
(end_turn_button " by Moving"),
(undo_button),
(abort_button)
]
Struct.CharacterTurn.ChoseTarget ->
[
(end_turn_button " by Attacking"),
(undo_button),
(abort_button)
]
Struct.CharacterTurn.SwitchedWeapons ->
[
(end_turn_button " by Switching Weapons"),
(undo_button),
(abort_button)
]
_ ->
[
]
--------------------------------------------------------------------------------
-- EXPORTED --------------------------------------------------------------------
--------------------------------------------------------------------------------
get_html : Struct.CharacterTurn.Type -> Int -> (Html.Html Struct.Event.Type)
get_html char_turn player_ix =
case
(Struct.CharacterTurn.try_getting_active_character char_turn)
of
(Just char) ->
(Html.div
[(Html.Attributes.class "battle-controlled")]
[
(View.Controlled.CharacterCard.get_summary_html
char_turn
player_ix
char
),
(
if
(
(Struct.CharacterTurn.get_state char_turn)
==
Struct.CharacterTurn.SelectedCharacter
)
then
(View.Controlled.ManualControls.get_html)
else
(Util.Html.nothing)
),
(Html.div
[(Html.Attributes.class "battle-controlled-actions")]
(get_available_actions char_turn)
)
]
)
Nothing -> (Util.Html.nothing)
|