wowlab_engine_combat/builder/
built.rs1use wowlab_engine_domain::rotation::RotationEngine;
2
3use crate::state::{CombatInstance, CombatProgram};
4
5#[derive(Debug)]
7#[must_use]
8pub struct BuiltCombatSystem {
9 #[cfg(feature = "test-support")]
10 #[doc(hidden)]
11 pub program: CombatProgram,
12 #[cfg(not(feature = "test-support"))]
13 pub(crate) program: CombatProgram,
14 #[cfg(feature = "test-support")]
15 #[doc(hidden)]
16 pub instance: CombatInstance,
17 #[cfg(not(feature = "test-support"))]
18 pub(crate) instance: CombatInstance,
19 pub(crate) rotation: RotationEngine,
20}
21
22impl BuiltCombatSystem {
23 pub fn program(&self) -> &CombatProgram {
24 &self.program
25 }
26
27 pub fn rppm_tracker(
28 &self,
29 tracker: crate::LocalRppmIdx,
30 ) -> Option<&wowlab_engine_rng::RppmTracker> {
31 self.instance
32 .runtime
33 .procs
34 .rppm_trackers
35 .get(tracker.as_usize())
36 }
37
38 #[cfg(feature = "test-support")]
39 #[doc(hidden)]
40 pub fn instance(&self) -> &CombatInstance {
41 &self.instance
42 }
43
44 #[cfg(feature = "test-support")]
45 #[doc(hidden)]
46 pub fn instance_mut(&mut self) -> &mut CombatInstance {
47 &mut self.instance
48 }
49
50 pub(crate) fn into_parts(self) -> (CombatProgram, CombatInstance, RotationEngine) {
51 (self.program, self.instance, self.rotation)
52 }
53}