summaryrefslogtreecommitdiff |
diff options
-rw-r--r-- | src/battlemap/src/Struct/Attack.elm | 4 | ||||
-rw-r--r-- | src/battlemap/src/View/SideBar/TabMenu/Timeline/Attack.elm | 145 | ||||
-rw-r--r-- | src/battlemap/www/style.css | 12 |
3 files changed, 149 insertions, 12 deletions
diff --git a/src/battlemap/src/Struct/Attack.elm b/src/battlemap/src/Struct/Attack.elm index 16df73f..4eab68e 100644 --- a/src/battlemap/src/Struct/Attack.elm +++ b/src/battlemap/src/Struct/Attack.elm @@ -1,8 +1,8 @@ module Struct.Attack exposing ( Type, - Order, - Precision, + Order(..), + Precision(..), apply_to_characters, decoder ) diff --git a/src/battlemap/src/View/SideBar/TabMenu/Timeline/Attack.elm b/src/battlemap/src/View/SideBar/TabMenu/Timeline/Attack.elm index 2fa7e0a..fd95281 100644 --- a/src/battlemap/src/View/SideBar/TabMenu/Timeline/Attack.elm +++ b/src/battlemap/src/View/SideBar/TabMenu/Timeline/Attack.elm @@ -8,6 +8,7 @@ import Html.Attributes --import Html.Events -- Battlemap ------------------------------------------------------------------- +import Struct.Attack import Struct.Event import Struct.TurnResult import Struct.Character @@ -16,6 +17,130 @@ import Struct.Model -------------------------------------------------------------------------------- -- LOCAL ----------------------------------------------------------------------- -------------------------------------------------------------------------------- +get_title_html : ( + Struct.Character.Type -> + Struct.Character.Type -> + (Html.Html Struct.Event.Type) + ) +get_title_html attacker defender = + (Html.div + [ + (Html.Attributes.class "battlemap-timeline-attack-title") + ] + [ + (Html.text + ( + (Struct.Character.get_name attacker) + ++ " attacked " + ++ (Struct.Character.get_name defender) + ++ "!" + ) + ) + ] + ) + +get_portrait_html : ( + Struct.Character.Type -> + Bool -> + (Html.Html Struct.Event.Type) + ) +get_portrait_html char float_left = + (Html.div + [ + (Html.Attributes.class "battlemap-timeline-portrait"), + ( + if (float_left) + then + (Html.Attributes.class "battlemap-float-left") + else + (Html.Attributes.class "battlemap-float-right") + ), + (Html.Attributes.class + ( + "asset-character-portrait-" + ++ (Struct.Character.get_portrait_id char) + ) + ) + ] + [ + ] + ) + +get_effect_text : Struct.Attack.Type -> String +get_effect_text attack = + ( + ( + case attack.precision of + Struct.Attack.Hit -> " hits for " + Struct.Attack.Graze -> " grazes for " + Struct.Attack.Miss -> " misses." + ) + ++ + ( + if (attack.precision == Struct.Attack.Miss) + then + "" + else + ( + ((toString attack.damage) ++ " damage") + ++ + ( + if (attack.critical) + then " (Critical)." + else "." + ) + ) + ) + ) + +get_attack_html : ( + Struct.Character.Type -> + Struct.Character.Type -> + Struct.Attack.Type -> + (Html.Html Struct.Event.Type) + ) +get_attack_html attacker defender attack = + let + attacker_name = (Struct.Character.get_name attacker) + defender_name = (Struct.Character.get_name defender) + in + (Html.div + [] + [ + (Html.text + ( + case (attack.order, attack.parried) of + (Struct.Attack.Counter, True) -> + ( + defender_name + ++ " attempts to strike back, but " + ++ attacker_name + ++ " parries, and " + ++ (get_effect_text attack) + ) + + (Struct.Attack.Counter, _) -> + ( + defender_name + ++ " strikes back, and " + ++ (get_effect_text attack) + ) + + (_, True) -> + ( + attacker_name + ++ " attempts a hit, but " + ++ defender_name + ++ " parries, and " + ++ (get_effect_text attack) + ) + + (_, _) -> + (attacker_name ++ " " ++ (get_effect_text attack)) + ) + ) + ] + ) -------------------------------------------------------------------------------- -- EXPORTED -------------------------------------------------------------------- @@ -38,16 +163,18 @@ get_html model attack = (Html.Attributes.class "battlemap-timeline-element"), (Html.Attributes.class "battlemap-timeline-attack") ] - [ - (Html.text - ( - (Struct.Character.get_name atkchar) - ++ " attacked " - ++ (Struct.Character.get_name defchar) - ++ "!" - ) + ( + [ + (get_portrait_html atkchar True), + (get_portrait_html defchar False), + (get_title_html atkchar defchar) + ] + ++ + (List.map + (get_attack_html atkchar defchar) + attack.sequence ) - ] + ) ) _ -> diff --git a/src/battlemap/www/style.css b/src/battlemap/www/style.css index 149eafc..08ec900 100644 --- a/src/battlemap/www/style.css +++ b/src/battlemap/www/style.css @@ -96,6 +96,9 @@ width: inherit; } +.battlemap-float-left { float: left; } +.battlemap-float-right { float: right; } + .battlemap-manual-controls { max-height: 30%; @@ -117,7 +120,8 @@ flex-wrap: wrap; } -.battlemap-character-portrait +.battlemap-character-portrait, +.battlemap-timeline-portrait { margin: 0.5em; box-sizing: border-box; @@ -154,6 +158,12 @@ height: 64px; float: left; } + +.battlemap-timeline-portrait +{ + width: 64px; + height: 64px; +} /******************************************************************************/ /** Main View Elements ********************************************************/ /******************************************************************************/ |