Skip to main content

wowlab_engine_combat/state/program/
config.rs

1use wowlab_engine_gamedata::ResolvedGameData;
2use wowlab_engine_ports::{ResolvedEncounter, SpecConfig};
3use wowlab_types::sim::SpellIdx;
4
5use crate::{state::BaseStats, systems::MasteryFn};
6
7/// Player position relative to the current hostile target.
8#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
9#[non_exhaustive]
10pub enum AttackPosition {
11    Front,
12    #[default]
13    Behind,
14}
15
16/// Immutable combat-program configuration.
17#[derive(Debug)]
18pub(crate) struct ProgramConfig {
19    pub base_stats: BaseStats,
20    pub min_primary_cost: f64,
21    pub haste_regen: bool,
22    pub game_data: ResolvedGameData,
23    pub encounter: ResolvedEncounter,
24    pub mastery_hook: MasteryFn,
25    pub mastery_crit_damage: MasteryFn,
26    pub mastery_spell: SpellIdx,
27    pub(crate) spec_config: Box<dyn SpecConfig>,
28    pub bugs: wowlab_engine_ports::BugToggles,
29    pub cast_latency: wowlab_engine_ports::CastLatency,
30    pub raid_events: Vec<wowlab_engine_ports::RaidEventConfig>,
31    pub external_buffs: Vec<wowlab_engine_ports::ExternalBuffConfig>,
32}