|
| 1 | +#include <cstddef> |
1 | 2 | #include <cstdlib> |
2 | 3 | #include <cstring> |
3 | 4 | #include <iostream> |
4 | 5 | #include <memory> |
| 6 | +#include <iostream> |
| 7 | +#include <array> |
5 | 8 |
|
6 | 9 | #include <fmt/format.h> |
7 | 10 |
|
@@ -136,34 +139,39 @@ void hero::save(FILE *sav_file) { |
136 | 139 | } |
137 | 140 |
|
138 | 141 | void hero::load(FILE *load_file, hero_type *ht, int ht_amount, float ver) { |
139 | | - fread(&level, sizeof(level), 1, load_file); |
140 | | - fread(&level_of_complexity, sizeof(level_of_complexity), 1, load_file); |
141 | | - fread(&district, sizeof(district), 1, load_file); |
142 | | - fread(&broken_jaw, sizeof(broken_jaw), 1, load_file); |
143 | | - fread(&broken_foot, sizeof(broken_foot), 1, load_file); |
144 | | - fread(&trn_foot, sizeof(trn_foot), 1, load_file); |
145 | | - fread(&kick_count, sizeof(kick_count), 1, load_file); |
146 | | - fread(&empty_kick_count, sizeof(empty_kick_count), 1, load_file); |
147 | | - fread(&stoned, sizeof(stoned), 1, load_file); |
148 | | - fread(&drunk, sizeof(drunk), 1, load_file); |
149 | | - fread(&old_att, sizeof(old_att), 1, load_file); |
150 | | - fread(&station, sizeof(station), 1, load_file); |
151 | | - fread(&str_free, sizeof(str_free), 1, load_file); |
152 | | - fread(&print_mode, sizeof(print_mode), 1, load_file); |
153 | | - fread(&force, sizeof(force), 1, load_file); |
154 | | - fread(&smart, sizeof(smart), 1, load_file); |
155 | | - fread(&vita, sizeof(vita), 1, load_file); |
156 | | - fread(&luck, sizeof(luck), 1, load_file); |
157 | | - fread(&health, sizeof(health), 1, load_file); |
158 | | - fread(&exp, sizeof(exp), 1, load_file); |
159 | | - fread(&armo, sizeof(armo), 1, load_file); |
160 | | - fread(&money, sizeof(money), 1, load_file); |
161 | | - fread(&beer, sizeof(beer), 1, load_file); |
162 | | - fread(&stuff, sizeof(stuff), 1, load_file); |
163 | | - fread(&ciga, sizeof(ciga), 1, load_file); |
164 | | - fread(&att1, sizeof(att1), 1, load_file); |
165 | | - fread(&att2, sizeof(att2), 1, load_file); |
166 | | - fread(&desc, sizeof(desc), 1, load_file); |
| 142 | + std::array<std::pair<void *, size_t>, 28> vars = { |
| 143 | + {{&level, sizeof(level)}, |
| 144 | + {&level_of_complexity, sizeof(level_of_complexity)}, |
| 145 | + {&district, sizeof(district)}, |
| 146 | + {&broken_jaw, sizeof(broken_jaw)}, |
| 147 | + {&broken_foot, sizeof(broken_foot)}, |
| 148 | + {&trn_foot, sizeof(trn_foot)}, |
| 149 | + {&kick_count, sizeof(kick_count)}, |
| 150 | + {&empty_kick_count, sizeof(empty_kick_count)}, |
| 151 | + {&stoned, sizeof(stoned)}, |
| 152 | + {&drunk, sizeof(drunk)}, |
| 153 | + {&old_att, sizeof(old_att)}, |
| 154 | + {&station, sizeof(station)}, |
| 155 | + {&str_free, sizeof(str_free)}, |
| 156 | + {&print_mode, sizeof(print_mode)}, |
| 157 | + {&force, sizeof(force)}, |
| 158 | + {&smart, sizeof(smart)}, |
| 159 | + {&vita, sizeof(vita)}, |
| 160 | + {&luck, sizeof(luck)}, |
| 161 | + {&health, sizeof(health)}, |
| 162 | + {&exp, sizeof(exp)}, |
| 163 | + {&armo, sizeof(armo)}, |
| 164 | + {&money, sizeof(money)}, |
| 165 | + {&beer, sizeof(beer)}, |
| 166 | + {&stuff, sizeof(stuff)}, |
| 167 | + {&ciga, sizeof(ciga)}, |
| 168 | + {&att1, sizeof(att1)}, |
| 169 | + {&att2, sizeof(att2)}, |
| 170 | + {&desc, sizeof(desc)}}}; |
| 171 | + |
| 172 | + for (const auto& [var, size] : vars) { |
| 173 | + fread(var, size, 1, load_file); |
| 174 | + } |
167 | 175 |
|
168 | 176 | if (ver > 1.16) { |
169 | 177 | if (inv != nullptr) { |
|
0 commit comments