#include "globalscript.hpp"

#include "esmreader.hpp"
#include "esmwriter.hpp"

namespace ESM
{

    void GlobalScript::load(ESMReader& esm)
    {
        mId = ESM::RefId::stringRefId(esm.getHNString("NAME"));

        mLocals.load(esm);

        mRunning = 0;
        esm.getHNOT(mRunning, "RUN_");

        mTargetRef.unset();
        mTargetId = ESM::RefId::stringRefId(esm.getHNOString("TARG"));
        if (esm.peekNextSub("FRMR"))
            mTargetRef.load(esm, true, "FRMR");
    }

    void GlobalScript::save(ESMWriter& esm) const
    {
        esm.writeHNString("NAME", mId.getRefIdString());

        mLocals.save(esm);

        if (mRunning)
            esm.writeHNT("RUN_", mRunning);

        if (!mTargetId.empty())
        {
            esm.writeHNOString("TARG", mTargetId.getRefIdString());
            if (mTargetRef.isSet())
                mTargetRef.save(esm, true, "FRMR");
        }
    }

}