summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathanael Sensfelder <SpamShield0@MultiAgentSystems.org>2020-05-29 15:59:35 +0200
committerNathanael Sensfelder <SpamShield0@MultiAgentSystems.org>2020-05-29 15:59:35 +0200
commit9193b4b42310f6d5712373a4adcb95375e3699e9 (patch)
treeecd8732453fdd04d02a887141b42369f0ae3c498
parent55eb0dce8e2b9bb2c26f856640c1116cb07973ce (diff)
Fixes the puppeteer's animations; display more navigators.
-rw-r--r--src/battle/src/Constants/DisplayEffects.elm3
-rw-r--r--src/battle/src/Struct/Attack.elm6
-rw-r--r--src/battle/src/Struct/Battle.elm2
-rw-r--r--src/battle/src/Struct/Character.elm6
-rw-r--r--src/battle/src/Struct/Model.elm2
-rw-r--r--src/battle/src/Struct/PuppeteerAction.elm152
-rw-r--r--src/battle/src/Struct/UI.elm18
-rw-r--r--src/battle/src/Update/CharacterTurn.elm4
-rw-r--r--src/battle/src/Update/CharacterTurn/ToggleTarget.elm8
-rw-r--r--src/battle/src/Update/HandleServerReply.elm4
-rw-r--r--src/battle/src/Update/Puppeteer.elm27
-rw-r--r--src/battle/src/Update/Puppeteer/DisplayCharacterNavigator.elm72
-rw-r--r--src/battle/src/Update/Puppeteer/SkipTo.elm3
-rw-r--r--src/battle/src/Update/SelectTile.elm4
-rw-r--r--src/battle/src/Update/UI/ChangeScale.elm2
-rw-r--r--src/battle/src/Update/UI/SelectTab.elm2
-rw-r--r--src/css/src/battle/map/character-effects.scss2
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);
}