use bevy::prelude::*;
use bevy_gearbox::SimpleTransition;
#[derive(Component, Default, Reflect)]
#[require(InvokeStatus)]
pub struct Ability;
#[derive(Component, Clone, Debug, Reflect, PartialEq)]
pub enum InvokeStatus {
Idle,
TryInvoke,
}
impl Default for InvokeStatus {
fn default() -> Self {
Self::Idle
}
}
#[derive(SimpleTransition, EntityEvent, Reflect, Clone)]
pub struct InvocationComplete {
#[event_target]
pub target: Entity,
}
pub fn check_should_reinvoke_ability(
enter_state: On<bevy_gearbox::EnterState>,
mut q_ability: Query<&mut InvokeStatus>,
) {
let ability_entity = enter_state.state_machine;
let Ok(mut invoke_status) = q_ability.get_mut(ability_entity) else {
return;
};
if *invoke_status == InvokeStatus::TryInvoke {
invoke_status.set_changed();
}
}