remove unused timed_combo

This commit is contained in:
AdamWhitehurst 2020-03-29 13:40:03 -07:00
parent 86b0b8f644
commit dcc9d44b1c
6 changed files with 1 additions and 172 deletions

View File

@ -41,11 +41,6 @@ pub enum CharacterAbility {
},
BasicBlock,
Roll,
TimedCombo {
buildup_duration: Duration,
recover_duration: Duration,
base_damage: u32,
},
TripleStrike {
base_damage: u32,
needs_timing: bool,
@ -57,7 +52,7 @@ impl CharacterAbility {
/// applicable.
pub fn requirements_paid(&self, data: &JoinData, update: &mut StateUpdate) -> bool {
match self {
CharacterAbility::TimedCombo { .. } | CharacterAbility::TripleStrike { .. } => {
CharacterAbility::TripleStrike { .. } => {
data.physics.on_ground
&& data.body.is_humanoid()
&& data.inputs.look_dir.xy().magnitude_squared() > 0.01
@ -169,18 +164,6 @@ impl From<&CharacterAbility> for CharacterState {
remaining_duration: Duration::from_millis(500),
was_wielded: false, // false by default. utils might set it to true
}),
CharacterAbility::TimedCombo {
buildup_duration,
recover_duration,
base_damage,
} => CharacterState::TimedCombo(timed_combo::Data {
buildup_duration: *buildup_duration,
recover_duration: *recover_duration,
stage: 0,
stage_exhausted: false,
stage_time_active: Duration::default(),
base_damage: *base_damage,
}),
CharacterAbility::TripleStrike {
base_damage,
needs_timing,

View File

@ -56,9 +56,6 @@ pub enum CharacterState {
Boost(boost::Data),
/// Dash forward and then attack
DashMelee(dash_melee::Data),
/// A three-stage attack where play must click at appropriate times
/// to continue attack chain.
TimedCombo(timed_combo::Data),
/// A three-stage attack where each attack pushes player forward
/// and successive attacks increase in damage, while player holds button.
TripleStrike(triple_strike::Data),
@ -72,7 +69,6 @@ impl CharacterState {
| CharacterState::BasicRanged(_)
| CharacterState::DashMelee(_)
| CharacterState::TripleStrike(_)
| CharacterState::TimedCombo(_)
| CharacterState::BasicBlock => true,
_ => false,
}
@ -89,7 +85,6 @@ impl CharacterState {
match self {
CharacterState::BasicMelee(_)
| CharacterState::BasicRanged(_)
| CharacterState::TimedCombo(_)
| CharacterState::DashMelee(_)
| CharacterState::TripleStrike(_) => true,
_ => false,

View File

@ -9,7 +9,6 @@ pub mod glide;
pub mod idle;
pub mod roll;
pub mod sit;
pub mod timed_combo;
pub mod triple_strike;
pub mod utils;
pub mod wielding;

View File

@ -1,130 +0,0 @@
use crate::{
comp::{Attacking, CharacterState, EnergySource, StateUpdate},
sys::character_behavior::{CharacterBehavior, JoinData},
};
use std::time::Duration;
#[derive(Copy, Clone, Debug, PartialEq, Serialize, Deserialize, Eq, Hash)]
pub struct Data {
/// Denotes what stage (of 3) the attack is in
pub stage: i8,
/// Whether current stage has exhausted its attack
pub stage_exhausted: bool,
/// How long state waits before it should deal damage
pub buildup_duration: Duration,
/// How long the state waits until exiting
pub recover_duration: Duration,
/// Tracks how long current stage has been active
pub stage_time_active: Duration,
/// Base damage
pub base_damage: u32,
}
impl CharacterBehavior for Data {
fn behavior(&self, data: &JoinData) -> StateUpdate {
let mut update = StateUpdate::from(data);
let new_stage_time_active = self
.stage_time_active
.checked_add(Duration::from_secs_f32(data.dt.0))
.unwrap_or(Duration::default());
if self.stage < 3 {
// Build up window
if new_stage_time_active < self.buildup_duration {
// If the player is pressing primary btn
if data.inputs.primary.is_just_pressed() {
// They failed, go back to `Wielding`
update.character = CharacterState::Wielding;
}
// Keep updating
else {
update.character = CharacterState::TimedCombo(Data {
stage: self.stage,
buildup_duration: self.buildup_duration,
recover_duration: self.recover_duration,
stage_exhausted: false,
stage_time_active: new_stage_time_active,
base_damage: self.base_damage,
});
}
}
// Hit attempt window
else if !self.stage_exhausted {
// Swing hits
data.updater.insert(data.entity, Attacking {
base_healthchange: -((self.base_damage * (self.stage as u32 + 1)) as i32),
range: 3.5,
max_angle: 75_f32.to_radians(),
applied: false,
hit_count: 0,
knockback: 0.0,
});
update.character = CharacterState::TimedCombo(Data {
stage: self.stage,
buildup_duration: self.buildup_duration,
recover_duration: self.recover_duration,
stage_exhausted: true,
stage_time_active: new_stage_time_active,
base_damage: self.base_damage,
});
}
// Swing recovery window
else if new_stage_time_active
< self
.buildup_duration
.checked_add(self.recover_duration)
.unwrap_or(Duration::default())
{
// Try to transition to next stage
if data.inputs.primary.is_just_pressed() {
update.character = CharacterState::TimedCombo(Data {
stage: self.stage + 1,
buildup_duration: self.buildup_duration,
recover_duration: self.recover_duration,
stage_exhausted: true,
stage_time_active: Duration::default(),
base_damage: self.base_damage,
});
}
// Player didn't click this frame
else {
// Update state
update.character = CharacterState::TimedCombo(Data {
stage: self.stage,
buildup_duration: self.buildup_duration,
recover_duration: self.recover_duration,
stage_exhausted: true,
stage_time_active: new_stage_time_active,
base_damage: self.base_damage,
});
}
}
// Stage expired but missed transition to next stage
else {
// Back to `Wielding`
update.character = CharacterState::Wielding;
// Make sure attack component is removed
data.updater.remove::<Attacking>(data.entity);
}
}
// Made three successful hits!
else {
println!("Success!");
// Back to `Wielding`
update.character = CharacterState::Wielding;
// Make sure attack component is removed
data.updater.remove::<Attacking>(data.entity);
}
// Grant energy on successful hit
if let Some(attack) = data.attacking {
if attack.applied && attack.hit_count > 0 {
data.updater.remove::<Attacking>(data.entity);
update.energy.change_by(100, EnergySource::HitEnemy);
}
}
update
}
}

View File

@ -213,7 +213,6 @@ impl<'a> System<'a> for Sys {
CharacterState::BasicRanged(data) => data.handle_event(&j, action),
CharacterState::Boost(data) => data.handle_event(&j, action),
CharacterState::DashMelee(data) => data.handle_event(&j, action),
CharacterState::TimedCombo(data) => data.handle_event(&j, action),
};
local_emitter.append(&mut state_update.local_events);
server_emitter.append(&mut state_update.server_events);
@ -236,7 +235,6 @@ impl<'a> System<'a> for Sys {
CharacterState::BasicRanged(data) => data.behavior(&j),
CharacterState::Boost(data) => data.behavior(&j),
CharacterState::DashMelee(data) => data.behavior(&j),
CharacterState::TimedCombo(data) => data.behavior(&j),
};
local_emitter.append(&mut state_update.local_events);

View File

@ -549,22 +549,6 @@ impl FigureMgr {
)
},
},
CharacterState::TimedCombo(s) => match s.stage {
0 | 2 => anim::character::AlphaAnimation::update_skeleton(
&target_base,
(active_tool_kind, vel.0.magnitude(), time),
state.state_time,
&mut state_animation_rate,
skeleton_attr,
),
_ => anim::character::DashAnimation::update_skeleton(
&target_base,
(active_tool_kind, time),
state.state_time,
&mut state_animation_rate,
skeleton_attr,
),
},
CharacterState::BasicBlock { .. } => {
anim::character::BlockIdleAnimation::update_skeleton(
&CharacterSkeleton::new(),