|
30 | 30 | #include "silent_shots.h"
|
31 | 31 | #include "killer_victim_velocity_angle.h"
|
32 | 32 |
|
| 33 | +#define INIT_ACCUMULATIVE_VALUE(Kind, SomeClass) \ |
| 34 | + m_accumulative_values.insert(std::make_pair(Kind, new SomeClass(this))); |
| 35 | + |
33 | 36 | namespace award_system
|
34 | 37 | {
|
35 | 38 |
|
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 |
| - |
58 | 39 | void game_state_accumulator::init_accumulative_values()
|
59 | 40 | {
|
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); |
64 | 77 | }
|
65 | 78 | } // namespace award_system
|
0 commit comments