|
8 | 8 | #include "ai_activity.h"
|
9 | 9 | #include "ai_basenpc.h"
|
10 | 10 | #include "stringregistry.h"
|
| 11 | +#include "../../thirdparty/json.hpp" // Include nlohmann/json.hpp |
| 12 | + |
| 13 | + |
| 14 | +using json = nlohmann::json; |
| 15 | +using namespace std; |
| 16 | + |
| 17 | +void traverse_json(const json& j, const string& prefix, vector<string>& paths) { |
| 18 | + if (j.is_object()) { |
| 19 | + for (auto& [key, value] : j.items()) { |
| 20 | + if (key == "1") { |
| 21 | + continue; |
| 22 | + } |
| 23 | + string new_prefix = prefix + key; |
| 24 | + if (key.back() != ' ') {new_prefix += '_';} |
| 25 | + traverse_json(value, new_prefix, paths); |
| 26 | + } |
| 27 | + } else if (j.is_array()) { |
| 28 | + for (size_t i = 0; i < j.size(); ++i) { |
| 29 | + if (j[i].is_number() && j[i] == 0) { |
| 30 | + continue; |
| 31 | + } |
| 32 | + if (i == 1) { |
| 33 | + continue; |
| 34 | + } |
| 35 | + string key = to_string(i); |
| 36 | + string new_prefix = prefix; |
| 37 | + if (key != "0") { |
| 38 | + new_prefix += key + '_'; |
| 39 | + } |
| 40 | + traverse_json(j[i], new_prefix, paths); |
| 41 | + } |
| 42 | + } else if (j.is_string()) { |
| 43 | + string path = prefix + j.get<string>(); |
| 44 | + paths.push_back(path); |
| 45 | + } |
| 46 | +} |
| 47 | + |
| 48 | +vector<string> json_to_paths(const string& filename) { |
| 49 | + // Read JSON file |
| 50 | + ifstream file(filename); |
| 51 | + json j; |
| 52 | + file >> j; |
| 53 | + |
| 54 | + // Store paths |
| 55 | + vector<string> paths; |
| 56 | + traverse_json(j, "", paths); |
| 57 | + return paths; |
| 58 | +} |
11 | 59 |
|
12 | 60 | // memdbgon must be the last include file in a .cpp file!!!
|
13 | 61 | #include "tier0/memdbgon.h"
|
@@ -88,57 +136,12 @@ int CAI_BaseNPC::GetActivityID(const char* actName)
|
88 | 136 | //-----------------------------------------------------------------------------
|
89 | 137 | void CAI_BaseNPC::InitDefaultActivitySR(void)
|
90 | 138 | {
|
91 |
| - ADD_ACTIVITY_TO_SR( ACT_INVALID ); |
92 |
| - ADD_ACTIVITY_TO_SR( ACT_RESET ); |
93 |
| - ADD_ACTIVITY_TO_SR( ACT_IDLE ); |
94 |
| - ADD_ACTIVITY_TO_SR( ACT_TRANSITION ); |
95 |
| - ADD_ACTIVITY_TO_SR( ACT_COVER ); |
96 |
| - ADD_ACTIVITY_TO_SR( ACT_COVER_MED ); |
97 |
| - ADD_ACTIVITY_TO_SR( ACT_COVER_LOW ); |
98 |
| - ADD_ACTIVITY_TO_SR( ACT_WALK ); |
99 |
| - ADD_ACTIVITY_TO_SR( ACT_WALK_AIM ); |
100 |
| - ADD_ACTIVITY_TO_SR( ACT_WALK_CROUCH ); |
101 |
| - ADD_ACTIVITY_TO_SR( ACT_WALK_CROUCH_AIM ); |
102 |
| - ADD_ACTIVITY_TO_SR( ACT_RUN ); |
103 |
| - ADD_ACTIVITY_TO_SR( ACT_RUN_AIM ); |
104 |
| - ADD_ACTIVITY_TO_SR( ACT_RUN_CROUCH ); |
105 |
| - ADD_ACTIVITY_TO_SR( ACT_RUN_CROUCH_AIM ); |
106 |
| - ADD_ACTIVITY_TO_SR( ACT_RUN_PROTECTED ); |
107 |
| - ADD_ACTIVITY_TO_SR( ACT_SCRIPT_CUSTOM_MOVE ); |
108 |
| - ADD_ACTIVITY_TO_SR( ACT_RANGE_ATTACK1 ); |
109 |
| - ADD_ACTIVITY_TO_SR( ACT_RANGE_ATTACK2 ); |
110 |
| - ADD_ACTIVITY_TO_SR( ACT_RANGE_ATTACK1_LOW ); |
111 |
| - ADD_ACTIVITY_TO_SR( ACT_RANGE_ATTACK2_LOW ); |
112 |
| - ADD_ACTIVITY_TO_SR( ACT_DIESIMPLE ); |
113 |
| - ADD_ACTIVITY_TO_SR( ACT_DIEBACKWARD ); |
114 |
| - ADD_ACTIVITY_TO_SR( ACT_DIEFORWARD ); |
115 |
| - ADD_ACTIVITY_TO_SR( ACT_DIEVIOLENT ); |
116 |
| - ADD_ACTIVITY_TO_SR( ACT_DIERAGDOLL ); |
117 |
| - ADD_ACTIVITY_TO_SR( ACT_FLY ); |
118 |
| - ADD_ACTIVITY_TO_SR( ACT_HOVER ); |
119 |
| - ADD_ACTIVITY_TO_SR( ACT_GLIDE ); |
120 |
| - ADD_ACTIVITY_TO_SR( ACT_SWIM ); |
121 |
| - ADD_ACTIVITY_TO_SR( ACT_JUMP ); |
122 |
| - ADD_ACTIVITY_TO_SR( ACT_HOP ); |
123 |
| - ADD_ACTIVITY_TO_SR( ACT_LEAP ); |
124 |
| - ADD_ACTIVITY_TO_SR( ACT_LAND ); |
125 |
| - ADD_ACTIVITY_TO_SR( ACT_CLIMB_UP ); |
126 |
| - ADD_ACTIVITY_TO_SR( ACT_CLIMB_DOWN ); |
127 |
| - ADD_ACTIVITY_TO_SR( ACT_CLIMB_DISMOUNT ); |
128 |
| - ADD_ACTIVITY_TO_SR( ACT_SHIPLADDER_UP ); |
129 |
| - ADD_ACTIVITY_TO_SR( ACT_SHIPLADDER_DOWN ); |
130 |
| - ADD_ACTIVITY_TO_SR( ACT_STRAFE_LEFT ); |
131 |
| - ADD_ACTIVITY_TO_SR( ACT_STRAFE_RIGHT ); |
132 |
| - ADD_ACTIVITY_TO_SR( ACT_ROLL_LEFT ); |
133 |
| - ADD_ACTIVITY_TO_SR( ACT_ROLL_RIGHT ); |
134 |
| - ADD_ACTIVITY_TO_SR( ACT_TURN_LEFT ); |
135 |
| - ADD_ACTIVITY_TO_SR( ACT_TURN_RIGHT ); |
136 |
| - ADD_ACTIVITY_TO_SR( ACT_CROUCH ); |
137 |
| - ADD_ACTIVITY_TO_SR( ACT_CROUCHIDLE ); |
138 |
| - ADD_ACTIVITY_TO_SR( ACT_STAND ); |
139 |
| - ADD_ACTIVITY_TO_SR( ACT_USE ); |
140 |
| - ADD_ACTIVITY_TO_SR( ACT_ALIEN_BURROW_IDLE ); |
141 |
| - ADD_ACTIVITY_TO_SR( ACT_ALIEN_BURROW_OUT ); |
| 139 | + string filename = "../../configs/activities.json"; |
| 140 | + vector<string> paths = json_to_paths(filename); |
| 141 | + |
| 142 | + for (const auto& path : paths) { |
| 143 | + ADD_ACTIVITY_TO_SR(path); |
| 144 | + } |
142 | 145 |
|
143 | 146 | ADD_ACTIVITY_TO_SR( ACT_SIGNAL1 );
|
144 | 147 | ADD_ACTIVITY_TO_SR( ACT_SIGNAL2 );
|
|
0 commit comments