Skip to main content

wowlab_engine_combat/handler/
can_cast.rs

1//! Cast eligibility, rejection reasons, and wait decisions.
2
3mod candidate;
4mod predicates;
5mod reject;
6mod wait;
7
8#[cfg(test)]
9use predicates::*;
10#[cfg(test)]
11use wait::MIN_WAIT_MS;
12#[cfg(test)]
13use wowlab_engine_domain::dbc::{ShapeshiftForm, SpellCastTargetFlags};
14#[cfg(test)]
15use wowlab_engine_ports::SpecAction;
16#[cfg(test)]
17use wowlab_types::sim::{ActorId, EnemyIdx, SimTime, SpellIdx};
18
19#[cfg(test)]
20use crate::context::CombatView;
21#[cfg(test)]
22use crate::systems::set_gcd;
23
24#[rustfmt::skip]
25pub(crate) use candidate::CastCandidate;
26#[rustfmt::skip]
27pub(super) use predicates::candidate_rejection;
28#[rustfmt::skip]
29pub(crate) use reject::CastReject;
30#[rustfmt::skip]
31pub(super) use wait::reject_to_wait;
32#[cfg(feature = "rotation-optimizations")]
33#[rustfmt::skip]
34pub(super) use wait::candidate_time_horizon;
35#[cfg(feature = "rotation-optimizations")]
36#[rustfmt::skip]
37pub(super) use wait::rejection_ready_at;
38#[cfg(any(not(feature = "rotation-optimizations"), test))]
39#[rustfmt::skip]
40pub(super) use wait::pool_wait;
41
42#[cfg(test)]
43#[path = "can_cast/tests.rs"]
44mod tests;