Skip to main content

wowlab_engine_combat/builder/combat_builder/
build.rs

1use 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;