wowlab_engine_combat/builder/combat_builder/
build.rs1use wowlab_engine_domain::{
2 dbc::{AuraSubtypeKind, ResolvedGameDataSemanticExt as _},
3 encounter::{EnemyActorDefinition, EnemyActorDefinitionInput, EnemyState, HealthModel},
4 pool::PoolIndex,
5};
6use wowlab_engine_ports::{EngineError, HeroTalentTreeDesc, ResolvedEncounter};
7use wowlab_types::{
8 combat::ResourceType,
9 data::CooldownCategoryId,
10 sim::{AuraOn, EnemyHealthInput, FastMap, IntMap, SpellIdx},
11};
12
13use super::{CombatSystemBuilder, ImpactEffectProcDefinition, resolve_resource_type};
14use crate::{
15 builder::{
16 CombatBuildError,
17 buffer_init::{
18 InitialBufferConfig, ensure_aura_slots, expand_spell_learn_chains,
19 expand_spell_override_chains, populate_initial_buffer,
20 },
21 built::BuiltCombatSystem,
22 compile::{
23 CooldownBypass, CostBypass, RotationCompileInput, SpellGate, SpellOverride,
24 compile_rotation,
25 },
26 lower::{RuntimeStateParts, lower_builder_state},
27 },
28 state::{
29 BaseStats, CombatConfig, CombatDefs, CombatIndex, CombatRuntime, CombatState,
30 ImpactActorFilter, ImpactSource, ResourceThresholdTrigger,
31 },
32};
33
34#[path = "trigger_program.rs"]
35mod trigger_program;
36use crate::builder::AuraDefinitionDraft;
37
38mod assemble;
39mod dbc_procs;
40mod finish;
41mod overrides;
42
43use dbc_procs::ImpactProcRegistration;
44#[cfg(test)]
45use finish::apply_hero_tree_spell_gating;
46use overrides::ActionOverrideRegistration;
47
48struct TriggerProgramLowering<'a> {
49 definition: &'a CombatSystemBuilder,
50}
51
52struct TriggerProgramRegistration<'a> {
53 definition: &'a mut CombatSystemBuilder,
54}
55
56#[cfg(test)]
57use dbc_procs::dbc_proc_mask_is_complete;
58
59#[cfg(test)]
60#[path = "build/cooldown_tests.rs"]
61mod cooldown_tests;
62
63#[cfg(test)]
64#[path = "build/proc_mask_tests.rs"]
65mod proc_mask_tests;
66
67#[cfg(test)]
68#[path = "build/tests.rs"]
69mod tests;