1 #include "MagazineModel.h"
2
3 #include "AmmoTypeModel.h"
4 #include "CalibreModel.h"
5 #include "JsonObject.h"
6 #include <utility>
7
MagazineModel(uint16_t itemIndex_,ST::string internalName_,uint32_t itemClass_,const CalibreModel * calibre_,uint16_t capacity_,const AmmoTypeModel * ammoType_,bool dontUseAsDefaultMagazine_)8 MagazineModel::MagazineModel(uint16_t itemIndex_,
9 ST::string internalName_,
10 uint32_t itemClass_,
11 const CalibreModel *calibre_,
12 uint16_t capacity_,
13 const AmmoTypeModel *ammoType_,
14 bool dontUseAsDefaultMagazine_
15 )
16 :ItemModel(itemIndex_, std::move(internalName_), itemClass_, 0, INVALIDCURS),
17 calibre(calibre_), capacity(capacity_), ammoType(ammoType_),
18 dontUseAsDefaultMagazine(dontUseAsDefaultMagazine_)
19 {
20 }
21
22 #include "ContentManager.h"
23 #include "GameInstance.h"
24 #include "Items.h"
25
serializeTo(JsonObject & obj) const26 void MagazineModel::serializeTo(JsonObject &obj) const
27 {
28 obj.AddMember("itemIndex", itemIndex);
29 obj.AddMember("internalName", internalName.c_str());
30 obj.AddMember("calibre", calibre->internalName);
31 obj.AddMember("capacity", capacity);
32 obj.AddMember("ammoType", ammoType->internalName);
33
34 obj.AddMember("ubGraphicType", getGraphicType());
35 obj.AddMember("ubGraphicNum", getGraphicNum());
36 obj.AddMember("ubWeight", getWeight());
37 obj.AddMember("ubPerPocket", getPerPocket());
38 obj.AddMember("usPrice", getPrice());
39 obj.AddMember("ubCoolness", getCoolness());
40
41 if(isInBigGunList())
42 {
43 obj.AddMember("standardReplacement", standardReplacement);
44 }
45
46 serializeFlags(obj);
47
48 if(dontUseAsDefaultMagazine)
49 {
50 obj.AddMember("dontUseAsDefaultMagazine", dontUseAsDefaultMagazine);
51 }
52 }
53
deserialize(JsonObjectReader & obj,const std::map<ST::string,const CalibreModel * > & calibreMap,const std::map<ST::string,const AmmoTypeModel * > & ammoTypeMap)54 MagazineModel* MagazineModel::deserialize(
55 JsonObjectReader &obj,
56 const std::map<ST::string, const CalibreModel*> &calibreMap,
57 const std::map<ST::string, const AmmoTypeModel*> &ammoTypeMap)
58 {
59 int itemIndex = obj.GetInt("itemIndex");
60 ST::string internalName = obj.GetString("internalName");
61 const CalibreModel *calibre = getCalibre(obj.GetString("calibre"), calibreMap);
62 uint32_t itemClass = (calibre->index != NOAMMO) ? IC_AMMO : IC_NONE;
63 uint16_t capacity = obj.GetInt("capacity");
64 const AmmoTypeModel *ammoType = getAmmoType(obj.GetString("ammoType"), ammoTypeMap);
65 bool dontUseAsDefaultMagazine = obj.getOptionalBool("dontUseAsDefaultMagazine");
66 MagazineModel *mag = new MagazineModel(itemIndex, internalName, itemClass, calibre, capacity, ammoType,
67 dontUseAsDefaultMagazine);
68
69 mag->fFlags = mag->deserializeFlags(obj);
70
71 mag->ubGraphicType = obj.GetInt("ubGraphicType");
72 mag->ubGraphicNum = obj.GetInt("ubGraphicNum");
73 mag->ubWeight = obj.GetInt("ubWeight");
74 mag->ubPerPocket = obj.GetInt("ubPerPocket");
75 mag->usPrice = obj.GetInt("usPrice");
76 mag->ubCoolness = obj.GetInt("ubCoolness");
77
78 ST::string replacement = obj.getOptionalString("standardReplacement");
79 if (!replacement.empty())
80 {
81 mag->standardReplacement = replacement;
82 }
83
84 return mag;
85 }
86
87
getStandardReplacement() const88 const ST::string & MagazineModel::getStandardReplacement() const
89 {
90 return standardReplacement;
91 }
92