Esempio n. 1
0
 virtual void read(ESM::ESMReader &esm)
 {
     std::string id = esm.getHNString("NAME");
     CREC crec;
     crec.load(esm);
     mContext->mCreatureChanges.insert(std::make_pair(std::make_pair(crec.mIndex,id), crec));
 }
Esempio n. 2
0
 virtual void read(ESM::ESMReader &esm)
 {
     std::string id = esm.getHNString("NAME");
     CNTC cntc;
     cntc.load(esm);
     mContext->mContainerChanges.insert(std::make_pair(std::make_pair(cntc.mIndex,id), cntc));
 }
Esempio n. 3
0
 virtual void read(ESM::ESMReader& esm)
 {
     std::string id = esm.getHNString("NAME");
     DIAL dial;
     dial.load(esm);
     if (dial.mIndex > 0)
         mDials[id] = dial;
 }
Esempio n. 4
0
    void REFR::load(ESM::ESMReader &esm)
    {
        esm.getHNT(mRefNum.mIndex, "FRMR");

        mRefID = esm.getHNString("NAME");

        mActorData.load(esm);

        esm.getHNOT(mPos, "DATA", 24);
    }
Esempio n. 5
0
    bool ESMStore::readRecord (ESM::ESMReader& reader, uint32_t type)
    {
        switch (type)
        {
            case ESM::REC_ALCH:
            case ESM::REC_ARMO:
            case ESM::REC_BOOK:
            case ESM::REC_CLAS:
            case ESM::REC_CLOT:
            case ESM::REC_ENCH:
            case ESM::REC_SPEL:
            case ESM::REC_WEAP:
            case ESM::REC_NPC_:
            case ESM::REC_LEVI:
            case ESM::REC_LEVC:

                {
                    std::string id = reader.getHNString ("NAME");
                    mStores[type]->read (reader, id);

                    // FIXME: there might be stale dynamic IDs in mIds from an earlier savegame
                    // that really should be cleared instead of just overwritten

                    mIds[id] = type;
                }

                if (type==ESM::REC_NPC_)
                {
                    // NPC record will always be last and we know that there can be only one
                    // dynamic NPC record (player) -> We are done here with dynamic record laoding
                    setUp();

                    const ESM::NPC *player = mNpcs.find ("player");

                    if (!mRaces.find (player->mRace) ||
                        !mClasses.find (player->mClass))
                        throw std::runtime_error ("Invalid player record (race or class unavailable");
                }

                return true;

            case ESM::REC_DYNA:
                reader.getSubNameIs("COUN");
                reader.getHT(mDynamicCount);
                return true;

            default:

                return false;
        }
    }
Esempio n. 6
0
 virtual void read(ESM::ESMReader &esm)
 {
     std::string id = esm.getHNString("NAME");
     NPCC npcc;
     npcc.load(esm);
     if (id == "PlayerSaveGame")
     {
         convertNPCC(npcc, mContext->mPlayer.mObject);
     }
     else
     {
         int index = npcc.mNPDT.mIndex;
         mContext->mNpcChanges.insert(std::make_pair(std::make_pair(index,id), npcc));
     }
 }
Esempio n. 7
0
    virtual void read(ESM::ESMReader &esm)
    {
        std::string itemid = esm.getHNString("NAME");
        Misc::StringUtils::lowerCaseInPlace(itemid);

        while (esm.isNextSub("FNAM") || esm.isNextSub("ONAM"))
        {
            if (esm.retSubName().toString() == "FNAM")
            {
                std::string factionid = esm.getHString();
                mStolenItems[itemid].insert(std::make_pair(Misc::StringUtils::lowerCase(factionid), true));
            }
            else
            {
                std::string ownerid = esm.getHString();
                mStolenItems[itemid].insert(std::make_pair(Misc::StringUtils::lowerCase(ownerid), false));
            }
        }
    }
Esempio n. 8
0
 virtual void read(ESM::ESMReader& esm)
 {
     std::string id = esm.getHNString("NAME");
     QUES quest;
     quest.load(esm);
 }