wowlab_engine_combat/handler/spec_handler/
introspect.rs1use super::{CombatHandler, build_introspection};
2
3impl CombatHandler {
4 pub(super) fn introspect_impl(&self) -> wowlab_types::game::SpecIntrospection {
5 build_introspection(&self.program, &self.program.names)
6 }
7
8 pub(super) fn attach_decision_trace_impl(
9 &mut self,
10 sink: std::sync::Arc<dyn wowlab_engine_ports::DecisionTraceSink>,
11 ) {
12 self.engine
13 .set_decision_trace(wowlab_engine_ports::DecisionTraceTarget::new(sink));
14 }
15
16 pub(super) fn paperdoll_impl(&self) -> wowlab_engine_ports::Paperdoll {
17 use wowlab_engine_ports::{Paperdoll, PaperdollLoadout};
18
19 let introspection = build_introspection(&self.program, &self.program.names);
20
21 let precombat_aura_ids: Vec<u32> = self
23 .program
24 .precombat_auras
25 .iter()
26 .map(|&local_idx| self.program.auras[local_idx.as_usize()].aura_id)
27 .collect();
28
29 let talent_ranks = self
31 .program
32 .talent_aura_stacks
33 .iter()
34 .map(|&(local_idx, rank)| (self.program.auras[local_idx.as_usize()].aura_id, rank))
35 .collect();
36
37 Paperdoll::new(
38 self.program.config.base_stats.stats.clone(),
39 introspection,
40 PaperdollLoadout {
41 precombat_aura_ids,
42 talent_ranks,
43 item_use_spells: self.program.item_use_spells.clone(),
44 weapon_main: self.program.config.game_data.main_hand(),
45 weapon_off: self.program.config.game_data.off_hand(),
46 },
47 )
48 }
49}