Files

46 lines
1.3 KiB
C++
Raw Permalink Normal View History

2020-01-15 07:07:48 -05:00
#include "Runtime/RetroTypes.hpp"
2022-02-19 05:04:45 -08:00
#include "Runtime/Streams/IOStreams.hpp"
2020-01-15 07:07:48 -05:00
#include "Runtime/GameGlobalObjects.hpp"
#include "Runtime/IMain.hpp"
#include "Runtime/Logging.hpp"
2017-08-12 22:26:14 -07:00
2021-04-10 01:42:06 -07:00
namespace metaforce {
SObjectTag::SObjectTag(CInputStream& in) {
2022-02-19 05:04:45 -08:00
in.ReadBytes(reinterpret_cast<u8*>(&type), 4);
id = in.Get<CAssetId>();
}
void SObjectTag::ReadMLVL(CInputStream& in) {
id = in.Get<CAssetId>();
2022-02-19 05:04:45 -08:00
in.ReadBytes(reinterpret_cast<u8*>(&type), 4);
}
2018-12-07 19:30:43 -10:00
CAssetId::CAssetId(CInputStream& in) {
if (g_Main != nullptr) {
if (g_Main->GetExpectedIdSize() == sizeof(u32)) {
2022-02-19 05:04:45 -08:00
Assign(u32(in.ReadLong()));
} else if (g_Main->GetExpectedIdSize() == sizeof(u64)) {
Assign(in.ReadLongLong());
} else {
spdlog::fatal("Unsupported id length {}", g_Main->GetExpectedIdSize());
}
} else {
spdlog::fatal("Input constructor called before runtime Main entered!");
}
2017-08-12 22:26:14 -07:00
}
2022-02-19 05:04:45 -08:00
void CAssetId::PutTo(COutputStream& out) const {
if (g_Main != nullptr) {
if (g_Main->GetExpectedIdSize() == sizeof(u32)) {
out.Put(u32(id));
} else if (g_Main->GetExpectedIdSize() == sizeof(u64)) {
out.Put(id);
} else {
spdlog::fatal("Unsupported id length {}", g_Main->GetExpectedIdSize());
}
} else {
spdlog::fatal("PutTo called before runtime Main entered!");
}
2017-08-12 22:26:14 -07:00
}
2021-04-10 01:42:06 -07:00
} // namespace metaforce