use bevy::prelude::*;
use bevy_behave::prelude::*;
use bevy_htn::prelude::*;
#[derive(Debug, Reflect, Default, Clone, Component, HtnOperator)]
#[reflect(Default, HtnOperator)]
#[spawn_named = "Trunk Slam"]
pub struct DoTrunkSlamOperator {
pub start: f32,
}
#[derive(Debug, Reflect, Clone, Component)]
#[reflect(Default, HtnOperator)]
pub struct WaitOperator(pub f32);
impl Default for WaitOperator {
fn default() -> Self {
Self(3.0)
}
}
impl HtnOperator for WaitOperator {
fn to_tree(&self) -> Tree<Behave> {
behave! {
Behave::Wait(self.0)
}
}
}
#[derive(Debug, Reflect, Default, Clone, HtnOperator)]
#[reflect(Default, HtnOperator)]
pub struct UprootTrunkOperator;
#[derive(Debug, Reflect, Default, Clone, HtnOperator)]
#[reflect(Default, HtnOperator)]
pub struct FindTrunkOperator;
#[derive(Debug, Reflect, Default, Clone, HtnOperator)]
#[reflect(Default, HtnOperator)]
pub struct NavigateToTrunkOperator(Vec2);
#[derive(Debug, Reflect, Default, Clone, HtnOperator, Component)]
#[reflect(Default, HtnOperator)]
#[spawn_named = "Navigate To"]
pub struct NavigateToOperator(pub Vec2);
#[derive(Debug, Reflect, Default, Clone, HtnOperator)]
#[reflect(Default, HtnOperator)]
pub struct RegainLOSOperator;
#[derive(Debug, Reflect, Default, Clone, HtnOperator)]
#[reflect(Default, HtnOperator)]
pub struct ChooseBridgeToCheckOperator;
#[derive(Debug, Reflect, Default, Clone, Component, HtnOperator)]
#[reflect(Default, HtnOperator)]
#[spawn_named = "Check Bridge"]
pub struct CheckBridgeOperator {
pub bridge_position: Vec2,
pub start: f32,
}