| summaryrefslogtreecommitdiff | 
diff options
| author | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2020-05-28 00:11:00 +0200 | 
|---|---|---|
| committer | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2020-05-28 00:11:00 +0200 | 
| commit | 75aa816dedb09e0e1bc395f6e9ae94e1b9e993a1 (patch) | |
| tree | a4e29cb758facc31ee99b8a59139bb2bd85d1ab1 /src/battle | |
| parent | e625907e5846bba7f9fb66375700f35eb2c6be39 (diff) | |
Missing files + New Control UI.
Diffstat (limited to 'src/battle')
| -rw-r--r-- | src/battle/src/ElmModule/Update.elm | 12 | ||||
| -rw-r--r-- | src/battle/src/Struct/CharacterTurn.elm | 8 | ||||
| -rw-r--r-- | src/battle/src/Struct/Event.elm | 3 | ||||
| -rw-r--r-- | src/battle/src/Struct/Navigator.elm | 2 | ||||
| -rw-r--r-- | src/battle/src/Update/CharacterTurn/Move.elm | 34 | ||||
| -rw-r--r-- | src/battle/src/Update/CharacterTurn/ResetPath.elm | 73 | ||||
| -rw-r--r-- | src/battle/src/Update/CharacterTurn/Skill.elm | 37 | ||||
| -rw-r--r-- | src/battle/src/Update/CharacterTurn/Skip.elm | 42 | ||||
| -rw-r--r-- | src/battle/src/Update/CharacterTurn/UndoAction.elm | 54 | ||||
| -rw-r--r-- | src/battle/src/Util/Navigator.elm | 87 | ||||
| -rw-r--r-- | src/battle/src/View/Controlled.elm | 273 | ||||
| -rw-r--r-- | src/battle/src/View/Controlled/ManualControls.elm | 15 | 
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")        ]     ) | 


