From bd104b65b2fd5924990f4d7009f4972f85e476c3 Mon Sep 17 00:00:00 2001 From: ntr Date: Fri, 5 Jul 2019 18:16:17 +1000 Subject: [PATCH] purge --- client/assets/styles/styles.css | 1 + client/src/animations.test.jsx | 1 - client/src/components/animations.jsx | 3 +- client/src/components/anims/link.jsx | 14 ++++- client/src/components/anims/purge.jsx | 79 +++++++++++++++++++++++++++ client/src/components/anims/ruin.jsx | 15 +++++ server/src/skill.rs | 1 + 7 files changed, 111 insertions(+), 3 deletions(-) create mode 100644 client/src/components/anims/purge.jsx diff --git a/client/assets/styles/styles.css b/client/assets/styles/styles.css index 4c3ac69c..5eae445b 100644 --- a/client/assets/styles/styles.css +++ b/client/assets/styles/styles.css @@ -259,6 +259,7 @@ button[disabled] { .blue { color: #3498db; stroke: #3498db; + stroke-linecap: round; } .yellow { diff --git a/client/src/animations.test.jsx b/client/src/animations.test.jsx index 62b9b833..203e3976 100644 --- a/client/src/animations.test.jsx +++ b/client/src/animations.test.jsx @@ -92,7 +92,6 @@ const SKILLS = [ 'HasteI', 'HasteStrike', 'HealI', - 'HexI', 'HybridBlast', 'HybridI', 'InterceptI', diff --git a/client/src/components/animations.jsx b/client/src/components/animations.jsx index eb9d4084..c437041b 100644 --- a/client/src/components/animations.jsx +++ b/client/src/components/animations.jsx @@ -26,6 +26,7 @@ const Intercept = require('./anims/intercept'); const Invert = require('./anims/invert'); const Link = require('./anims/link'); const Purify = require('./anims/purify'); +const Purge = require('./anims/purge'); const Recharge = require('./anims/recharge'); const Refl = require('./anims/reflect'); const Restrict = require('./anims/restrict'); @@ -136,7 +137,7 @@ function animations(props) { case 'Decay': return ; case 'DecayTick': return ; case 'Invert': return ; - case 'Purge': return false; + case 'Purge': return ; case 'Silence': return ; case 'Restrict': return ; diff --git a/client/src/components/anims/link.jsx b/client/src/components/anims/link.jsx index d747f60e..dc9e7ec9 100644 --- a/client/src/components/anims/link.jsx +++ b/client/src/components/anims/link.jsx @@ -28,7 +28,19 @@ class Link extends Component { - + + + + + + + + + + + + + + + + ); + } + + componentDidMount() { + this.animations.push(anime({ + targets: ['#purge'], + opacity: [ + { value: 1, delay: TIMES.TARGET_DELAY_MS, duration: TIMES.TARGET_DURATION_MS * 0.2 }, + { value: 0, delay: TIMES.TARGET_DURATION_MS * 0.6, duration: TIMES.TARGET_DURATION_MS * 0.2 }, + ], + easing: 'easeInOutSine', + })); + + this.animations.push(anime({ + targets: ['#purge g'], + strokeWidth: [15, 0], + delay: TIMES.TARGET_DELAY_MS, + duration: TIMES.TARGET_DURATION_MS, + easing: 'easeInSine', + })); + + this.animations.push(anime({ + targets: ['#purgeFilter'], + stdDeviation: 20, + duration: TIMES.TARGET_DURATION_MS, + easing: 'easeInOutSine', + })); + } + + // this is necessary because + // skipping / timing / unmounting race conditions + // can cause the animations to cut short, this will ensure the values are reset + // because preact will recycle all these components + componentWillUnmount() { + for (let i = this.animations.length - 1; i >= 0; i--) { + this.animations[i].reset(); + } + } +} + +module.exports = Purge; diff --git a/client/src/components/anims/ruin.jsx b/client/src/components/anims/ruin.jsx index 36afdbc1..fd365cab 100644 --- a/client/src/components/anims/ruin.jsx +++ b/client/src/components/anims/ruin.jsx @@ -47,6 +47,21 @@ class Ruin extends Component { style="opacity: 0.5" /> + + + + + ); } diff --git a/server/src/skill.rs b/server/src/skill.rs index 5a24f4ff..5fa29ca8 100644 --- a/server/src/skill.rs +++ b/server/src/skill.rs @@ -1655,6 +1655,7 @@ fn silence(source: &mut Construct, target: &mut Construct, mut results: Resoluti } fn purge(source: &mut Construct, target: &mut Construct, mut results: Resolutions, skill: Skill) -> Resolutions { + results.push(Resolution::new(source, target).event(Event::Skill { skill })); while let Some(i) = target.effects .iter() .position(|ce| {