@@ -24,10 +24,29 @@ namespace intercept {
24
24
struct rv_magazine_ammo {
25
25
std::string name;
26
26
int count;
27
+
28
+ rv_magazine_ammo (const game_value &from_gv_) : name(from_gv_[0 ]),
29
+ count (from_gv_[1 ]) {}
30
+
31
+ operator game_value () const {
32
+ return game_value ({name, static_cast <float >(count)});
33
+ }
34
+ };
35
+
36
+ struct rv_magazine_ammo_full : rv_magazine_ammo {
27
37
bool loaded;
28
38
int type;
29
39
std::string location;
30
40
41
+ rv_magazine_ammo_full (const game_value &from_gv_) : rv_magazine_ammo(from_gv_),
42
+ loaded (from_gv_[2 ]),
43
+ type(from_gv_[3 ]),
44
+ location(from_gv_[4 ]) {}
45
+
46
+ rv_magazine_ammo_full (const rv_magazine_ammo &from_mag_) : rv_magazine_ammo(from_mag_),
47
+ loaded(false ),
48
+ type(-1 ) {}
49
+
31
50
operator game_value () const {
32
51
return game_value ({name,
33
52
static_cast <float >(count),
@@ -47,6 +66,12 @@ namespace intercept {
47
66
struct rv_container {
48
67
std::string type;
49
68
object container;
69
+
70
+ rv_container (const game_value &from_gv_) : type(from_gv_[0 ]),
71
+ container (from_gv_[1 ]) {}
72
+ operator game_value () const {
73
+ return game_value ({type, container});
74
+ }
50
75
};
51
76
struct rv_weapon_accessories {
52
77
std::string silencer;
@@ -62,11 +87,11 @@ namespace intercept {
62
87
std::string magazine;
63
88
float ammo_count;
64
89
65
- rv_weapon_state (game_value ret_game_value_) : weapon(ret_game_value_[0 ]),
66
- muzzle (ret_game_value_[1 ]),
67
- mode(ret_game_value_[2 ]),
68
- magazine(ret_game_value_[3 ]),
69
- ammo_count(ret_game_value_[4 ]) {}
90
+ rv_weapon_state (const game_value & ret_game_value_) : weapon(ret_game_value_[0 ]),
91
+ muzzle (ret_game_value_[1 ]),
92
+ mode(ret_game_value_[2 ]),
93
+ magazine(ret_game_value_[3 ]),
94
+ ammo_count(ret_game_value_[4 ]) {}
70
95
};
71
96
72
97
/* potential namespace: items, inventory, campaign */
@@ -93,7 +118,7 @@ namespace intercept {
93
118
std::vector<rv_turret_magazine> magazines_all_turrets (const object &obj_);
94
119
std::vector<rv_magazine_ammo> magazines_ammo (const object &obj_);
95
120
std::vector<rv_magazine_ammo> magazines_ammo_cargo (const object &obj_);
96
- std::vector<rv_magazine_ammo > magazines_ammo_full (const object &obj_);
121
+ std::vector<rv_magazine_ammo_full > magazines_ammo_full (const object &obj_);
97
122
sqf_return_string_list magazines_detail (const object &obj_);
98
123
sqf_return_string_list magazines_detail_backpack (const object &obj_);
99
124
sqf_return_string_list magazines_detail_uniform (const object &obj_);
@@ -206,14 +231,14 @@ namespace intercept {
206
231
std::vector<float > amounts;
207
232
208
233
explicit operator game_value () const {
209
- return game_value ({ types, amounts });
234
+ return game_value ({types, amounts});
210
235
}
211
236
};
212
237
213
- std::vector< rv_cargo> get_backpack_cargo (const object &container_);
214
- std::vector< rv_cargo> get_item_cargo (const object &container_);
215
- std::vector< rv_cargo> get_magazine_cargo (const object &container_);
216
- std::vector< rv_cargo> get_weapon_cargo (const object &container_);
238
+ rv_cargo get_backpack_cargo (const object &container_);
239
+ rv_cargo get_item_cargo (const object &container_);
240
+ rv_cargo get_magazine_cargo (const object &container_);
241
+ rv_cargo get_weapon_cargo (const object &container_);
217
242
sqf_return_string_list item_cargo (const object &container_);
218
243
sqf_return_string_list weapon_cargo (const object &container_);
219
244
sqf_return_string_list weapons (const object &unit_);
@@ -231,7 +256,7 @@ namespace intercept {
231
256
ammo (ret_game_value_[1 ]) {}
232
257
233
258
explicit operator game_value () const {
234
- return game_value ({ name, ammo });
259
+ return game_value ({name, ammo});
235
260
}
236
261
};
237
262
@@ -253,7 +278,7 @@ namespace intercept {
253
278
bipod(ret_game_value_.size() > 6 ? ret_game_value_[6] : ret_game_value_[5]) {}
254
279
255
280
explicit operator game_value () const {
256
- return game_value ({ weapon, muzzle, laser, optics, game_value (magazine), grenade_launcher_magazine ? game_value (*grenade_launcher_magazine) : game_value ({}), bipod });
281
+ return game_value ({weapon, muzzle, laser, optics, game_value (magazine), grenade_launcher_magazine ? game_value (*grenade_launcher_magazine) : game_value ({}), bipod});
257
282
}
258
283
};
259
284
@@ -343,28 +368,30 @@ namespace intercept {
343
368
344
369
operator game_value () const {
345
370
if (ammo != -1 ) {
346
- return game_value ({ magazine,
371
+ return game_value ({magazine,
347
372
static_cast <float >(ammo),
348
- static_cast <float >(count) });
373
+ static_cast <float >(count)});
349
374
} else if (count != -1 ) {
350
- return game_value ({ magazine,
351
- static_cast <float >(count) });
375
+ return game_value ({magazine,
376
+ static_cast <float >(count)});
352
377
} else {
353
378
return game_value ({});
354
379
}
355
380
}
356
381
};
357
382
358
- struct rv_weapon_info { // #TODO It would be better to store these as r_strings
383
+ struct rv_weapon_info { // #TODO It would be better to store these as r_strings
359
384
std::string weapon;
360
- std::string silencer = " " ;
361
- std::string laser;
385
+ std::string silencer;
386
+ std::string laser;
362
387
std::string optics;
363
388
rv_magazine_info primary_muzzle_magazine;
364
389
rv_magazine_info secondary_muzzle_magazine;
365
390
std::string bipod;
366
391
367
- rv_weapon_info (const game_value &ret_game_value_) {
392
+ rv_weapon_info () {}
393
+
394
+ rv_weapon_info (const game_value &ret_game_value_) {
368
395
if (ret_game_value_.size () > 0 ) {
369
396
weapon = static_cast <std::string>(ret_game_value_[0 ]);
370
397
silencer = static_cast <std::string>(ret_game_value_[1 ]);
@@ -380,13 +407,13 @@ namespace intercept {
380
407
381
408
explicit operator game_value () const {
382
409
if (weapon != " " ) {
383
- return game_value ({ weapon,
384
- silencer,
385
- laser,
386
- optics,
387
- primary_muzzle_magazine,
388
- secondary_muzzle_magazine,
389
- bipod });
410
+ return game_value ({weapon,
411
+ silencer,
412
+ laser,
413
+ optics,
414
+ primary_muzzle_magazine,
415
+ secondary_muzzle_magazine,
416
+ bipod });
390
417
} else {
391
418
return game_value ({});
392
419
}
@@ -397,6 +424,8 @@ namespace intercept {
397
424
std::string container;
398
425
std::vector<rv_magazine_info> items;
399
426
427
+ rv_container_info () {}
428
+
400
429
rv_container_info (const game_value &ret_game_value_) {
401
430
if (ret_game_value_.size () > 0 ) {
402
431
container = static_cast <std::string>(ret_game_value_[0 ]);
@@ -411,8 +440,8 @@ namespace intercept {
411
440
412
441
explicit operator game_value () const {
413
442
if (container != " " ) {
414
- return game_value ({ container,
415
- auto_array<game_value>(items.begin (), items.end ()) });
443
+ return game_value ({container,
444
+ auto_array<game_value>(items.begin (), items.end ())});
416
445
} else {
417
446
return game_value ({});
418
447
}
@@ -431,16 +460,18 @@ namespace intercept {
431
460
rv_weapon_info binocular;
432
461
std::vector<std::string> assigned_items;
433
462
434
- rv_unit_loadout (const game_value &ret_game_value_) : primary(ret_game_value_[0 ]),
435
- secondary (ret_game_value_[1 ]),
436
- handgun(ret_game_value_[2 ]),
437
- uniform(ret_game_value_[3 ]),
438
- vest(ret_game_value_[4 ]),
439
- backpack(ret_game_value_[5 ]),
440
- headgear(ret_game_value_[6 ]),
441
- facewear(ret_game_value_[7 ]),
442
- binocular(ret_game_value_[8 ]) {
443
- auto_array<game_value> _tmp = ret_game_value_[9 ].to_array ();
463
+ rv_unit_loadout (const game_value &ret_game_value_) {
464
+ if (ret_game_value_.size () == 0 ) return ;
465
+ primary = ret_game_value_[0 ];
466
+ secondary = ret_game_value_[1 ];
467
+ handgun = ret_game_value_[2 ];
468
+ uniform = ret_game_value_[3 ];
469
+ vest = ret_game_value_[4 ];
470
+ backpack = ret_game_value_[5 ];
471
+ headgear = static_cast <std::string>(ret_game_value_[6 ]);
472
+ facewear = static_cast <std::string>(ret_game_value_[7 ]);
473
+ binocular = ret_game_value_[8 ];
474
+ auto &_tmp = ret_game_value_[9 ].to_array ();
444
475
assigned_items = std::vector<std::string>(_tmp.begin (), _tmp.end ());
445
476
}
446
477
0 commit comments