mirror of
				https://github.com/OpenMW/openmw.git
				synced 2025-10-24 22:26:37 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			106 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			106 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| #ifndef OPENMW_ESM_ARMO_H
 | |
| #define OPENMW_ESM_ARMO_H
 | |
| 
 | |
| #include <vector>
 | |
| #include <string>
 | |
| 
 | |
| namespace ESM
 | |
| {
 | |
| 
 | |
| class ESMReader;
 | |
| class ESMWriter;
 | |
| 
 | |
| enum PartReferenceType
 | |
| {
 | |
|     PRT_Head = 0,
 | |
|     PRT_Hair = 1,
 | |
|     PRT_Neck = 2,
 | |
|     PRT_Cuirass = 3,
 | |
|     PRT_Groin = 4,
 | |
|     PRT_Skirt = 5,
 | |
|     PRT_RHand = 6,
 | |
|     PRT_LHand = 7,
 | |
|     PRT_RWrist = 8,
 | |
|     PRT_LWrist = 9,
 | |
|     PRT_Shield = 10,
 | |
|     PRT_RForearm = 11,
 | |
|     PRT_LForearm = 12,
 | |
|     PRT_RUpperarm = 13,
 | |
|     PRT_LUpperarm = 14,
 | |
|     PRT_RFoot = 15,
 | |
|     PRT_LFoot = 16,
 | |
|     PRT_RAnkle = 17,
 | |
|     PRT_LAnkle = 18,
 | |
|     PRT_RKnee = 19,
 | |
|     PRT_LKnee = 20,
 | |
|     PRT_RLeg = 21,
 | |
|     PRT_LLeg = 22,
 | |
|     PRT_RPauldron = 23,
 | |
|     PRT_LPauldron = 24,
 | |
|     PRT_Weapon = 25,
 | |
|     PRT_Tail = 26,
 | |
| 
 | |
|     PRT_Count = 27
 | |
| };
 | |
| 
 | |
| // Reference to body parts
 | |
| struct PartReference
 | |
| {
 | |
|     unsigned char mPart; // possible values [0, 26]
 | |
|     std::string mMale, mFemale;
 | |
| };
 | |
| 
 | |
| // A list of references to body parts
 | |
| struct PartReferenceList
 | |
| {
 | |
|     std::vector<PartReference> mParts;
 | |
| 
 | |
|     /// Load one part, assumes the subrecord name was already read
 | |
|     void add(ESMReader &esm);
 | |
| 
 | |
|     /// TODO: remove this method. The ESM format does not guarantee that all Part subrecords follow one another.
 | |
|     void load(ESMReader &esm);
 | |
|     void save(ESMWriter &esm) const;
 | |
| };
 | |
| 
 | |
| struct Armor
 | |
| {
 | |
|     static unsigned int sRecordId;
 | |
|     /// Return a string descriptor for this record type. Currently used for debugging / error logs only.
 | |
|     static std::string getRecordType() { return "Armor"; }
 | |
| 
 | |
|     enum Type
 | |
|     {
 | |
|         Helmet = 0,
 | |
|         Cuirass = 1,
 | |
|         LPauldron = 2,
 | |
|         RPauldron = 3,
 | |
|         Greaves = 4,
 | |
|         Boots = 5,
 | |
|         LGauntlet = 6,
 | |
|         RGauntlet = 7,
 | |
|         Shield = 8,
 | |
|         LBracer = 9,
 | |
|         RBracer = 10
 | |
|     };
 | |
| 
 | |
|     struct AODTstruct
 | |
|     {
 | |
|         int mType;
 | |
|         float mWeight;
 | |
|         int mValue, mHealth, mEnchant, mArmor;
 | |
|     };
 | |
| 
 | |
|     AODTstruct mData;
 | |
|     PartReferenceList mParts;
 | |
| 
 | |
|     std::string mId, mName, mModel, mIcon, mScript, mEnchant;
 | |
| 
 | |
|     void load(ESMReader &esm, bool &isDeleted);
 | |
|     void save(ESMWriter &esm, bool isDeleted = false) const;
 | |
| 
 | |
|     void blank();
 | |
|     ///< Set record to default state (does not touch the ID).
 | |
| };
 | |
| }
 | |
| #endif
 |