diff --git a/client/src/animations.utils.jsx b/client/src/animations.utils.jsx index e0cc1bdb..630d6b99 100644 --- a/client/src/animations.utils.jsx +++ b/client/src/animations.utils.jsx @@ -23,22 +23,7 @@ function getAnimTarget(resolution, account) { }; } -function getFocusTargets(resolution, game, account) { - if (resolution.variant[1] === 'HitAoe') { - const playerTeam = game.players.find(t => t.id === account.id); - const playerTeamIds = playerTeam.constructs.map(c => c.id); - const otherTeam = game.players.find(t => t.id !== account.id); - const otherTeamIds = otherTeam.constructs.map(c => c.id); - if (resolution.cast.player === account) return playerTeamIds; - return otherTeamIds; - } - - const { source, target } = resolution.cast; - return [source, target]; -} - module.exports = { getAnimSource, getAnimTarget, - getFocusTargets, }; diff --git a/client/src/events.jsx b/client/src/events.jsx index 84753cec..9ca8026d 100644 --- a/client/src/events.jsx +++ b/client/src/events.jsx @@ -5,7 +5,7 @@ const eachSeries = require('async/eachSeries'); const sample = require('lodash/sample'); const actions = require('./actions'); -const { getAnimSource, getAnimTarget, getFocusTargets } = require('./animations.utils'); +const { getAnimSource, getAnimTarget } = require('./animations.utils'); const { infoToast, errorToast } = require('./utils'); const { tutorialVbox } = require('./tutorial.utils'); const { TIMES } = require('./constants'); @@ -90,18 +90,19 @@ function registerEvents(store) { const newRes = game.events[currentGame.events.length]; return eachSeries(newRes, (r, cb) => { const timeout = r.delay; - const focusTargets = getFocusTargets(r, game, account); - store.dispatch(actions.setAnimFocus(focusTargets)); + store.dispatch(actions.setAnimFocus(r.focus)); if (r.variant[0] === 'Cast') { const animSource = getAnimSource(r, account); store.dispatch(actions.setAnimSource(animSource)); store.dispatch(actions.setAnimText(null)); + setTimeout(() => store.dispatch(actions.setAnimSource(null)), TIMES.SOURCE_DURATION_MS); } else if (r.variant[0].includes('Hit')) { const animTarget = getAnimTarget(r, account); store.dispatch(actions.setAnimTarget(animTarget)); store.dispatch(actions.setAnimText(null)); + setTimeout(() => store.dispatch(actions.setAnimTarget(null)), TIMES.TARGET_DURATION_MS); } else { store.dispatch(actions.setAnimText(r)); diff --git a/core/src/skill.rs b/core/src/skill.rs index 58313f43..f1dfc78f 100644 --- a/core/src/skill.rs +++ b/core/src/skill.rs @@ -231,6 +231,7 @@ pub type Disable = Vec; #[derive(Debug,Clone,PartialEq,Serialize,Deserialize)] pub struct Event { pub cast: Cast, + pub focus: Vec, pub variant: EventVariant, pub delay: i64, } @@ -274,8 +275,14 @@ impl EventVariant { pub fn to_event(&self, cast: Cast) -> Event { let delay = self.delay(); + let focus = match self { + EventVariant::HitAoe { target: _ } => vec![cast.source, cast.target], // some tricky multi target here l8r + _ => vec![cast.source, cast.target], + }; + Event { cast, + focus, variant: *self, delay, }