mirror of
				https://github.com/TES3MP/TES3MP.git
				synced 2025-11-03 11:02:35 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			62 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
#include "cellid.hpp"
 | 
						|
 | 
						|
#include "esmreader.hpp"
 | 
						|
#include "esmwriter.hpp"
 | 
						|
 | 
						|
const std::string ESM::CellId::sDefaultWorldspace = "sys::default";
 | 
						|
 | 
						|
void ESM::CellId::load (ESMReader &esm)
 | 
						|
{
 | 
						|
    mWorldspace = esm.getHNString ("SPAC");
 | 
						|
 | 
						|
    if (esm.isNextSub ("CIDX"))
 | 
						|
    {
 | 
						|
        esm.getHT (mIndex, 8);
 | 
						|
        mPaged = true;
 | 
						|
    }
 | 
						|
    else
 | 
						|
        mPaged = false;
 | 
						|
}
 | 
						|
 | 
						|
void ESM::CellId::save (ESMWriter &esm) const
 | 
						|
{
 | 
						|
    esm.writeHNString ("SPAC", mWorldspace);
 | 
						|
 | 
						|
    if (mPaged)
 | 
						|
        esm.writeHNT ("CIDX", mIndex, 8);
 | 
						|
}
 | 
						|
 | 
						|
bool ESM::operator== (const CellId& left, const CellId& right)
 | 
						|
{
 | 
						|
    return left.mWorldspace==right.mWorldspace && left.mPaged==right.mPaged &&
 | 
						|
        (!left.mPaged || (left.mIndex.mX==right.mIndex.mX && left.mIndex.mY==right.mIndex.mY));
 | 
						|
}
 | 
						|
 | 
						|
bool ESM::operator!= (const CellId& left, const CellId& right)
 | 
						|
{
 | 
						|
    return !(left==right);
 | 
						|
}
 | 
						|
 | 
						|
bool ESM::operator < (const CellId& left, const CellId& right)
 | 
						|
{
 | 
						|
    if (left.mPaged < right.mPaged)
 | 
						|
        return true;
 | 
						|
    if (left.mPaged > right.mPaged)
 | 
						|
        return false;
 | 
						|
 | 
						|
    if (left.mPaged)
 | 
						|
    {
 | 
						|
        if (left.mIndex.mX < right.mIndex.mX)
 | 
						|
            return true;
 | 
						|
        if (left.mIndex.mX > right.mIndex.mX)
 | 
						|
            return false;
 | 
						|
 | 
						|
        if (left.mIndex.mY < right.mIndex.mY)
 | 
						|
            return true;
 | 
						|
        if (left.mIndex.mY > right.mIndex.mY)
 | 
						|
            return false;
 | 
						|
    }
 | 
						|
 | 
						|
    return left.mWorldspace < right.mWorldspace;
 | 
						|
}
 |