@@ -7,49 +7,49 @@ CombatPublisher::CombatPublisher()
77{
88 for (int i = 0 ; i < static_cast <int >(CombatantEvent::COUNT); ++i)
99 {
10- combat_event_subscribers[static_cast <CombatantEvent>(i)] = std::vector<const Skill* >();
10+ combat_event_subscribers[static_cast <CombatantEvent>(i)] = std::vector<const SkillGrouping& >();
1111 }
1212}
1313
14- bool CombatPublisher::subToEvent (const Skill& skill, const CombatantEvent event )
14+ bool CombatPublisher::subToEvent (const SkillGrouping& new_skill_grouping )
1515{
16- std::vector<const Skill*>& skills = combat_event_subscribers[event];
16+ CombatantEvent event = new_skill_grouping.getDependentEvent ();
17+ std::vector<const SkillGrouping&>& current_groupings = combat_event_subscribers[event];
1718
18- if ( std::ranges::find (skills, &skill) != skills. end () )
19+ for ( const SkillGrouping& skill_grouping : current_groupings )
1920 {
20- // skill already inside the vector
21- return false ;
21+ // equivalence logic, return false if is in already
2222 }
2323
24- skills.push_back (&skill);
24+ current_groupings.push_back (new_skill_grouping);
25+
2526 return true ;
2627}
2728
28- bool CombatPublisher::unsubToEvent (const Skill& skill, const CombatantEvent event )
29+ bool CombatPublisher::unsubToEvent (const SkillGrouping& remove_skill_grouping )
2930{
30- std::vector<const Skill*>& skills = combat_event_subscribers[event];
31+ CombatantEvent event = remove_skill_grouping.getDependentEvent ();
32+ std::vector<const SkillGrouping&>& current_groupings = combat_event_subscribers[event];
3133
32- auto iterator = std::ranges::find (skills, &skill);
33- if (iterator == skills.end ())
34+ for (const SkillGrouping& skill_grouping : current_groupings)
3435 {
35- // skill not inside the vector
36- return false ;
36+ // equivalent logic, erase and return true if already in
3737 }
3838
39- skills. erase (iterator);
40- return true ;
39+ // not inside loop
40+ return false ;
4141}
4242
4343void CombatPublisher::publishEvent (const CombatantEvent event, Combatant& self, Combatant& target, NumberGenerator& number_generator) const
4444{
45- const std::vector<const Skill* >& skills = combat_event_subscribers.at (event);
46- for (const Skill* skill : skills)
45+ const std::vector<const SkillGrouping& >& skills = combat_event_subscribers.at (event);
46+ for (const Skill& skill : skills)
4747 {
48- skill-> onDependent (self, target, number_generator);
48+ skill. onDependent (self, target, number_generator);
4949 }
5050}
5151
52- void CombatPublisher::addSkill (std::unique_ptr<Skill> skill )
52+ void CombatPublisher::addSkillGrouping (std::unique_ptr<SkillGrouping> skill_grouping )
5353{
54- owned_skills .push_back (std::move (skill ));
54+ owned_skill_groupings .push_back (std::move (skill_grouping ));
5555}
0 commit comments