mirror of
https://github.com/HarbourMasters/Starship
synced 2026-09-01 02:21:47 -04:00
Fixed Solar and Zoness
This commit is contained in:
@@ -23,90 +23,77 @@ std::shared_ptr<LUS::IResource> ResourceFactoryBinaryGenericArrayV0::ReadResourc
|
||||
switch (static_cast<ArrayType>(type)) {
|
||||
case ArrayType::u8: {
|
||||
auto x = reader->ReadUByte();
|
||||
arr->mData.emplace_back(x);
|
||||
arr->mData.push_back(x);
|
||||
break;
|
||||
}
|
||||
case ArrayType::s8: {
|
||||
auto x = reader->ReadInt8();
|
||||
arr->mData.emplace_back(x);
|
||||
arr->mData.push_back(x);
|
||||
break;
|
||||
}
|
||||
case ArrayType::u16: {
|
||||
auto x = reader->ReadUInt16();
|
||||
arr->mData.emplace_back(x);
|
||||
std::copy_n(reinterpret_cast<uint8_t*>(&x), 2, std::back_inserter(arr->mData));
|
||||
break;
|
||||
}
|
||||
case ArrayType::s16: {
|
||||
auto x = reader->ReadInt16();
|
||||
arr->mData.emplace_back(x);
|
||||
std::copy_n(reinterpret_cast<uint8_t*>(&x), 2, std::back_inserter(arr->mData));
|
||||
break;
|
||||
}
|
||||
case ArrayType::u32: {
|
||||
auto x = reader->ReadUInt32();
|
||||
arr->mData.emplace_back(x);
|
||||
std::copy_n(reinterpret_cast<uint8_t*>(&x), 4, std::back_inserter(arr->mData));
|
||||
break;
|
||||
}
|
||||
case ArrayType::s32: {
|
||||
auto x = reader->ReadInt32();
|
||||
arr->mData.emplace_back(x);
|
||||
std::copy_n(reinterpret_cast<uint8_t*>(&x), 4, std::back_inserter(arr->mData));
|
||||
break;
|
||||
}
|
||||
case ArrayType::u64: {
|
||||
auto x = reader->ReadUInt64();
|
||||
arr->mData.emplace_back(x);
|
||||
std::copy_n(reinterpret_cast<uint8_t*>(&x), 8, std::back_inserter(arr->mData));
|
||||
break;
|
||||
}
|
||||
case ArrayType::f32: {
|
||||
auto x = reader->ReadFloat();
|
||||
arr->mData.emplace_back(x);
|
||||
std::copy_n(reinterpret_cast<uint8_t*>(&x), 4, std::back_inserter(arr->mData));
|
||||
break;
|
||||
}
|
||||
case ArrayType::f64: {
|
||||
auto x = reader->ReadDouble();
|
||||
arr->mData.emplace_back(x);
|
||||
std::copy_n(reinterpret_cast<uint8_t*>(&x), 8, std::back_inserter(arr->mData));
|
||||
break;
|
||||
}
|
||||
case ArrayType::Vec2f: {
|
||||
auto x = reader->ReadFloat();
|
||||
auto y = reader->ReadFloat();
|
||||
arr->mData.emplace_back(Vec2f(x, y));
|
||||
Vec2f vec(reader->ReadFloat(), reader->ReadFloat());
|
||||
std::copy_n(reinterpret_cast<uint8_t*>(&vec), sizeof(Vec2f), std::back_inserter(arr->mData));
|
||||
break;
|
||||
}
|
||||
case ArrayType::Vec3f: {
|
||||
auto x = reader->ReadFloat();
|
||||
auto y = reader->ReadFloat();
|
||||
auto z = reader->ReadFloat();
|
||||
arr->mData.emplace_back(Vec3f(x, y, z));
|
||||
Vec3f vec(reader->ReadFloat(), reader->ReadFloat(), reader->ReadFloat());
|
||||
std::copy_n(reinterpret_cast<uint8_t*>(&vec), sizeof(Vec3f), std::back_inserter(arr->mData));
|
||||
break;
|
||||
}
|
||||
case ArrayType::Vec3s: {
|
||||
auto x = reader->ReadInt16();
|
||||
auto y = reader->ReadInt16();
|
||||
auto z = reader->ReadInt16();
|
||||
arr->mData.emplace_back(Vec3s(x, y, z));
|
||||
Vec3s vec(reader->ReadInt16(), reader->ReadInt16(), reader->ReadInt16());
|
||||
std::copy_n(reinterpret_cast<uint8_t*>(&vec), sizeof(Vec3s), std::back_inserter(arr->mData));
|
||||
break;
|
||||
}
|
||||
case ArrayType::Vec3i: {
|
||||
auto x = reader->ReadInt32();
|
||||
auto y = reader->ReadInt32();
|
||||
auto z = reader->ReadInt32();
|
||||
arr->mData.emplace_back(Vec3i(x, y, z));
|
||||
Vec3i vec(reader->ReadInt32(), reader->ReadInt32(), reader->ReadInt32());
|
||||
std::copy_n(reinterpret_cast<uint8_t*>(&vec), sizeof(Vec3i), std::back_inserter(arr->mData));
|
||||
break;
|
||||
}
|
||||
case ArrayType::Vec4f: {
|
||||
auto x = reader->ReadFloat();
|
||||
auto y = reader->ReadFloat();
|
||||
auto z = reader->ReadFloat();
|
||||
auto w = reader->ReadFloat();
|
||||
arr->mData.emplace_back(Vec4f(x, y, z, w));
|
||||
Vec4f vec(reader->ReadFloat(), reader->ReadFloat(), reader->ReadFloat(), reader->ReadFloat());
|
||||
std::copy_n(reinterpret_cast<uint8_t*>(&vec), sizeof(Vec4f), std::back_inserter(arr->mData));
|
||||
break;
|
||||
}
|
||||
case ArrayType::Vec4s: {
|
||||
auto x = reader->ReadInt16();
|
||||
auto y = reader->ReadInt16();
|
||||
auto z = reader->ReadInt16();
|
||||
auto w = reader->ReadInt16();
|
||||
arr->mData.emplace_back(Vec4s(x, y, z, w));
|
||||
Vec4s vec(reader->ReadInt16(), reader->ReadInt16(), reader->ReadInt16(), reader->ReadInt16());
|
||||
std::copy_n(reinterpret_cast<uint8_t*>(&vec), sizeof(Vec4s), std::back_inserter(arr->mData));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,9 +14,10 @@ std::shared_ptr<LUS::IResource> ResourceFactoryBinaryMessageLookupV0::ReadResour
|
||||
auto reader = std::get<std::shared_ptr<LUS::BinaryReader>>(file->Reader);
|
||||
auto count = reader->ReadUInt32();
|
||||
|
||||
for (uint32_t i = 0; i < count; i++) {
|
||||
for (uint32_t i = 0; i < count - 1; i++) {
|
||||
SPDLOG_INFO("Reading message lookup table entry {}", i);
|
||||
auto id = reader->ReadInt32();
|
||||
|
||||
uint16_t* ptr = static_cast<uint16_t*>(ResourceGetDataByCrc(reader->ReadUInt64()));
|
||||
table->mLookupTable.push_back({ id, ptr });
|
||||
}
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
#include "GenericArray.h"
|
||||
|
||||
namespace SF64 {
|
||||
GenericArrayData* GenericArray::GetPointer() {
|
||||
uint8_t* GenericArray::GetPointer() {
|
||||
return mData.data();
|
||||
}
|
||||
|
||||
size_t GenericArray::GetPointerSize() {
|
||||
return sizeof(mData);
|
||||
return mData.size();
|
||||
}
|
||||
}
|
||||
@@ -36,21 +36,20 @@ struct Vec4s {
|
||||
Vec4s(int16_t x, int16_t y, int16_t z, int16_t w) : x(x), y(y), z(z), w(w) {}
|
||||
};
|
||||
|
||||
typedef std::variant<uint8_t, int8_t, uint16_t, int16_t, uint32_t, int32_t, uint64_t, float, double, Vec2f, Vec3f, Vec3s, Vec3i, Vec4f, Vec4s> GenericArrayData;
|
||||
|
||||
enum class ArrayType {
|
||||
u8, s8, u16, s16, u32, s32, u64, f32, f64, Vec2f, Vec3f, Vec3s, Vec3i, Vec4f, Vec4s,
|
||||
};
|
||||
|
||||
class GenericArray : public LUS::Resource<GenericArrayData> {
|
||||
class GenericArray : public LUS::Resource<uint8_t> {
|
||||
public:
|
||||
using Resource::Resource;
|
||||
|
||||
GenericArray() : Resource(std::shared_ptr<LUS::ResourceInitData>()) {}
|
||||
|
||||
GenericArrayData* GetPointer();
|
||||
uint8_t* GetPointer();
|
||||
size_t GetPointerSize();
|
||||
|
||||
std::vector<GenericArrayData> mData;
|
||||
std::vector<uint8_t> mData;
|
||||
size_t mSize;
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user