ESSImport: read script variables (not converted yet)
parent
98402e579d
commit
e203127952
@ -0,0 +1,20 @@
|
||||
#include "importscpt.hpp"
|
||||
|
||||
#include <components/esm/esmreader.hpp>
|
||||
|
||||
|
||||
|
||||
namespace ESSImport
|
||||
{
|
||||
|
||||
void SCPT::load(ESM::ESMReader &esm)
|
||||
{
|
||||
esm.getHNT(mSCHD, "SCHD");
|
||||
|
||||
mSCRI.load(esm);
|
||||
|
||||
mRNAM = -1;
|
||||
esm.getHNOT(mRNAM, "RNAM");
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,32 @@
|
||||
#ifndef OPENMW_ESSIMPORT_IMPORTSCPT_H
|
||||
#define OPENMW_ESSIMPORT_IMPORTSCPT_H
|
||||
|
||||
#include "importscri.hpp"
|
||||
|
||||
#include <components/esm/loadscpt.hpp>
|
||||
|
||||
namespace ESM
|
||||
{
|
||||
class ESMReader;
|
||||
}
|
||||
|
||||
namespace ESSImport
|
||||
{
|
||||
|
||||
// A running global script
|
||||
// TODO: test how targeted scripts are saved
|
||||
struct SCPT
|
||||
{
|
||||
ESM::Script::SCHD mSCHD;
|
||||
|
||||
// values of local variables
|
||||
SCRI mSCRI;
|
||||
|
||||
int mRNAM; // unknown, seems to be -1 for some scripts, some huge integer for others
|
||||
|
||||
void load(ESM::ESMReader& esm);
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif
|
@ -0,0 +1,55 @@
|
||||
#include "importscri.hpp"
|
||||
|
||||
#include <components/esm/esmreader.hpp>
|
||||
|
||||
namespace ESSImport
|
||||
{
|
||||
|
||||
void SCRI::load(ESM::ESMReader &esm)
|
||||
{
|
||||
mScript = esm.getHNOString("SCRI");
|
||||
|
||||
int numShorts = 0, numLongs = 0, numFloats = 0;
|
||||
if (esm.isNextSub("SLCS"))
|
||||
{
|
||||
esm.getSubHeader();
|
||||
esm.getT(numShorts);
|
||||
esm.getT(numLongs);
|
||||
esm.getT(numFloats);
|
||||
}
|
||||
|
||||
if (esm.isNextSub("SLSD"))
|
||||
{
|
||||
esm.getSubHeader();
|
||||
for (int i=0; i<numShorts; ++i)
|
||||
{
|
||||
short val;
|
||||
esm.getT(val);
|
||||
mShorts.push_back(val);
|
||||
}
|
||||
}
|
||||
// I haven't seen Longs in a save file yet, but SLLD would make sense for the name
|
||||
// TODO: test this
|
||||
if (esm.isNextSub("SLLD"))
|
||||
{
|
||||
esm.getSubHeader();
|
||||
for (int i=0; i<numLongs; ++i)
|
||||
{
|
||||
int val;
|
||||
esm.getT(val);
|
||||
mLongs.push_back(val);
|
||||
}
|
||||
}
|
||||
if (esm.isNextSub("SLFD"))
|
||||
{
|
||||
esm.getSubHeader();
|
||||
for (int i=0; i<numFloats; ++i)
|
||||
{
|
||||
float val;
|
||||
esm.getT(val);
|
||||
mFloats.push_back(val);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,30 @@
|
||||
#ifndef OPENMW_ESSIMPORT_IMPORTSCRI_H
|
||||
#define OPENMW_ESSIMPORT_IMPORTSCRI_H
|
||||
|
||||
#include <components/esm/variant.hpp>
|
||||
|
||||
#include <vector>
|
||||
|
||||
namespace ESM
|
||||
{
|
||||
class ESMReader;
|
||||
}
|
||||
|
||||
namespace ESSImport
|
||||
{
|
||||
|
||||
/// Local variable assigments for a running script
|
||||
struct SCRI
|
||||
{
|
||||
std::string mScript;
|
||||
|
||||
std::vector<short> mShorts;
|
||||
std::vector<int> mLongs;
|
||||
std::vector<float> mFloats;
|
||||
|
||||
void load(ESM::ESMReader& esm);
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif
|
Loading…
Reference in New Issue