mirror of
				https://github.com/OpenMW/openmw.git
				synced 2025-11-04 06:26:39 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			60 lines
		
	
	
		
			No EOL
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			No EOL
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
 | 
						|
#include "inventorystate.hpp"
 | 
						|
 | 
						|
#include "esmreader.hpp"
 | 
						|
#include "esmwriter.hpp"
 | 
						|
 | 
						|
namespace
 | 
						|
{
 | 
						|
    void read (ESM::ESMReader &esm, ESM::ObjectState& state, int& slot)
 | 
						|
    {
 | 
						|
        slot = -1;
 | 
						|
        esm.getHNOT (slot, "SLOT");
 | 
						|
 | 
						|
        state.load (esm);
 | 
						|
    }
 | 
						|
 | 
						|
    void write (ESM::ESMWriter &esm, const ESM::ObjectState& state, unsigned int type, int slot)
 | 
						|
    {
 | 
						|
        esm.writeHNT ("IOBJ", type);
 | 
						|
 | 
						|
        if (slot!=-1)
 | 
						|
            esm.writeHNT ("SLOT", slot);
 | 
						|
 | 
						|
        state.save (esm, true);
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
void ESM::InventoryState::load (ESMReader &esm)
 | 
						|
{
 | 
						|
    while (esm.isNextSub ("IOBJ"))
 | 
						|
    {
 | 
						|
        unsigned int id = 0;
 | 
						|
        esm.getHT (id);
 | 
						|
 | 
						|
        if (id==ESM::REC_LIGH)
 | 
						|
        {
 | 
						|
            LightState state;
 | 
						|
            int slot;
 | 
						|
            read (esm, state, slot);
 | 
						|
            mLights.push_back (std::make_pair (state, slot));
 | 
						|
        }
 | 
						|
        else
 | 
						|
        {
 | 
						|
            ObjectState state;
 | 
						|
            int slot;
 | 
						|
            read (esm, state, slot);
 | 
						|
            mItems.push_back (std::make_pair (state, std::make_pair (id, slot)));
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
void ESM::InventoryState::save (ESMWriter &esm) const
 | 
						|
{
 | 
						|
    for (std::vector<std::pair<ObjectState, std::pair<unsigned int, int> > >::const_iterator iter (mItems.begin()); iter!=mItems.end(); ++iter)
 | 
						|
        write (esm, iter->first, iter->second.first, iter->second.second);
 | 
						|
 | 
						|
    for (std::vector<std::pair<LightState, int> >::const_iterator iter (mLights.begin());
 | 
						|
        iter!=mLights.end(); ++iter)
 | 
						|
        write (esm, iter->first, ESM::REC_LIGH, iter->second);
 | 
						|
} |