metaforce/DataSpec/DNACommon/STRG.cpp

43 lines
1.1 KiB
C++
Raw Normal View History

#include "DataSpec/DNACommon/STRG.hpp"
#include "DataSpec/DNAMP1/STRG.hpp"
#include "DataSpec/DNAMP2/STRG.hpp"
#include "DataSpec/DNAMP3/STRG.hpp"
#include <logvisor/logvisor.hpp>
2018-12-08 05:30:43 +00:00
namespace DataSpec {
2015-07-16 01:57:34 +00:00
2018-12-08 05:30:43 +00:00
void ISTRG::gatherDependencies(std::vector<hecl::ProjectPath>& pathsOut) const { /* TODO: parse out resource tokens */ }
2018-12-08 05:30:43 +00:00
std::unique_ptr<ISTRG> LoadSTRG(athena::io::IStreamReader& reader) {
uint32_t magic = reader.readUint32Big();
if (magic != 0x87654321) {
2019-07-20 04:27:21 +00:00
LogDNACommon.report(logvisor::Error, fmt("invalid STRG magic"));
return std::unique_ptr<ISTRG>();
2018-12-08 05:30:43 +00:00
}
uint32_t version = reader.readUint32Big();
switch (version) {
case 0: {
DNAMP1::STRG* newStrg = new DNAMP1::STRG;
newStrg->_read(reader);
return std::unique_ptr<ISTRG>(newStrg);
}
case 1: {
DNAMP2::STRG* newStrg = new DNAMP2::STRG;
newStrg->_read(reader);
return std::unique_ptr<ISTRG>(newStrg);
}
case 3: {
DNAMP3::STRG* newStrg = new DNAMP3::STRG;
newStrg->_read(reader);
return std::unique_ptr<ISTRG>(newStrg);
}
default:
break;
}
return std::unique_ptr<ISTRG>();
}
2018-12-08 05:30:43 +00:00
} // namespace DataSpec