metaforce/DataSpec/DNACommon/STRG.cpp

43 lines
981 B
C++
Raw Normal View History

#include "STRG.hpp"
#include "../DNAMP1/STRG.hpp"
#include "../DNAMP2/STRG.hpp"
#include "../DNAMP3/STRG.hpp"
2016-02-13 09:02:47 +00:00
namespace DataSpec
{
2015-07-16 01:57:34 +00:00
2016-03-04 23:04:53 +00:00
std::unique_ptr<ISTRG> LoadSTRG(athena::io::IStreamReader& reader)
{
uint32_t magic = reader.readUint32Big();
if (magic != 0x87654321)
{
2016-03-04 23:04:53 +00:00
LogDNACommon.report(logvisor::Error, "invalid STRG magic");
return std::unique_ptr<ISTRG>();
}
uint32_t version = reader.readUint32Big();
switch (version)
{
case 0:
{
2015-07-16 01:57:34 +00:00
DNAMP1::STRG* newStrg = new DNAMP1::STRG;
newStrg->_read(reader);
return std::unique_ptr<ISTRG>(newStrg);
}
case 1:
{
2015-07-16 01:57:34 +00:00
DNAMP2::STRG* newStrg = new DNAMP2::STRG;
newStrg->_read(reader);
return std::unique_ptr<ISTRG>(newStrg);
}
case 3:
{
2015-07-16 01:57:34 +00:00
DNAMP3::STRG* newStrg = new DNAMP3::STRG;
newStrg->_read(reader);
return std::unique_ptr<ISTRG>(newStrg);
}
}
return std::unique_ptr<ISTRG>();
}
}