summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathanael Sensfelder <SpamShield0@MultiAgentSystems.org>2020-05-28 00:11:00 +0200
committerNathanael Sensfelder <SpamShield0@MultiAgentSystems.org>2020-05-28 00:11:00 +0200
commit75aa816dedb09e0e1bc395f6e9ae94e1b9e993a1 (patch)
treea4e29cb758facc31ee99b8a59139bb2bd85d1ab1 /src/battle
parente625907e5846bba7f9fb66375700f35eb2c6be39 (diff)
Missing files + New Control UI.
Diffstat (limited to 'src/battle')
-rw-r--r--src/battle/src/ElmModule/Update.elm12
-rw-r--r--src/battle/src/Struct/CharacterTurn.elm8
-rw-r--r--src/battle/src/Struct/Event.elm3
-rw-r--r--src/battle/src/Struct/Navigator.elm2
-rw-r--r--src/battle/src/Update/CharacterTurn/Move.elm34
-rw-r--r--src/battle/src/Update/CharacterTurn/ResetPath.elm73
-rw-r--r--src/battle/src/Update/CharacterTurn/Skill.elm37
-rw-r--r--src/battle/src/Update/CharacterTurn/Skip.elm42
-rw-r--r--src/battle/src/Update/CharacterTurn/UndoAction.elm54
-rw-r--r--src/battle/src/Util/Navigator.elm87
-rw-r--r--src/battle/src/View/Controlled.elm273
-rw-r--r--src/battle/src/View/Controlled/ManualControls.elm15
12 files changed, 531 insertions, 109 deletions
diff --git a/src/battle/src/ElmModule/Update.elm b/src/battle/src/ElmModule/Update.elm
index cc9b9b8..5e9d4ca 100644
--- a/src/battle/src/ElmModule/Update.elm
+++ b/src/battle/src/ElmModule/Update.elm
@@ -22,7 +22,10 @@ import Update.Character.DisplayNavigator
import Update.CharacterTurn.AbortTurn
import Update.CharacterTurn.Attack
import Update.CharacterTurn.EndTurn
+import Update.CharacterTurn.Move
import Update.CharacterTurn.RequestDirection
+import Update.CharacterTurn.Skill
+import Update.CharacterTurn.Skip
import Update.CharacterTurn.SwitchWeapon
import Update.CharacterTurn.UndoAction
@@ -55,6 +58,15 @@ update event model =
Struct.Event.AttackRequest ->
(Update.CharacterTurn.Attack.apply_to model)
+ Struct.Event.SkillRequest ->
+ (Update.CharacterTurn.Skill.apply_to model)
+
+ Struct.Event.SkipRequest ->
+ (Update.CharacterTurn.Skip.apply_to model)
+
+ Struct.Event.MoveRequest ->
+ (Update.CharacterTurn.Move.apply_to model)
+
Struct.Event.AnimationEnded ->
(Update.Puppeteer.apply_to model)
diff --git a/src/battle/src/Struct/CharacterTurn.elm b/src/battle/src/Struct/CharacterTurn.elm
index 514803d..1a64cce 100644
--- a/src/battle/src/Struct/CharacterTurn.elm
+++ b/src/battle/src/Struct/CharacterTurn.elm
@@ -43,6 +43,7 @@ module Struct.CharacterTurn exposing
clear_path,
-- Other
+ is_aiming_at_something,
encode,
new
)
@@ -71,6 +72,7 @@ import Struct.Navigator
--------------------------------------------------------------------------------
type Action =
None
+ | Skipping
| Attacking
| SwitchingWeapons
| UsingSkill
@@ -113,6 +115,7 @@ encode_action : Type -> (Json.Encode.Value)
encode_action ct =
case ct.action of
None -> (Json.Encode.null)
+ Skipping -> (Json.Encode.null)
Attacking ->
case (List.head (Set.toList ct.targets)) of
@@ -267,6 +270,11 @@ override_path path ct = {ct | path = path}
clear_path : Type -> Type
clear_path ct = {ct | path = []}
+---- Other ---------------------------------------------------------------------
+is_aiming_at_something : Type -> Bool
+is_aiming_at_something ct =
+ (not ((Set.isEmpty ct.targets) && (Set.isEmpty ct.locations)))
+
---- Encode/Decode -------------------------------------------------------------
encode : Type -> (Json.Encode.Value)
encode ct =
diff --git a/src/battle/src/Struct/Event.elm b/src/battle/src/Struct/Event.elm
index 950b00d..7b91ae9 100644
--- a/src/battle/src/Struct/Event.elm
+++ b/src/battle/src/Struct/Event.elm
@@ -20,6 +20,9 @@ type Type =
AbortTurnRequest
| AnimationEnded
| AttackRequest
+ | SkillRequest
+ | SkipRequest
+ | MoveRequest
| CharacterOrTileSelected BattleMap.Struct.Location.Ref
| CharacterSelected Int
| CharacterCardSelected Int
diff --git a/src/battle/src/Struct/Navigator.elm b/src/battle/src/Struct/Navigator.elm
index 537351a..be2f460 100644
--- a/src/battle/src/Struct/Navigator.elm
+++ b/src/battle/src/Struct/Navigator.elm
@@ -173,7 +173,7 @@ unlock_path navigator =
navigator.attack_dist
(navigator.cost_and_danger_fun)
),
- locked_path = True
+ locked_path = False
}
lock_path_with_new_attack_ranges : Int -> Int -> Type -> Type
diff --git a/src/battle/src/Update/CharacterTurn/Move.elm b/src/battle/src/Update/CharacterTurn/Move.elm
new file mode 100644
index 0000000..a8b6a27
--- /dev/null
+++ b/src/battle/src/Update/CharacterTurn/Move.elm
@@ -0,0 +1,34 @@
+module Update.CharacterTurn.Move exposing (apply_to)
+
+-- Battle Characters -----------------------------------------------------------
+
+-- Local module ----------------------------------------------------------------
+import Struct.CharacterTurn
+import Struct.Error
+import Struct.Event
+import Struct.Model
+import Struct.Navigator
+
+--------------------------------------------------------------------------------
+-- LOCAL -----------------------------------------------------------------------
+--------------------------------------------------------------------------------
+
+--------------------------------------------------------------------------------
+-- EXPORTED --------------------------------------------------------------------
+--------------------------------------------------------------------------------
+apply_to : Struct.Model.Type -> (Struct.Model.Type, (Cmd Struct.Event.Type))
+apply_to model =
+ case (Struct.CharacterTurn.maybe_get_navigator model.char_turn) of
+ (Just nav) ->
+ (
+ {model |
+ char_turn =
+ (Struct.CharacterTurn.set_navigator
+ (Struct.Navigator.lock_path nav)
+ (Struct.CharacterTurn.store_path model.char_turn)
+ )
+ },
+ Cmd.none
+ )
+
+ _ -> (model, Cmd.none)
diff --git a/src/battle/src/Update/CharacterTurn/ResetPath.elm b/src/battle/src/Update/CharacterTurn/ResetPath.elm
new file mode 100644
index 0000000..f6fb97c
--- /dev/null
+++ b/src/battle/src/Update/CharacterTurn/ResetPath.elm
@@ -0,0 +1,73 @@
+module Update.CharacterTurn.ResetPath exposing (apply_to)
+
+-- Battle Map ------------------------------------------------------------------
+import BattleMap.Struct.Direction
+import BattleMap.Struct.Location
+import BattleMap.Struct.Map
+
+-- Battle Characters -----------------------------------------------------------
+import BattleCharacters.Struct.Character
+
+-- Local Module ----------------------------------------------------------------
+import Struct.Battle
+import Struct.Character
+import Struct.CharacterTurn
+import Struct.Error
+import Struct.Event
+import Struct.Model
+import Struct.Navigator
+
+--------------------------------------------------------------------------------
+-- LOCAL -----------------------------------------------------------------------
+--------------------------------------------------------------------------------
+
+--------------------------------------------------------------------------------
+-- EXPORTED --------------------------------------------------------------------
+--------------------------------------------------------------------------------
+apply_to : Struct.Model.Type -> (Struct.Model.Type, (Cmd Struct.Event.Type))
+apply_to model =
+ case
+ (
+ (Struct.CharacterTurn.maybe_get_active_character model.char_turn),
+ (Struct.CharacterTurn.maybe_get_navigator model.char_turn)
+ )
+ of
+ ((Just char), (Just nav)) ->
+ let
+ new_location = (Struct.Navigator.get_starting_location nav)
+ in
+ (
+ {model |
+ char_turn =
+ (Struct.CharacterTurn.set_navigator
+ (Struct.Navigator.clear_path
+ (Struct.Navigator.unlock_path nav)
+ )
+ (Struct.CharacterTurn.set_active_character
+ (Struct.Character.set_location
+ new_location
+ (BattleMap.Struct.Map.get_omnimods_at
+ new_location
+ model.map_data_set
+ (Struct.Battle.get_map model.battle)
+ )
+ char
+ )
+ (Struct.CharacterTurn.clear_path model.char_turn)
+ )
+ )
+ },
+ Cmd.none
+ )
+
+ _ ->
+ (
+ (Struct.Model.invalidate
+ (Struct.Error.new
+ Struct.Error.IllegalAction
+ "This can only be done while controlling a character."
+ )
+ model
+ ),
+ Cmd.none
+ )
diff --git a/src/battle/src/Update/CharacterTurn/Skill.elm b/src/battle/src/Update/CharacterTurn/Skill.elm
new file mode 100644
index 0000000..ee3baf2
--- /dev/null
+++ b/src/battle/src/Update/CharacterTurn/Skill.elm
@@ -0,0 +1,37 @@
+module Update.CharacterTurn.Skill exposing (apply_to)
+
+-- Battle Characters -----------------------------------------------------------
+
+-- Local module ----------------------------------------------------------------
+import Struct.CharacterTurn
+import Struct.Error
+import Struct.Event
+import Struct.Model
+import Struct.Navigator
+
+--------------------------------------------------------------------------------
+-- LOCAL -----------------------------------------------------------------------
+--------------------------------------------------------------------------------
+
+--------------------------------------------------------------------------------
+-- EXPORTED --------------------------------------------------------------------
+--------------------------------------------------------------------------------
+apply_to : Struct.Model.Type -> (Struct.Model.Type, (Cmd Struct.Event.Type))
+apply_to model =
+ case (Struct.CharacterTurn.maybe_get_navigator model.char_turn) of
+ (Just nav) ->
+ (
+ {model |
+ char_turn =
+ (Struct.CharacterTurn.set_action
+ Struct.CharacterTurn.UsingSkill
+ (Struct.CharacterTurn.set_navigator
+ (Struct.Navigator.lock_path nav)
+ (Struct.CharacterTurn.store_path model.char_turn)
+ )
+ )
+ },
+ Cmd.none
+ )
+
+ _ -> (model, Cmd.none)
diff --git a/src/battle/src/Update/CharacterTurn/Skip.elm b/src/battle/src/Update/CharacterTurn/Skip.elm
new file mode 100644
index 0000000..b61db05
--- /dev/null
+++ b/src/battle/src/Update/CharacterTurn/Skip.elm
@@ -0,0 +1,42 @@
+module Update.CharacterTurn.Skip exposing (apply_to)
+
+-- Shared ----------------------------------------------------------------------
+import Shared.Update.Sequence
+
+-- Local module ----------------------------------------------------------------
+import Struct.CharacterTurn
+import Struct.Error
+import Struct.Event
+import Struct.Model
+import Struct.Navigator
+
+import Update.CharacterTurn.ResetPath
+
+--------------------------------------------------------------------------------
+-- LOCAL -----------------------------------------------------------------------
+--------------------------------------------------------------------------------
+set_action : Struct.Model.Type -> (Struct.Model.Type, (Cmd Struct.Event.Type))
+set_action model =
+ (
+ {model |
+ char_turn =
+ (Struct.CharacterTurn.set_action
+ Struct.CharacterTurn.Skipping
+ model.char_turn
+ )
+ },
+ Cmd.none
+ )
+
+--------------------------------------------------------------------------------
+-- EXPORTED --------------------------------------------------------------------
+--------------------------------------------------------------------------------
+apply_to : Struct.Model.Type -> (Struct.Model.Type, (Cmd Struct.Event.Type))
+apply_to model =
+ (Shared.Update.Sequence.sequence
+ [
+ (Update.CharacterTurn.ResetPath.apply_to),
+ (set_action)
+ ]
+ model
+ )
diff --git a/src/battle/src/Update/CharacterTurn/UndoAction.elm b/src/battle/src/Update/CharacterTurn/UndoAction.elm
index 6a9d7f8..0187752 100644
--- a/src/battle/src/Update/CharacterTurn/UndoAction.elm
+++ b/src/battle/src/Update/CharacterTurn/UndoAction.elm
@@ -21,8 +21,9 @@ import Struct.Event
import Struct.Model
import Struct.Navigator
-import Util.Navigator
+import Update.CharacterTurn.ResetPath
+import Util.Navigator
--------------------------------------------------------------------------------
-- LOCAL -----------------------------------------------------------------------
--------------------------------------------------------------------------------
@@ -57,27 +58,46 @@ handle_undo_attacking char_turn =
)
)
+handle_undo_skipping : Struct.CharacterTurn.Type -> Struct.CharacterTurn.Type
+handle_undo_skipping char_turn =
+ case (Struct.CharacterTurn.maybe_get_navigator char_turn) of
+ Nothing -> char_turn
+ (Just nav) ->
+ (Struct.CharacterTurn.clear_action
+ (Struct.CharacterTurn.set_navigator
+ (Struct.Navigator.unlock_path nav)
+ char_turn
+ )
+ )
+
--------------------------------------------------------------------------------
-- EXPORTED --------------------------------------------------------------------
--------------------------------------------------------------------------------
apply_to : Struct.Model.Type -> (Struct.Model.Type, (Cmd Struct.Event.Type))
apply_to model =
- (
- {model |
- char_turn =
- (
- case (Struct.CharacterTurn.get_action model.char_turn) of
- Struct.CharacterTurn.Attacking ->
- (handle_undo_attacking model.char_turn)
+ let action = (Struct.CharacterTurn.get_action model.char_turn) in
+ if (action == Struct.CharacterTurn.None)
+ then (Update.CharacterTurn.ResetPath.apply_to model)
+ else
+ (
+ {model |
+ char_turn =
+ (
+ case action of
+ Struct.CharacterTurn.Attacking ->
+ (handle_undo_attacking model.char_turn)
- Struct.CharacterTurn.UsingSkill ->
- (handle_undo_attacking model.char_turn)
+ Struct.CharacterTurn.UsingSkill ->
+ (handle_undo_attacking model.char_turn)
- Struct.CharacterTurn.SwitchingWeapons ->
- (handle_undo_switching_weapons model.char_turn)
+ Struct.CharacterTurn.SwitchingWeapons ->
+ (handle_undo_switching_weapons model.char_turn)
- _ -> model.char_turn
- )
- },
- Cmd.none
- )
+ Struct.CharacterTurn.Skipping ->
+ (handle_undo_skipping model.char_turn)
+
+ Struct.CharacterTurn.None -> model.char_turn
+ )
+ },
+ Cmd.none
+ )
diff --git a/src/battle/src/Util/Navigator.elm b/src/battle/src/Util/Navigator.elm
new file mode 100644
index 0000000..c5a8136
--- /dev/null
+++ b/src/battle/src/Util/Navigator.elm
@@ -0,0 +1,87 @@
+module Util.Navigator exposing
+ (
+ get_character_navigator,
+ get_character_attack_navigator
+ )
+
+-- Elm -------------------------------------------------------------------------
+import Array
+import List
+
+-- Battle ----------------------------------------------------------------------
+import Battle.Struct.Attributes
+
+-- Battle Characters -----------------------------------------------------------
+import BattleCharacters.Struct.Character
+import BattleCharacters.Struct.Weapon
+
+-- Battle Map ------------------------------------------------------------------
+import BattleMap.Struct.Map
+
+-- Local Module ----------------------------------------------------------------
+import Struct.Battle
+import Struct.Character
+import Struct.Navigator
+
+--------------------------------------------------------------------------------
+-- LOCAL -----------------------------------------------------------------------
+--------------------------------------------------------------------------------
+
+--------------------------------------------------------------------------------
+-- EXPORTED --------------------------------------------------------------------
+--------------------------------------------------------------------------------
+get_character_navigator : (
+ Struct.Battle.Type ->
+ Struct.Character.Type ->
+ Struct.Navigator.Type
+ )
+get_character_navigator battle char =
+ let
+ base_char = (Struct.Character.get_base_character char)
+ weapon = (BattleCharacters.Struct.Character.get_active_weapon base_char)
+ in
+ (Struct.Navigator.new
+ (Struct.Character.get_location char)
+ (Battle.Struct.Attributes.get_movement_points
+ (BattleCharacters.Struct.Character.get_attributes base_char)
+ )
+ (BattleCharacters.Struct.Weapon.get_defense_range weapon)
+ (BattleCharacters.Struct.Weapon.get_attack_range weapon)
+ (BattleMap.Struct.Map.get_tile_data_function
+ (Struct.Battle.get_map battle)
+ (List.map
+ (Struct.Character.get_location)
+ (Array.toList
+ (Struct.Battle.get_characters battle)
+ )
+ )
+ (Struct.Character.get_location char)
+ )
+ )
+
+get_character_attack_navigator : (
+ Struct.Battle.Type ->
+ Struct.Character.Type ->
+ Struct.Navigator.Type
+ )
+get_character_attack_navigator battle char =
+ let
+ base_char = (Struct.Character.get_base_character char)
+ weapon = (BattleCharacters.Struct.Character.get_active_weapon base_char)
+ in
+ (Struct.Navigator.new
+ (Struct.Character.get_location char)
+ 0
+ (BattleCharacters.Struct.Weapon.get_defense_range weapon)
+ (BattleCharacters.Struct.Weapon.get_attack_range weapon)
+ (BattleMap.Struct.Map.get_tile_data_function
+ (Struct.Battle.get_map battle)
+ (List.map
+ (Struct.Character.get_location)
+ (Array.toList
+ (Struct.Battle.get_characters battle)
+ )
+ )
+ (Struct.Character.get_location char)
+ )
+ )
diff --git a/src/battle/src/View/Controlled.elm b/src/battle/src/View/Controlled.elm
index 0293770..8f78fd9 100644
--- a/src/battle/src/View/Controlled.elm
+++ b/src/battle/src/View/Controlled.elm
@@ -19,102 +19,214 @@ import View.Controlled.ManualControls
--------------------------------------------------------------------------------
-- LOCAL -----------------------------------------------------------------------
--------------------------------------------------------------------------------
-has_a_path : Struct.CharacterTurn.Type -> Bool
-has_a_path char_turn =
- case (Struct.CharacterTurn.maybe_get_navigator char_turn) of
- (Just nav) -> ((Struct.Navigator.get_path nav) /= [])
- Nothing -> False
-
+action_to_class : (
+ Struct.CharacterTurn.Action ->
+ (Html.Attribute Struct.Event.Type)
+ )
+action_to_class action =
+ (Html.Attributes.class
+ (
+ case action of
+ Struct.CharacterTurn.None -> "no-action"
+ Struct.CharacterTurn.Skipping -> "skipping"
+ Struct.CharacterTurn.Attacking -> "attacking"
+ Struct.CharacterTurn.SwitchingWeapons -> "switching-weapons"
+ Struct.CharacterTurn.UsingSkill -> "using-skill"
+ )
+ )
-skill_button : Struct.CharacterTurn.Type -> (Html.Html Struct.Event.Type)
-skill_button char_turn =
+action_or_undo_button : (
+ Struct.CharacterTurn.Action ->
+ Struct.CharacterTurn.Action ->
+ Struct.Event.Type ->
+ (Html.Html Struct.Event.Type)
+ )
+action_or_undo_button current_action relevant_action event =
(Html.button
- [ (Html.Events.onClick Struct.Event.AttackRequest) ]
+ (
+ if (current_action == Struct.CharacterTurn.None)
+ then
+ [
+ (Html.Attributes.class "action-button"),
+ (action_to_class relevant_action),
+ (Html.Attributes.class "action"),
+ (Html.Events.onClick event)
+ ]
+ else if (current_action == relevant_action)
+ then
+ [
+ (Html.Attributes.class "action-button"),
+ (action_to_class relevant_action),
+ (Html.Events.onClick Struct.Event.UndoActionRequest),
+ (Html.Attributes.class "undo")
+ ]
+ else
+ [
+ (Html.Attributes.class "action-button"),
+ (action_to_class relevant_action),
+ (Html.Attributes.class "disabled")
+ ]
+ )
[
- (Html.text
- (
- if (has_a_path char_turn)
- then ("Go & Select Skill Target(s)")
- else ("Select Skill Target(s)")
- )
- )
]
)
+inventory_button : Struct.CharacterTurn.Type -> (Html.Html Struct.Event.Type)
+inventory_button char_turn =
+ (action_or_undo_button
+ (Struct.CharacterTurn.get_action char_turn)
+ Struct.CharacterTurn.SwitchingWeapons
+ Struct.Event.WeaponSwitchRequest
+ )
+
+
attack_button : Struct.CharacterTurn.Type -> (Html.Html Struct.Event.Type)
attack_button char_turn =
- (Html.button
- [ (Html.Events.onClick Struct.Event.AttackRequest) ]
- [
- (Html.text
- (
- if (has_a_path char_turn)
- then ("Go & Select Attack Target")
- else ("Select Attack Target")
- )
- )
- ]
+ (action_or_undo_button
+ (Struct.CharacterTurn.get_action char_turn)
+ Struct.CharacterTurn.Attacking
+ Struct.Event.AttackRequest
)
-abort_button : (Html.Html Struct.Event.Type)
-abort_button =
- (Html.button
- [ (Html.Events.onClick Struct.Event.AbortTurnRequest) ]
- [ (Html.text "Abort") ]
+skip_button : Struct.CharacterTurn.Type -> (Html.Html Struct.Event.Type)
+skip_button char_turn =
+ (action_or_undo_button
+ (Struct.CharacterTurn.get_action char_turn)
+ Struct.CharacterTurn.Skipping
+ Struct.Event.SkipRequest
)
-undo_button : (Html.Html Struct.Event.Type)
-undo_button =
- (Html.button
- [ (Html.Events.onClick Struct.Event.UndoActionRequest) ]
- [ (Html.text "Undo") ]
+skill_button : Struct.CharacterTurn.Type -> (Html.Html Struct.Event.Type)
+skill_button char_turn =
+ (action_or_undo_button
+ (Struct.CharacterTurn.get_action char_turn)
+ Struct.CharacterTurn.UsingSkill
+ Struct.Event.SkillRequest
)
-end_turn_button : (Html.Html Struct.Event.Type)
-end_turn_button =
+abort_button : (Html.Html Struct.Event.Type)
+abort_button =
(Html.button
[
- (Html.Events.onClick Struct.Event.TurnEnded),
- (Html.Attributes.class "end-turn-button")
+ (Html.Attributes.class "action-button"),
+ (Html.Events.onClick Struct.Event.AbortTurnRequest),
+ (Html.Attributes.class "abort-button")
+ ]
+ [
]
- [ (Html.text ("Confirm Turn")) ]
)
-inventory_button : Bool -> (Html.Html Struct.Event.Type)
-inventory_button go_prefix =
+
+path_button : Struct.CharacterTurn.Type -> (Html.Html Struct.Event.Type)
+path_button char_turn =
(Html.button
- [ (Html.Events.onClick Struct.Event.WeaponSwitchRequest) ]
- [
- (Html.text
+ (
+ if
+ (
+ (
+ (Struct.CharacterTurn.get_action char_turn)
+ == Struct.CharacterTurn.None
+ )
+ &&
(
- if (go_prefix)
- then ("Go & Switch Weapon")
- else ("Switch Weapon")
+ case (Struct.CharacterTurn.maybe_get_navigator char_turn) of
+ Nothing -> False
+ (Just nav) -> ((Struct.Navigator.get_path nav) /= [])
)
)
+ then
+ if ((Struct.CharacterTurn.get_path char_turn) == [])
+ then
+ [
+ (Html.Attributes.class "action-button"),
+ (Html.Attributes.class "path-button"),
+ (Html.Events.onClick Struct.Event.MoveRequest)
+ ]
+ else
+ [
+ (Html.Attributes.class "action-button"),
+ (Html.Attributes.class "path-button"),
+ (Html.Events.onClick Struct.Event.UndoActionRequest),
+ (Html.Attributes.class "undo")
+ ]
+ else
+ [
+ (Html.Attributes.class "action-button"),
+ (Html.Attributes.class "path-button"),
+ (Html.Attributes.class "disabled"),
+ (Html.Attributes.class
+ (
+ if ((Struct.CharacterTurn.get_path char_turn) == [])
+ then ""
+ else "undo"
+ )
+ )
+ ]
+ )
+ [
]
)
+end_turn_button : Struct.CharacterTurn.Type -> (Html.Html Struct.Event.Type)
+end_turn_button char_turn =
+ let
+ registered_path = (Struct.CharacterTurn.get_path char_turn)
+ action = (Struct.CharacterTurn.get_action char_turn)
+ temporary_path =
+ case (Struct.CharacterTurn.maybe_get_navigator char_turn) of
+ Nothing -> []
+ (Just nav) -> (Struct.Navigator.get_path nav)
+ in
+ (Html.button
+ [
+ (
+ if
+ (
+ (temporary_path /= registered_path)
+ ||
+ (
+ (Struct.CharacterTurn.is_aiming_at_something char_turn)
+ && (action /= Struct.CharacterTurn.Attacking)
+ && (action /= Struct.CharacterTurn.UsingSkill)
+ )
+ ||
+ (
+ (registered_path == [])
+ && (action == Struct.CharacterTurn.None)
+ )
+ )
+ then (Html.Attributes.class "disabled")
+ else (Html.Events.onClick Struct.Event.TurnEnded)
+ ),
+ (Html.Attributes.class "action-button"),
+ (Html.Attributes.class "end-turn-button"),
+ (Html.Attributes.class
+ (
+ if (registered_path == [])
+ then "no-path-was-queued"
+ else "path-was-queued"
+ )
+ ),
+ (action_to_class (Struct.CharacterTurn.get_action char_turn))
+ ]
+ [
+ ]
+ )
+
get_available_actions : (
Struct.CharacterTurn.Type ->
(List (Html.Html Struct.Event.Type))
)
get_available_actions char_turn =
- if ((Struct.CharacterTurn.get_action char_turn) == Struct.CharacterTurn.None)
- then
- [
- (attack_button char_turn),
- (skill_button char_turn),
- (inventory_button (has_a_path char_turn)),
- (end_turn_button),
- (abort_button)
- ]
- else
- [
- (end_turn_button),
- (undo_button),
- (abort_button)
- ]
+ [
+ (abort_button),
+ (skip_button char_turn),
+ (path_button char_turn),
+ (attack_button char_turn),
+ (skill_button char_turn),
+ (inventory_button char_turn),
+ (end_turn_button char_turn)
+ ]
--------------------------------------------------------------------------------
-- EXPORTED --------------------------------------------------------------------
@@ -133,19 +245,26 @@ get_html char_turn player_ix =
player_ix
char
),
- (
- if
- (
- (Struct.CharacterTurn.get_action char_turn)
- ==
- Struct.CharacterTurn.None
- )
- then (View.Controlled.ManualControls.get_html)
- else (Shared.Util.Html.nothing)
- ),
(Html.div
- [(Html.Attributes.class "controlled-actions")]
- (get_available_actions char_turn)
+ [
+ (Html.Attributes.class "controlled-controls")
+ ]
+ [
+ (Html.div
+ [(Html.Attributes.class "controlled-actions")]
+ (get_available_actions char_turn)
+ ),
+ (
+ if
+ (
+ (Struct.CharacterTurn.get_action char_turn)
+ ==
+ Struct.CharacterTurn.None
+ )
+ then (View.Controlled.ManualControls.get_html)
+ else (Shared.Util.Html.nothing)
+ )
+ ]
)
]
)
diff --git a/src/battle/src/View/Controlled/ManualControls.elm b/src/battle/src/View/Controlled/ManualControls.elm
index 8c8c802..cb53c59 100644
--- a/src/battle/src/View/Controlled/ManualControls.elm
+++ b/src/battle/src/View/Controlled/ManualControls.elm
@@ -31,18 +31,6 @@ direction_button dir label =
[]
)
-go_button : (Html.Html Struct.Event.Type)
-go_button =
- (Html.button
- [
- (Html.Attributes.class "manual-controls-go"),
- (Html.Events.onClick Struct.Event.AttackRequest)
- ]
- [
- (Html.text "Go")
- ]
- )
-
--------------------------------------------------------------------------------
-- EXPORTED --------------------------------------------------------------------
--------------------------------------------------------------------------------
@@ -56,7 +44,6 @@ get_html =
(direction_button BattleMap.Struct.Direction.Left "left"),
(direction_button BattleMap.Struct.Direction.Down "down"),
(direction_button BattleMap.Struct.Direction.Up "up"),
- (direction_button BattleMap.Struct.Direction.Right "right"),
- (go_button)
+ (direction_button BattleMap.Struct.Direction.Right "right")
]
)