Skip to content

Commit 7b15fcd

Browse files
committed
Award system refactoring. Part 1.
Get rid of award_system::AccumulatorHelper. It allows to fix bug with undefined symbols in debug mode in linux.
1 parent 3f1178e commit 7b15fcd

File tree

1 file changed

+39
-26
lines changed

1 file changed

+39
-26
lines changed

src/xrGame/game_state_accumulator_state_register.cpp

Lines changed: 39 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -30,36 +30,49 @@
3030
#include "silent_shots.h"
3131
#include "killer_victim_velocity_angle.h"
3232

33+
#define INIT_ACCUMULATIVE_VALUE(Kind, SomeClass) \
34+
m_accumulative_values.insert(std::make_pair(Kind, new SomeClass(this)));
35+
3336
namespace award_system
3437
{
3538

36-
template <typename>
37-
struct AccumulatorHelper;
38-
39-
template <>
40-
struct AccumulatorHelper<Loki::NullType> {
41-
static void init_acpv(game_state_accumulator*,
42-
game_state_accumulator::accumulative_values_collection_t&)
43-
{
44-
}
45-
};
46-
47-
template <typename Head, typename Tail>
48-
struct AccumulatorHelper<Loki::Typelist<Head, Tail>> {
49-
static void init_acpv(game_state_accumulator* self,
50-
game_state_accumulator::accumulative_values_collection_t& accumulative_values)
51-
{
52-
AccumulatorHelper<Tail>::init_acpv(self, accumulative_values);
53-
player_state_param* tmp_obj_inst = new typename Head::value_type(self);
54-
accumulative_values.insert(std::make_pair(Head::value_id, tmp_obj_inst));
55-
}
56-
};
57-
5839
void game_state_accumulator::init_accumulative_values()
5940
{
60-
static_assert(Loki::TL::Length<ACCUMULATIVE_STATE_LIST>::value == acpv_count,
61-
"Not all accumulative values has been added to a ACCUMULATIVE_STATE_LIST type list.");
62-
63-
AccumulatorHelper<ACCUMULATIVE_STATE_LIST>::init_acpv(this, m_accumulative_values);
41+
INIT_ACCUMULATIVE_VALUE(acpv_mad, player_state_mad);
42+
INIT_ACCUMULATIVE_VALUE(acpv_spots, player_spots_counter);
43+
INIT_ACCUMULATIVE_VALUE(acpv_toughy, player_state_toughy);
44+
INIT_ACCUMULATIVE_VALUE(acpv_avenger, player_state_avenger);
45+
INIT_ACCUMULATIVE_VALUE(acpv_climber, player_state_climber);
46+
INIT_ACCUMULATIVE_VALUE(acpv_move_state, player_state_move);
47+
INIT_ACCUMULATIVE_VALUE(acpv_ambassador, player_state_ambassador);
48+
INIT_ACCUMULATIVE_VALUE(acpv_black_list, black_list);
49+
INIT_ACCUMULATIVE_VALUE(acpv_kill_in_raw, player_rawkill_counter);
50+
INIT_ACCUMULATIVE_VALUE(acpv_death_count, player_death_counter);
51+
INIT_ACCUMULATIVE_VALUE(acpv_remembrance, player_state_remembrance);
52+
INIT_ACCUMULATIVE_VALUE(acpv_cherub_ready, player_state_cherub);
53+
INIT_ACCUMULATIVE_VALUE(acpv_ammo_elapsed, player_state_ammo_elapsed);
54+
INIT_ACCUMULATIVE_VALUE(acpv_opener_ready, player_state_opener);
55+
INIT_ACCUMULATIVE_VALUE(acpv_skewer_count, player_state_skewer);
56+
INIT_ACCUMULATIVE_VALUE(acpv_stalker_flair, stalker_flair);
57+
INIT_ACCUMULATIVE_VALUE(acpv_thunder_count, silent_shots);
58+
INIT_ACCUMULATIVE_VALUE(acpv_move_velocity, player_state_velocity);
59+
INIT_ACCUMULATIVE_VALUE(acpv_harvest_count, harvest_time);
60+
INIT_ACCUMULATIVE_VALUE(acpv_marksman_count, player_state_marksman);
61+
INIT_ACCUMULATIVE_VALUE(acpv_multi_champion, player_multichampion);
62+
INIT_ACCUMULATIVE_VALUE(acpv_invincible_fury, player_state_invincible_fury);
63+
INIT_ACCUMULATIVE_VALUE(acpv_blitzkrieg_time, player_blitzkrieg);
64+
INIT_ACCUMULATIVE_VALUE(acpv_enemy_team_score, player_enemy_team_score);
65+
INIT_ACCUMULATIVE_VALUE(acpv_artdeliver_count, player_artdeliver_counter);
66+
INIT_ACCUMULATIVE_VALUE(acpv_my_team_win_score, player_team_win_score);
67+
INIT_ACCUMULATIVE_VALUE(acpv_move_ang_velocity, player_state_ang_velocity);
68+
INIT_ACCUMULATIVE_VALUE(acpv_achilles_heel_ready, achilles_heel_kill);
69+
INIT_ACCUMULATIVE_VALUE(acpv_killer_victim_angle, killer_victim_angle);
70+
INIT_ACCUMULATIVE_VALUE(acpv_enemy_top_player_div, player_spots_with_top_enemy_divider);
71+
INIT_ACCUMULATIVE_VALUE(acpv_command_switch_count, command_switch_counter);
72+
INIT_ACCUMULATIVE_VALUE(acpv_enemy_team_score_now, player_runtime_enemy_team_score);
73+
INIT_ACCUMULATIVE_VALUE(acpv_my_team_win_score_now, player_runtime_win_score);
74+
INIT_ACCUMULATIVE_VALUE(acpv_sprinter_victim_velocity, spritnter_stopper);
75+
INIT_ACCUMULATIVE_VALUE(acpv_faster_than_bullets_time, faster_than_bullets_time);
76+
INIT_ACCUMULATIVE_VALUE(acpv_double_shot_double_kill_time, double_shot_double_kill);
6477
}
6578
} // namespace award_system

0 commit comments

Comments
 (0)