| summaryrefslogtreecommitdiff | 
diff options
| -rw-r--r-- | src/battle/src/Constants/DisplayEffects.elm | 3 | ||||
| -rw-r--r-- | src/battle/src/Struct/Attack.elm | 6 | ||||
| -rw-r--r-- | src/battle/src/Struct/Battle.elm | 2 | ||||
| -rw-r--r-- | src/battle/src/Struct/Character.elm | 6 | ||||
| -rw-r--r-- | src/battle/src/Struct/Model.elm | 2 | ||||
| -rw-r--r-- | src/battle/src/Struct/PuppeteerAction.elm | 152 | ||||
| -rw-r--r-- | src/battle/src/Struct/UI.elm | 18 | ||||
| -rw-r--r-- | src/battle/src/Update/CharacterTurn.elm | 4 | ||||
| -rw-r--r-- | src/battle/src/Update/CharacterTurn/ToggleTarget.elm | 8 | ||||
| -rw-r--r-- | src/battle/src/Update/HandleServerReply.elm | 4 | ||||
| -rw-r--r-- | src/battle/src/Update/Puppeteer.elm | 27 | ||||
| -rw-r--r-- | src/battle/src/Update/Puppeteer/DisplayCharacterNavigator.elm | 72 | ||||
| -rw-r--r-- | src/battle/src/Update/Puppeteer/SkipTo.elm | 3 | ||||
| -rw-r--r-- | src/battle/src/Update/SelectTile.elm | 4 | ||||
| -rw-r--r-- | src/battle/src/Update/UI/ChangeScale.elm | 2 | ||||
| -rw-r--r-- | src/battle/src/Update/UI/SelectTab.elm | 2 | ||||
| -rw-r--r-- | src/css/src/battle/map/character-effects.scss | 2 | 
17 files changed, 224 insertions, 93 deletions
| diff --git a/src/battle/src/Constants/DisplayEffects.elm b/src/battle/src/Constants/DisplayEffects.elm index 21bdd51..9b0b99f 100644 --- a/src/battle/src/Constants/DisplayEffects.elm +++ b/src/battle/src/Constants/DisplayEffects.elm @@ -24,6 +24,9 @@ switching_weapons = "switching-weapons"  attacking : String  attacking = "attacking" +attack_target : String +attack_target = "attack-target" +  using_skill : String  using_skill = "using-skill" diff --git a/src/battle/src/Struct/Attack.elm b/src/battle/src/Struct/Attack.elm index 08803ce..527ff2d 100644 --- a/src/battle/src/Struct/Attack.elm +++ b/src/battle/src/Struct/Attack.elm @@ -3,7 +3,8 @@ module Struct.Attack exposing        Type,        Order(..),        Precision(..), -      decoder +      decoder, +      get_order     )  -- Elm ------------------------------------------------------------------------- @@ -63,6 +64,9 @@ precision_decoder =  --------------------------------------------------------------------------------  -- EXPORTED --------------------------------------------------------------------  -------------------------------------------------------------------------------- +get_order : Type -> Order +get_order at = at.order +  decoder : (Json.Decode.Decoder Type)  decoder =     (Json.Decode.map5 diff --git a/src/battle/src/Struct/Battle.elm b/src/battle/src/Struct/Battle.elm index ba58148..b85c787 100644 --- a/src/battle/src/Struct/Battle.elm +++ b/src/battle/src/Struct/Battle.elm @@ -136,7 +136,7 @@ add_character : Struct.Character.Type -> Type -> Type  add_character s0char battle =     let        s1char = -         (Struct.Character.reset_extra_display_effects +         (Struct.Character.clear_extra_display_effects              battle.own_player_ix              s0char           ) diff --git a/src/battle/src/Struct/Character.elm b/src/battle/src/Struct/Character.elm index d1ccedf..0e34626 100644 --- a/src/battle/src/Struct/Character.elm +++ b/src/battle/src/Struct/Character.elm @@ -26,7 +26,7 @@ module Struct.Character exposing        remove_extra_display_effect,        get_extra_display_effects,        get_extra_display_effects_list, -      reset_extra_display_effects, +      clear_extra_display_effects,        decoder,        resolve     ) @@ -270,8 +270,8 @@ get_extra_display_effects char = char.extra_display_effects  get_extra_display_effects_list : Type -> (List String)  get_extra_display_effects_list char = (Set.toList char.extra_display_effects) -reset_extra_display_effects : Int -> Type -> Type -reset_extra_display_effects viewer_ix char = +clear_extra_display_effects : Int -> Type -> Type +clear_extra_display_effects viewer_ix char =     {char |        extra_display_effects =           (Set.fromList diff --git a/src/battle/src/Struct/Model.elm b/src/battle/src/Struct/Model.elm index d121792..0398fa5 100644 --- a/src/battle/src/Struct/Model.elm +++ b/src/battle/src/Struct/Model.elm @@ -86,7 +86,7 @@ clear model =     {model |        message_board = (Struct.MessageBoard.clear model.message_board),        ui = -         (Struct.UI.reset_displayed_navigator +         (Struct.UI.clear_displayed_navigator              (Struct.UI.set_previous_action Nothing model.ui)           ),        char_turn = (Struct.CharacterTurn.new) diff --git a/src/battle/src/Struct/PuppeteerAction.elm b/src/battle/src/Struct/PuppeteerAction.elm index 6a131eb..1cd6403 100644 --- a/src/battle/src/Struct/PuppeteerAction.elm +++ b/src/battle/src/Struct/PuppeteerAction.elm @@ -32,6 +32,8 @@ type Effect =     | RefreshCharacter (Bool, Int)     | RefreshCharactersOf (Bool, Int)     | ToggleCharacterEffect (Int, String) +   | DisplayCharacterNavigator Int +   | ClearCharacterNavigator Int -- Need info for it to be reversible     | StartTurn Int     | SwapWeapons Int     | Target (Int, Int) @@ -57,16 +59,11 @@ from_attacked attack =                    (RefreshCharacter (False, defender_ix)),                    (ToggleCharacterEffect                       ( -                        attacker_ix, -                        Constants.DisplayEffects.attacking -                     ) -                  ), -                  (ToggleCharacterEffect -                     (                          defender_ix, -                        Constants.DisplayEffects.target +                        Constants.DisplayEffects.attack_target                       ) -                  ) +                  ), +                  (DisplayCharacterNavigator attacker_ix)                 ]              ),              (PerformFor @@ -83,16 +80,11 @@ from_attacked attack =                    (RefreshCharacter (True, defender_ix)),                    (ToggleCharacterEffect                       ( -                        attacker_ix, -                        Constants.DisplayEffects.attacking -                     ) -                  ), -                  (ToggleCharacterEffect -                     (                          defender_ix, -                        Constants.DisplayEffects.target +                        Constants.DisplayEffects.attack_target                       ) -                  ) +                  ), +                  (ClearCharacterNavigator attacker_ix)                 ]              )           ] @@ -105,36 +97,45 @@ from_targeted target =        target_index = (Struct.TurnResult.get_target_target_index target)     in     [ +      (Perform +         [ +            (ToggleCharacterEffect +               ( +                  actor_index, +                  Constants.DisplayEffects.focused +               ) +            ) +         ] +      ),        (PerformFor           (              2.0,              [ -               (Focus actor_index), -               (ToggleCharacterEffect -                  ( -                     actor_index, -                     Constants.DisplayEffects.focused -                  ) -               ) +               (Focus actor_index)              ]           )        ), +      (Perform +         [ +            (ToggleCharacterEffect +               ( +                  actor_index, +                  Constants.DisplayEffects.focused +               ) +            ), +            (ToggleCharacterEffect +               ( +                  target_index, +                  Constants.DisplayEffects.focused +               ) +            ) +         ] +      ),        (PerformFor           (              2.0,              [ -               (Focus target_index), -               (ToggleCharacterEffect -                  ( -                     actor_index, -                     Constants.DisplayEffects.focused) -                  ), -               (ToggleCharacterEffect -                  ( -                     target_index, -                     Constants.DisplayEffects.focused -                  ) -               ) +               (Focus target_index)              ]           )        ), @@ -155,17 +156,21 @@ from_moved movement =     let actor_ix = (Struct.TurnResult.get_movement_actor_index movement) in        (           [ +            (Perform +               [ +                  (ToggleCharacterEffect +                     ( +                        actor_ix, +                        Constants.DisplayEffects.focused +                     ) +                  ) +               ] +            ),              (PerformFor                 (                    1.0,                    [ -                     (Focus actor_ix), -                     (ToggleCharacterEffect -                        ( -                           actor_ix, -                           Constants.DisplayEffects.focused -                        ) -                     ) +                     (Focus actor_ix)                    ]                 )              ), @@ -206,50 +211,69 @@ from_switched_weapon weapon_switch =        actor_ix = (Struct.TurnResult.get_weapon_switch_actor_index weapon_switch)     in        [ +         (Perform +            [ +               (ToggleCharacterEffect +                  ( +                     actor_ix, +                     Constants.DisplayEffects.focused +                  ) +               ) +            ] +         ),           (PerformFor              (                 1.0,                 [ -                  (Focus actor_ix), -                  (ToggleCharacterEffect -                     ( -                        actor_ix, -                        Constants.DisplayEffects.focused -                     ) +                  (Focus actor_ix) +               ] +            ) +         ), +         (Perform +            [ +               (ToggleCharacterEffect +                  ( +                     actor_ix, +                     Constants.DisplayEffects.focused +                  ) +               ), +               (ToggleCharacterEffect +                  ( +                     actor_ix, +                     Constants.DisplayEffects.switching_weapons                    ) +               ), +               (DisplayCharacterNavigator actor_ix), +               (RefreshCharacter (False, actor_ix)) +            ] +         ), +         (PerformFor +            ( +               1.5, +               [                 ]              )           ),           (PerformFor              ( -               2.0, +               1.5,                 [ -                  (ToggleCharacterEffect -                     ( -                        actor_ix, -                        Constants.DisplayEffects.focused -                     ) -                  ), -                  (ToggleCharacterEffect -                     ( -                        actor_ix, -                        Constants.DisplayEffects.switching_weapons -                     ) -                  ), -                  (RefreshCharacter (False, actor_ix)), +                  (ClearCharacterNavigator actor_ix),                    (SwapWeapons actor_ix), -                  (RefreshCharacter (True, actor_ix)) +                  (DisplayCharacterNavigator actor_ix)                 ]              )           ),           (Perform              [ +               (ClearCharacterNavigator actor_ix),                 (ToggleCharacterEffect                    (                       actor_ix,                       Constants.DisplayEffects.switching_weapons                    ) -               ) +               ), +               (RefreshCharacter (True, actor_ix))              ]           )        ] diff --git a/src/battle/src/Struct/UI.elm b/src/battle/src/Struct/UI.elm index 78469dc..b1cee5c 100644 --- a/src/battle/src/Struct/UI.elm +++ b/src/battle/src/Struct/UI.elm @@ -8,20 +8,20 @@ module Struct.UI exposing        -- Zoom        get_zoom_level, -      reset_zoom_level, +      clear_zoom_level,        mod_zoom_level,        -- Tab        maybe_get_displayed_tab,        set_displayed_tab, -      reset_displayed_tab, +      clear_displayed_tab,        tab_to_string,        get_all_tabs,        -- Navigator        maybe_get_displayed_navigator,        set_displayed_navigator, -      reset_displayed_navigator, +      clear_displayed_navigator,        -- Manual Controls        has_manual_controls_enabled, @@ -83,8 +83,8 @@ default =  get_zoom_level : Type -> Float  get_zoom_level ui = ui.zoom_level -reset_zoom_level : Type -> Type -reset_zoom_level ui = {ui | zoom_level = 1.0} +clear_zoom_level : Type -> Type +clear_zoom_level ui = {ui | zoom_level = 1.0}  mod_zoom_level : Float -> Type -> Type  mod_zoom_level mod ui = {ui | zoom_level = (mod * ui.zoom_level)} @@ -96,8 +96,8 @@ maybe_get_displayed_tab ui = ui.displayed_tab  set_displayed_tab : Tab -> Type -> Type  set_displayed_tab tab ui = {ui | displayed_tab = (Just tab)} -reset_displayed_tab : Type -> Type -reset_displayed_tab ui = {ui | displayed_tab = Nothing} +clear_displayed_tab : Type -> Type +clear_displayed_tab ui = {ui | displayed_tab = Nothing}  tab_to_string : Tab -> String  tab_to_string tab = @@ -119,8 +119,8 @@ maybe_get_displayed_navigator ui = ui.displayed_navigator  set_displayed_navigator : Struct.Navigator.Type -> Type -> Type  set_displayed_navigator nav ui = {ui | displayed_navigator = (Just nav)} -reset_displayed_navigator : Type -> Type -reset_displayed_navigator ui = {ui | displayed_navigator = Nothing} +clear_displayed_navigator : Type -> Type +clear_displayed_navigator ui = {ui | displayed_navigator = Nothing}  -- ManualControls --------------------------------------------------------------  has_manual_controls_enabled : Type -> Bool diff --git a/src/battle/src/Update/CharacterTurn.elm b/src/battle/src/Update/CharacterTurn.elm index 90811c3..165d7aa 100644 --- a/src/battle/src/Update/CharacterTurn.elm +++ b/src/battle/src/Update/CharacterTurn.elm @@ -57,8 +57,8 @@ apply_to target_char model =                    model.battle                 ),              ui = -               (Struct.UI.reset_displayed_navigator -                  (Struct.UI.reset_displayed_tab +               (Struct.UI.clear_displayed_navigator +                  (Struct.UI.clear_displayed_tab                       (Struct.UI.set_previous_action Nothing model.ui)                    )                 ) diff --git a/src/battle/src/Update/CharacterTurn/ToggleTarget.elm b/src/battle/src/Update/CharacterTurn/ToggleTarget.elm index aed38b3..67674a3 100644 --- a/src/battle/src/Update/CharacterTurn/ToggleTarget.elm +++ b/src/battle/src/Update/CharacterTurn/ToggleTarget.elm @@ -70,8 +70,8 @@ toggle_attack_character model target_char_id =              model.battle           ),        ui = -         (Struct.UI.reset_displayed_navigator -            (Struct.UI.reset_displayed_tab +         (Struct.UI.clear_displayed_navigator +            (Struct.UI.clear_displayed_tab                 (Struct.UI.set_previous_action Nothing model.ui)              )           ) @@ -98,8 +98,8 @@ undo_attack_character model target_char_id =              model.battle           ),        ui = -         (Struct.UI.reset_displayed_navigator -            (Struct.UI.reset_displayed_tab +         (Struct.UI.clear_displayed_navigator +            (Struct.UI.clear_displayed_tab                 (Struct.UI.set_previous_action Nothing model.ui)              )           ) diff --git a/src/battle/src/Update/HandleServerReply.elm b/src/battle/src/Update/HandleServerReply.elm index 43b8185..501d895 100644 --- a/src/battle/src/Update/HandleServerReply.elm +++ b/src/battle/src/Update/HandleServerReply.elm @@ -222,7 +222,9 @@ set_timeline turn_results model =              (List.foldr                 (\turn_result puppeteer ->                    (Struct.Puppeteer.append_backward -                     (Struct.PuppeteerAction.from_turn_result turn_result) +                     (List.reverse +                        (Struct.PuppeteerAction.from_turn_result turn_result) +                     )                       puppeteer                    )                 ) diff --git a/src/battle/src/Update/Puppeteer.elm b/src/battle/src/Update/Puppeteer.elm index b2527e8..ffa1d10 100644 --- a/src/battle/src/Update/Puppeteer.elm +++ b/src/battle/src/Update/Puppeteer.elm @@ -11,6 +11,7 @@ import Struct.PuppeteerAction  import Update.Puppeteer.AnnounceLoss  import Update.Puppeteer.AnnounceVictory +import Update.Puppeteer.DisplayCharacterNavigator  import Update.Puppeteer.Focus  import Update.Puppeteer.Hit  import Update.Puppeteer.Move @@ -67,6 +68,18 @@ forward effect model =              model           ) +      (Struct.PuppeteerAction.DisplayCharacterNavigator character_ix) -> +         (Update.Puppeteer.DisplayCharacterNavigator.forward +            character_ix +            model +         ) + +      (Struct.PuppeteerAction.ClearCharacterNavigator character_ix) -> +         (Update.Puppeteer.DisplayCharacterNavigator.backward +            character_ix +            model +         ) +        (Struct.PuppeteerAction.StartTurn player_ix) ->           (Update.Puppeteer.StartTurn.forward player_ix model) @@ -102,6 +115,18 @@ backward effect model =              model           ) +      (Struct.PuppeteerAction.DisplayCharacterNavigator character_ix) -> +         (Update.Puppeteer.DisplayCharacterNavigator.backward +            character_ix +            model +         ) + +      (Struct.PuppeteerAction.ClearCharacterNavigator character_ix) -> +         (Update.Puppeteer.DisplayCharacterNavigator.forward +            character_ix +            model +         ) +        (Struct.PuppeteerAction.Move (character_ix, direction)) ->           (Update.Puppeteer.Move.backward character_ix direction model) @@ -223,7 +248,7 @@ apply_to_rec model cmds =                          else (apply_effects_backward effects model)                       )                 in -                  if (Struct.Puppeteer.get_is_ignoring_time model.puppeteer) +                  if (Struct.Puppeteer.get_is_ignoring_time new_model.puppeteer)                    then (apply_to_rec new_model (new_cmds ++ cmds))                    else                       ( diff --git a/src/battle/src/Update/Puppeteer/DisplayCharacterNavigator.elm b/src/battle/src/Update/Puppeteer/DisplayCharacterNavigator.elm new file mode 100644 index 0000000..8a253a9 --- /dev/null +++ b/src/battle/src/Update/Puppeteer/DisplayCharacterNavigator.elm @@ -0,0 +1,72 @@ +module Update.Puppeteer.DisplayCharacterNavigator exposing +   ( +      forward, +      backward +   ) + +-- Elm ------------------------------------------------------------------------- +import Task + +-- Local Module ---------------------------------------------------------------- +import Struct.Battle +import Struct.Character +import Struct.Error +import Struct.Event +import Struct.Model +import Struct.UI + +import Util.Navigator + +-------------------------------------------------------------------------------- +-- LOCAL ----------------------------------------------------------------------- +-------------------------------------------------------------------------------- +display_character_navigator : ( +      Struct.Character.Type -> +      Struct.Model.Type -> +      (Struct.Model.Type, (List (Cmd Struct.Event.Type))) +   ) +display_character_navigator char model = +   ( +      {model | +         ui = +            (Struct.UI.set_displayed_navigator +               (Util.Navigator.get_character_attack_navigator +                  model.battle +                  char +               ) +               model.ui +            ) +      }, +      [] +   ) + +-------------------------------------------------------------------------------- +-- EXPORTED -------------------------------------------------------------------- +-------------------------------------------------------------------------------- +forward : ( +      Int -> +      Struct.Model.Type -> +      (Struct.Model.Type, (List (Cmd Struct.Event.Type))) +   ) +forward char_ix model = +   case (Struct.Battle.get_character char_ix model.battle) of +      (Just char) -> (display_character_navigator char model) +      Nothing -> +         ( +            (Struct.Model.invalidate +               (Struct.Error.new +                  Struct.Error.Programming +                  "Puppeteer tried displaying navigator of unknown character." +               ) +               model +            ), +            [] +         ) + +backward : ( +      Int -> +      Struct.Model.Type -> +      (Struct.Model.Type, (List (Cmd Struct.Event.Type))) +   ) +backward char_ix model = +   ({model | ui = (Struct.UI.clear_displayed_navigator model.ui)}, []) diff --git a/src/battle/src/Update/Puppeteer/SkipTo.elm b/src/battle/src/Update/Puppeteer/SkipTo.elm index d3b20aa..e390124 100644 --- a/src/battle/src/Update/Puppeteer/SkipTo.elm +++ b/src/battle/src/Update/Puppeteer/SkipTo.elm @@ -54,7 +54,8 @@ apply_to skip_forward model =           (restore_puppeteer              (Struct.Puppeteer.get_is_paused model.puppeteer)              (Struct.Puppeteer.get_is_playing_forward model.puppeteer) -         ) +         ), +         (Update.Puppeteer.apply_to)        ]        {model |           puppeteer = diff --git a/src/battle/src/Update/SelectTile.elm b/src/battle/src/Update/SelectTile.elm index 50f6420..b149d00 100644 --- a/src/battle/src/Update/SelectTile.elm +++ b/src/battle/src/Update/SelectTile.elm @@ -70,7 +70,7 @@ go_to_current_tile model loc_ref =        (           {model |              ui = -               (Struct.UI.reset_displayed_navigator +               (Struct.UI.clear_displayed_navigator                    (Struct.UI.set_displayed_tab                       (Struct.UI.TileStatusTab loc_ref)                       (Struct.UI.set_previous_action @@ -211,7 +211,7 @@ apply_to loc_ref model =           (              {model |                 ui = -                  (Struct.UI.reset_displayed_navigator +                  (Struct.UI.clear_displayed_navigator                       (Struct.UI.set_displayed_tab                          (Struct.UI.TileStatusTab loc_ref)                          (Struct.UI.set_previous_action diff --git a/src/battle/src/Update/UI/ChangeScale.elm b/src/battle/src/Update/UI/ChangeScale.elm index cacde41..1533b4d 100644 --- a/src/battle/src/Update/UI/ChangeScale.elm +++ b/src/battle/src/Update/UI/ChangeScale.elm @@ -19,5 +19,5 @@ apply_to : (     )  apply_to mod model =     if (mod == 0.0) -   then ({model | ui = (Struct.UI.reset_zoom_level model.ui)}, Cmd.none) +   then ({model | ui = (Struct.UI.clear_zoom_level model.ui)}, Cmd.none)     else ({model | ui = (Struct.UI.mod_zoom_level mod model.ui)}, Cmd.none) diff --git a/src/battle/src/Update/UI/SelectTab.elm b/src/battle/src/Update/UI/SelectTab.elm index 0c2d6de..01573a8 100644 --- a/src/battle/src/Update/UI/SelectTab.elm +++ b/src/battle/src/Update/UI/SelectTab.elm @@ -21,7 +21,7 @@ apply_to tab model =     if ((Struct.UI.maybe_get_displayed_tab model.ui) == (Just tab))     then        ( -         {model | ui = (Struct.UI.reset_displayed_tab model.ui)}, +         {model | ui = (Struct.UI.clear_displayed_tab model.ui)},           Cmd.none        )     else diff --git a/src/css/src/battle/map/character-effects.scss b/src/css/src/battle/map/character-effects.scss index e2902f0..aeb08f1 100644 --- a/src/css/src/battle/map/character-effects.scss +++ b/src/css/src/battle/map/character-effects.scss @@ -58,7 +58,7 @@     background-image: url(/asset/svg/damage_type/swapwp.svg);  } -.character-icon.display-effect-attacking > .character-icon-above-effect +.character-icon.display-effect-attack-target > .character-icon-above-effect  {     background-image: url(/asset/svg/damage_type/attack.svg);  } | 


