summaryrefslogtreecommitdiff |
diff options
author | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2020-05-29 15:59:35 +0200 |
---|---|---|
committer | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2020-05-29 15:59:35 +0200 |
commit | 9193b4b42310f6d5712373a4adcb95375e3699e9 (patch) | |
tree | ecd8732453fdd04d02a887141b42369f0ae3c498 | |
parent | 55eb0dce8e2b9bb2c26f856640c1116cb07973ce (diff) |
Fixes the puppeteer's animations; display more navigators.
-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); } |