new save format
This commit is contained in:
@@ -1,18 +0,0 @@
|
|||||||
#pragma once
|
|
||||||
|
|
||||||
#include <cstdint>
|
|
||||||
|
|
||||||
#define LOG(line, fmt, ...) Logging::Log(Logging::ELogType::Log, line, fmt, ##__VA_ARGS__)
|
|
||||||
#define LOG_WARN(line, fmt, ...) Logging::Log(Logging::ELogType::Warn, line, fmt, ##__VA_ARGS__)
|
|
||||||
#define LOG_ERROR(line, fmt, ...) Logging::Log(Logging::ELogType::Error, line, fmt, ##__VA_ARGS__)
|
|
||||||
|
|
||||||
struct Logging
|
|
||||||
{
|
|
||||||
enum class ELogType
|
|
||||||
{
|
|
||||||
Log,
|
|
||||||
Warn,
|
|
||||||
Error,
|
|
||||||
};
|
|
||||||
static void Log(ELogType logType, uint32_t line, const char* format, ...);
|
|
||||||
};
|
|
||||||
@@ -85,6 +85,8 @@ namespace Gen
|
|||||||
{
|
{
|
||||||
)END";
|
)END";
|
||||||
constexpr char SaveFuncBodyType3[] = R"END( isOk = Save(%sobj[i].%s, %u, serializer) && isOk;
|
constexpr char SaveFuncBodyType3[] = R"END( isOk = Save(%sobj[i].%s, %u, serializer) && isOk;
|
||||||
|
)END";
|
||||||
|
constexpr char SaveFuncBodyNative[] = R"END( isOk = serializer.Write(&obj[i], sizeof(obj[i])) && isOk;
|
||||||
)END";
|
)END";
|
||||||
constexpr char SaveFuncBodyEnum1[] = R"END( auto val = (%s)obj[i];
|
constexpr char SaveFuncBodyEnum1[] = R"END( auto val = (%s)obj[i];
|
||||||
isOk = Save(&val, 1, serializer) && isOk;
|
isOk = Save(&val, 1, serializer) && isOk;
|
||||||
@@ -104,6 +106,8 @@ namespace Gen
|
|||||||
{
|
{
|
||||||
)END";
|
)END";
|
||||||
constexpr char LoadFuncBodyType3[] = R"END( isOk = Load(%sobj[i].%s, %u, serializer) && isOk;
|
constexpr char LoadFuncBodyType3[] = R"END( isOk = Load(%sobj[i].%s, %u, serializer) && isOk;
|
||||||
|
)END";
|
||||||
|
constexpr char LoadFuncBodyNative[] = R"END( isOk = serializer.Read(&obj[i], sizeof(obj[i])) && isOk;
|
||||||
)END";
|
)END";
|
||||||
constexpr char LoadFuncBodyEnum2[] = R"END( %s& val = (%s&)obj[i];
|
constexpr char LoadFuncBodyEnum2[] = R"END( %s& val = (%s&)obj[i];
|
||||||
isOk = Load(&val, 1, serializer) && isOk;
|
isOk = Load(&val, 1, serializer) && isOk;
|
||||||
@@ -119,7 +123,7 @@ namespace Gen
|
|||||||
{
|
{
|
||||||
uint32_t Size = 0;
|
uint32_t Size = 0;
|
||||||
uint32_t Hash = 0;
|
uint32_t Hash = 0;
|
||||||
const char Name[64]{"Dummy"};
|
char Name[64]{"Dummy"};
|
||||||
uint16_t ChildCount = 0;
|
uint16_t ChildCount = 0;
|
||||||
uint16_t ChildIndices[64]{0};
|
uint16_t ChildIndices[64]{0};
|
||||||
};
|
};
|
||||||
@@ -327,20 +331,34 @@ void CppFileWriter::WriteSaveLoadMethods(const Def::DefinitionFile& definitions)
|
|||||||
WriteCpp(WriteTemplates::SaveFuncBodyStart1, typeName);
|
WriteCpp(WriteTemplates::SaveFuncBodyStart1, typeName);
|
||||||
for (int32_t fieldIdx = 0; fieldIdx < t.FieldCount; ++fieldIdx)
|
for (int32_t fieldIdx = 0; fieldIdx < t.FieldCount; ++fieldIdx)
|
||||||
{
|
{
|
||||||
WriteCpp(WriteTemplates::SaveFuncBodyType3,
|
if (Def::IsFieldNative(definitions, t, fieldIdx))
|
||||||
t.FieldArraySizes[fieldIdx] > 0 ? "" : "&",
|
{
|
||||||
t.FieldNames[fieldIdx],
|
WriteCpp(WriteTemplates::SaveFuncBodyNative);
|
||||||
bx::max(1, t.FieldArraySizes[fieldIdx]));
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
WriteCpp(WriteTemplates::SaveFuncBodyType3,
|
||||||
|
t.FieldArraySizes[fieldIdx] > 0 ? "" : "&",
|
||||||
|
t.FieldNames[fieldIdx],
|
||||||
|
bx::max(1, t.FieldArraySizes[fieldIdx]));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
WriteCpp(WriteTemplates::SaveFuncBodyEnd);
|
WriteCpp(WriteTemplates::SaveFuncBodyEnd);
|
||||||
|
|
||||||
WriteCpp(WriteTemplates::LoadFuncBodyStart1, typeName);
|
WriteCpp(WriteTemplates::LoadFuncBodyStart1, typeName);
|
||||||
for (int32_t fieldIdx = 0; fieldIdx < t.FieldCount; ++fieldIdx)
|
for (int32_t fieldIdx = 0; fieldIdx < t.FieldCount; ++fieldIdx)
|
||||||
{
|
{
|
||||||
WriteCpp(WriteTemplates::LoadFuncBodyType3,
|
if (Def::IsFieldNative(definitions, t, fieldIdx))
|
||||||
t.FieldArraySizes[fieldIdx] > 0 ? "" : "&",
|
{
|
||||||
t.FieldNames[fieldIdx],
|
WriteCpp(WriteTemplates::LoadFuncBodyNative);
|
||||||
bx::max(1, t.FieldArraySizes[fieldIdx]));
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
WriteCpp(WriteTemplates::LoadFuncBodyType3,
|
||||||
|
t.FieldArraySizes[fieldIdx] > 0 ? "" : "&",
|
||||||
|
t.FieldNames[fieldIdx],
|
||||||
|
bx::max(1, t.FieldArraySizes[fieldIdx]));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
WriteCpp(WriteTemplates::LoadFuncBodyEnd);
|
WriteCpp(WriteTemplates::LoadFuncBodyEnd);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -220,7 +220,7 @@ namespace Gen
|
|||||||
bool isOk = true;
|
bool isOk = true;
|
||||||
for (uint32_t i = 0; i < count; ++i)
|
for (uint32_t i = 0; i < count; ++i)
|
||||||
{
|
{
|
||||||
isOk = Save(&obj[i].Number, 1, serializer) && isOk;
|
isOk = serializer.Write(&obj[i], sizeof(obj[i])) && isOk;
|
||||||
}
|
}
|
||||||
return isOk;
|
return isOk;
|
||||||
}
|
}
|
||||||
@@ -229,7 +229,7 @@ namespace Gen
|
|||||||
bool isOk = true;
|
bool isOk = true;
|
||||||
for (uint32_t i = 0; i < count; ++i)
|
for (uint32_t i = 0; i < count; ++i)
|
||||||
{
|
{
|
||||||
isOk = Load(&obj[i].Number, 1, serializer) && isOk;
|
isOk = serializer.Read(&obj[i], sizeof(obj[i])) && isOk;
|
||||||
}
|
}
|
||||||
return isOk;
|
return isOk;
|
||||||
}
|
}
|
||||||
@@ -238,9 +238,9 @@ namespace Gen
|
|||||||
bool isOk = true;
|
bool isOk = true;
|
||||||
for (uint32_t i = 0; i < count; ++i)
|
for (uint32_t i = 0; i < count; ++i)
|
||||||
{
|
{
|
||||||
isOk = Save(&obj[i].Width, 1, serializer) && isOk;
|
isOk = serializer.Write(&obj[i], sizeof(obj[i])) && isOk;
|
||||||
isOk = Save(&obj[i].Height, 1, serializer) && isOk;
|
isOk = serializer.Write(&obj[i], sizeof(obj[i])) && isOk;
|
||||||
isOk = Save(obj[i].StrTest, 3, serializer) && isOk;
|
isOk = serializer.Write(&obj[i], sizeof(obj[i])) && isOk;
|
||||||
isOk = Save(&obj[i].T, 1, serializer) && isOk;
|
isOk = Save(&obj[i].T, 1, serializer) && isOk;
|
||||||
}
|
}
|
||||||
return isOk;
|
return isOk;
|
||||||
@@ -250,9 +250,9 @@ namespace Gen
|
|||||||
bool isOk = true;
|
bool isOk = true;
|
||||||
for (uint32_t i = 0; i < count; ++i)
|
for (uint32_t i = 0; i < count; ++i)
|
||||||
{
|
{
|
||||||
isOk = Load(&obj[i].Width, 1, serializer) && isOk;
|
isOk = serializer.Read(&obj[i], sizeof(obj[i])) && isOk;
|
||||||
isOk = Load(&obj[i].Height, 1, serializer) && isOk;
|
isOk = serializer.Read(&obj[i], sizeof(obj[i])) && isOk;
|
||||||
isOk = Load(obj[i].StrTest, 3, serializer) && isOk;
|
isOk = serializer.Read(&obj[i], sizeof(obj[i])) && isOk;
|
||||||
isOk = Load(&obj[i].T, 1, serializer) && isOk;
|
isOk = Load(&obj[i].T, 1, serializer) && isOk;
|
||||||
}
|
}
|
||||||
return isOk;
|
return isOk;
|
||||||
|
|||||||
@@ -104,7 +104,7 @@ namespace Gen
|
|||||||
{
|
{
|
||||||
uint32_t Size = 0;
|
uint32_t Size = 0;
|
||||||
uint32_t Hash = 0;
|
uint32_t Hash = 0;
|
||||||
const char Name[64]{"Dummy"};
|
char Name[64]{"Dummy"};
|
||||||
uint16_t ChildCount = 0;
|
uint16_t ChildCount = 0;
|
||||||
uint16_t ChildIndices[64]{0};
|
uint16_t ChildIndices[64]{0};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -69,4 +69,10 @@ namespace Def
|
|||||||
Def::Enum Enums[MaxTypes];
|
Def::Enum Enums[MaxTypes];
|
||||||
int32_t EnumCount = 0;
|
int32_t EnumCount = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
inline bool IsFieldNative(const DefinitionFile& definitions, const Type& type, int32_t fieldIdx)
|
||||||
|
{
|
||||||
|
return ((int32_t)definitions.Types[type.FieldTypes[fieldIdx].TypeIdx].TypeFlags &
|
||||||
|
(int32_t)ETypeFlags::IsNative) > 0;
|
||||||
|
}
|
||||||
} // namespace Def
|
} // namespace Def
|
||||||
|
|||||||
BIN
src/game/data/puzzles/0.pzl
LFS
BIN
src/game/data/puzzles/0.pzl
LFS
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,41 +1 @@
|
|||||||
#include "Def.h"
|
// #include "Def.h"
|
||||||
|
|
||||||
#define INST(T) \
|
|
||||||
template bool Save<T>(const T* obj, uint32_t count, Serializer& serializer); \
|
|
||||||
template bool Load<T>(T * obj, uint32_t count, Deserializer & serializer);
|
|
||||||
|
|
||||||
namespace Gen
|
|
||||||
{
|
|
||||||
template <typename T> bool Save(const T* obj, uint32_t count, Serializer& serializer)
|
|
||||||
{
|
|
||||||
bool isOk = true;
|
|
||||||
for (uint32_t i = 0; i < count; ++i)
|
|
||||||
{
|
|
||||||
isOk = serializer.Write(&obj[i], sizeof(obj[i])) && isOk;
|
|
||||||
}
|
|
||||||
return isOk;
|
|
||||||
}
|
|
||||||
|
|
||||||
template <typename T> bool Load(T* obj, uint32_t count, Deserializer& serializer)
|
|
||||||
{
|
|
||||||
bool isOk = true;
|
|
||||||
for (uint32_t i = 0; i < count; ++i)
|
|
||||||
{
|
|
||||||
isOk = serializer.Read(&obj[i], sizeof(obj[i])) && isOk;
|
|
||||||
}
|
|
||||||
return isOk;
|
|
||||||
}
|
|
||||||
|
|
||||||
INST(uint8_t)
|
|
||||||
INST(uint16_t)
|
|
||||||
INST(uint32_t)
|
|
||||||
INST(uint64_t)
|
|
||||||
INST(int8_t)
|
|
||||||
INST(int16_t)
|
|
||||||
INST(int32_t)
|
|
||||||
INST(int64_t)
|
|
||||||
INST(float)
|
|
||||||
INST(double)
|
|
||||||
INST(bool)
|
|
||||||
INST(char)
|
|
||||||
} // namespace Gen
|
|
||||||
|
|||||||
105
src/gen/Def.h
105
src/gen/Def.h
@@ -1,12 +1,44 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
#include "../game/Log.h"
|
#include "../game/Log.h"
|
||||||
|
|
||||||
|
#include "Generated.h"
|
||||||
#include "bx/string.h"
|
#include "bx/string.h"
|
||||||
#include <bx/file.h>
|
#include <bx/file.h>
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
|
|
||||||
namespace Gen
|
namespace Gen
|
||||||
{
|
{
|
||||||
|
struct EmbeddedTypeTableBuffer
|
||||||
|
{
|
||||||
|
uint16_t DefCount = 0;
|
||||||
|
Meta::TypeDef Defs[64];
|
||||||
|
|
||||||
|
void AddDef(const Meta::TypeDef& def)
|
||||||
|
{
|
||||||
|
if (DefCount >= BX_COUNTOF(Defs))
|
||||||
|
{
|
||||||
|
LOG_WARN("Ran out of type definition space!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
for (int32_t i = 0; i < DefCount; ++i)
|
||||||
|
{
|
||||||
|
if (Defs[i].Hash == def.Hash) return;
|
||||||
|
}
|
||||||
|
Defs[DefCount] = def;
|
||||||
|
++DefCount;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
struct EmbeddedTypeInfoHeader
|
||||||
|
{
|
||||||
|
static constexpr uint32_t CurrentHeaderVersion = 1;
|
||||||
|
uint32_t HeaderVersion = CurrentHeaderVersion;
|
||||||
|
uint32_t BaseTypeHash = 0;
|
||||||
|
uint16_t BaseTypeIdx = 0;
|
||||||
|
uint16_t TypeCount = 0;
|
||||||
|
uint32_t TypeDataSize = 0;
|
||||||
|
};
|
||||||
|
|
||||||
struct Serializer
|
struct Serializer
|
||||||
{
|
{
|
||||||
bx::Error Err;
|
bx::Error Err;
|
||||||
@@ -41,19 +73,39 @@ namespace Gen
|
|||||||
|
|
||||||
template <typename T> bool WriteT(const T& data)
|
template <typename T> bool WriteT(const T& data)
|
||||||
{
|
{
|
||||||
uint32_t hash = data.Hash;
|
const Meta::TypeDef& baseDef = Meta::Metadata.TypeDefinitions[data.TypeIdx];
|
||||||
if (!Write(&hash, sizeof(hash))) return false;
|
|
||||||
|
|
||||||
uint32_t defSize = 0;
|
EmbeddedTypeTableBuffer typeBuf;
|
||||||
if (!Write(&defSize, sizeof(defSize))) return false;
|
typeBuf.AddDef(baseDef);
|
||||||
|
|
||||||
// auto& definitions = GetDefinitions();
|
// DefCount updates dynamically here!
|
||||||
// if (!Write(&definitions, sizeof(definitions))) return false;
|
for (int32_t i = 0; i < typeBuf.DefCount; ++i)
|
||||||
|
{
|
||||||
|
const Meta::TypeDef& def = typeBuf.Defs[i];
|
||||||
|
for (int32_t j = 0; j < def.ChildCount; ++j)
|
||||||
|
{
|
||||||
|
typeBuf.AddDef(Meta::Metadata.TypeDefinitions[def.ChildIndices[j]]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
uint32_t size = sizeof(T);
|
EmbeddedTypeInfoHeader header;
|
||||||
if (!Write(&size, sizeof(size))) return false;
|
header.BaseTypeHash = baseDef.Hash;
|
||||||
|
header.BaseTypeIdx = 0;
|
||||||
|
header.TypeCount = typeBuf.DefCount;
|
||||||
|
header.TypeDataSize = header.TypeCount * sizeof(Meta::TypeDef);
|
||||||
|
|
||||||
return Save(&data, 1, *this);
|
if (!Write(&header, sizeof(header))) return false;
|
||||||
|
for (int32_t i = 0; i < typeBuf.DefCount; ++i)
|
||||||
|
{
|
||||||
|
if (!Write(&typeBuf.Defs[i], sizeof(typeBuf.Defs[i]))) return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!Save(&data, 1, *this))
|
||||||
|
{
|
||||||
|
LOG_ERROR("Failed to save!");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Write(const void* data, uint32_t size)
|
bool Write(const void* data, uint32_t size)
|
||||||
@@ -117,34 +169,33 @@ namespace Gen
|
|||||||
|
|
||||||
template <typename T> bool ReadT(T& data)
|
template <typename T> bool ReadT(T& data)
|
||||||
{
|
{
|
||||||
uint32_t hash = 0;
|
EmbeddedTypeInfoHeader header;
|
||||||
if (!Read(&hash, sizeof(hash))) return false;
|
if (!Read(&header, sizeof(header))) return false;
|
||||||
|
|
||||||
uint32_t defSize = 0;
|
if (header.HeaderVersion != EmbeddedTypeInfoHeader::CurrentHeaderVersion)
|
||||||
if (!Read(&defSize, sizeof(defSize))) return false;
|
|
||||||
|
|
||||||
if (data.Hash != hash)
|
|
||||||
{
|
{
|
||||||
LOG_WARN("Hash mismatch! %u != %u", data.Hash, hash);
|
// TODO: upgrade
|
||||||
|
LOG_ERROR("Header version mismatch: %u != %u",
|
||||||
|
header.HeaderVersion,
|
||||||
|
EmbeddedTypeInfoHeader::CurrentHeaderVersion);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
// TODO: figure out upgrade data
|
const Meta::TypeDef& baseTypeDef = Meta::Metadata.TypeDefinitions[data.TypeIdx];
|
||||||
|
if (header.BaseTypeHash != baseTypeDef.Hash)
|
||||||
|
{
|
||||||
|
LOG_WARN("Hash mismatch! %u != %u", header.BaseTypeHash, baseTypeDef.Hash);
|
||||||
|
|
||||||
|
// TODO: patch data
|
||||||
data = {};
|
data = {};
|
||||||
return true;
|
return false;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
LOG("Hash match!");
|
LOG("Hash match!");
|
||||||
|
|
||||||
// Skip definitions, we know they match
|
// Skip definitions, we know they match
|
||||||
Reader.seek(defSize);
|
Reader.seek(header.TypeDataSize);
|
||||||
|
|
||||||
uint32_t size = 0;
|
|
||||||
if (!Read(&size, sizeof(size))) return false;
|
|
||||||
if (sizeof(T) != size)
|
|
||||||
{
|
|
||||||
LOG_ERROR("Size mismatch! %u != %u", sizeof(T), size);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!Load(&data, 1, *this))
|
if (!Load(&data, 1, *this))
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ namespace Gen
|
|||||||
bool isOk = true;
|
bool isOk = true;
|
||||||
for (uint32_t i = 0; i < count; ++i)
|
for (uint32_t i = 0; i < count; ++i)
|
||||||
{
|
{
|
||||||
auto val = (int32_t)obj[i];
|
auto val = (uint8_t)obj[i];
|
||||||
isOk = Save(&val, 1, serializer) && isOk;
|
isOk = Save(&val, 1, serializer) && isOk;
|
||||||
}
|
}
|
||||||
return isOk;
|
return isOk;
|
||||||
@@ -18,7 +18,7 @@ namespace Gen
|
|||||||
bool isOk = true;
|
bool isOk = true;
|
||||||
for (uint32_t i = 0; i < count; ++i)
|
for (uint32_t i = 0; i < count; ++i)
|
||||||
{
|
{
|
||||||
int32_t& val = (int32_t&)obj[i];
|
uint8_t& val = (uint8_t&)obj[i];
|
||||||
isOk = Load(&val, 1, serializer) && isOk;
|
isOk = Load(&val, 1, serializer) && isOk;
|
||||||
}
|
}
|
||||||
return isOk;
|
return isOk;
|
||||||
@@ -43,13 +43,205 @@ namespace Gen
|
|||||||
}
|
}
|
||||||
return isOk;
|
return isOk;
|
||||||
}
|
}
|
||||||
|
bool Save(const int8_t* obj, uint32_t count, Serializer& serializer)
|
||||||
|
{
|
||||||
|
bool isOk = true;
|
||||||
|
for (uint32_t i = 0; i < count; ++i)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
return isOk;
|
||||||
|
}
|
||||||
|
bool Load(int8_t* obj, uint32_t count, Deserializer& serializer)
|
||||||
|
{
|
||||||
|
bool isOk = true;
|
||||||
|
for (uint32_t i = 0; i < count; ++i)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
return isOk;
|
||||||
|
}
|
||||||
|
bool Save(const int16_t* obj, uint32_t count, Serializer& serializer)
|
||||||
|
{
|
||||||
|
bool isOk = true;
|
||||||
|
for (uint32_t i = 0; i < count; ++i)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
return isOk;
|
||||||
|
}
|
||||||
|
bool Load(int16_t* obj, uint32_t count, Deserializer& serializer)
|
||||||
|
{
|
||||||
|
bool isOk = true;
|
||||||
|
for (uint32_t i = 0; i < count; ++i)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
return isOk;
|
||||||
|
}
|
||||||
|
bool Save(const int32_t* obj, uint32_t count, Serializer& serializer)
|
||||||
|
{
|
||||||
|
bool isOk = true;
|
||||||
|
for (uint32_t i = 0; i < count; ++i)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
return isOk;
|
||||||
|
}
|
||||||
|
bool Load(int32_t* obj, uint32_t count, Deserializer& serializer)
|
||||||
|
{
|
||||||
|
bool isOk = true;
|
||||||
|
for (uint32_t i = 0; i < count; ++i)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
return isOk;
|
||||||
|
}
|
||||||
|
bool Save(const int64_t* obj, uint32_t count, Serializer& serializer)
|
||||||
|
{
|
||||||
|
bool isOk = true;
|
||||||
|
for (uint32_t i = 0; i < count; ++i)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
return isOk;
|
||||||
|
}
|
||||||
|
bool Load(int64_t* obj, uint32_t count, Deserializer& serializer)
|
||||||
|
{
|
||||||
|
bool isOk = true;
|
||||||
|
for (uint32_t i = 0; i < count; ++i)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
return isOk;
|
||||||
|
}
|
||||||
|
bool Save(const uint8_t* obj, uint32_t count, Serializer& serializer)
|
||||||
|
{
|
||||||
|
bool isOk = true;
|
||||||
|
for (uint32_t i = 0; i < count; ++i)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
return isOk;
|
||||||
|
}
|
||||||
|
bool Load(uint8_t* obj, uint32_t count, Deserializer& serializer)
|
||||||
|
{
|
||||||
|
bool isOk = true;
|
||||||
|
for (uint32_t i = 0; i < count; ++i)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
return isOk;
|
||||||
|
}
|
||||||
|
bool Save(const uint16_t* obj, uint32_t count, Serializer& serializer)
|
||||||
|
{
|
||||||
|
bool isOk = true;
|
||||||
|
for (uint32_t i = 0; i < count; ++i)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
return isOk;
|
||||||
|
}
|
||||||
|
bool Load(uint16_t* obj, uint32_t count, Deserializer& serializer)
|
||||||
|
{
|
||||||
|
bool isOk = true;
|
||||||
|
for (uint32_t i = 0; i < count; ++i)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
return isOk;
|
||||||
|
}
|
||||||
|
bool Save(const uint32_t* obj, uint32_t count, Serializer& serializer)
|
||||||
|
{
|
||||||
|
bool isOk = true;
|
||||||
|
for (uint32_t i = 0; i < count; ++i)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
return isOk;
|
||||||
|
}
|
||||||
|
bool Load(uint32_t* obj, uint32_t count, Deserializer& serializer)
|
||||||
|
{
|
||||||
|
bool isOk = true;
|
||||||
|
for (uint32_t i = 0; i < count; ++i)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
return isOk;
|
||||||
|
}
|
||||||
|
bool Save(const uint64_t* obj, uint32_t count, Serializer& serializer)
|
||||||
|
{
|
||||||
|
bool isOk = true;
|
||||||
|
for (uint32_t i = 0; i < count; ++i)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
return isOk;
|
||||||
|
}
|
||||||
|
bool Load(uint64_t* obj, uint32_t count, Deserializer& serializer)
|
||||||
|
{
|
||||||
|
bool isOk = true;
|
||||||
|
for (uint32_t i = 0; i < count; ++i)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
return isOk;
|
||||||
|
}
|
||||||
|
bool Save(const bool* obj, uint32_t count, Serializer& serializer)
|
||||||
|
{
|
||||||
|
bool isOk = true;
|
||||||
|
for (uint32_t i = 0; i < count; ++i)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
return isOk;
|
||||||
|
}
|
||||||
|
bool Load(bool* obj, uint32_t count, Deserializer& serializer)
|
||||||
|
{
|
||||||
|
bool isOk = true;
|
||||||
|
for (uint32_t i = 0; i < count; ++i)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
return isOk;
|
||||||
|
}
|
||||||
|
bool Save(const float* obj, uint32_t count, Serializer& serializer)
|
||||||
|
{
|
||||||
|
bool isOk = true;
|
||||||
|
for (uint32_t i = 0; i < count; ++i)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
return isOk;
|
||||||
|
}
|
||||||
|
bool Load(float* obj, uint32_t count, Deserializer& serializer)
|
||||||
|
{
|
||||||
|
bool isOk = true;
|
||||||
|
for (uint32_t i = 0; i < count; ++i)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
return isOk;
|
||||||
|
}
|
||||||
|
bool Save(const double* obj, uint32_t count, Serializer& serializer)
|
||||||
|
{
|
||||||
|
bool isOk = true;
|
||||||
|
for (uint32_t i = 0; i < count; ++i)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
return isOk;
|
||||||
|
}
|
||||||
|
bool Load(double* obj, uint32_t count, Deserializer& serializer)
|
||||||
|
{
|
||||||
|
bool isOk = true;
|
||||||
|
for (uint32_t i = 0; i < count; ++i)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
return isOk;
|
||||||
|
}
|
||||||
|
bool Save(const char* obj, uint32_t count, Serializer& serializer)
|
||||||
|
{
|
||||||
|
bool isOk = true;
|
||||||
|
for (uint32_t i = 0; i < count; ++i)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
return isOk;
|
||||||
|
}
|
||||||
|
bool Load(char* obj, uint32_t count, Deserializer& serializer)
|
||||||
|
{
|
||||||
|
bool isOk = true;
|
||||||
|
for (uint32_t i = 0; i < count; ++i)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
return isOk;
|
||||||
|
}
|
||||||
bool Save(const Vec2* obj, uint32_t count, Serializer& serializer)
|
bool Save(const Vec2* obj, uint32_t count, Serializer& serializer)
|
||||||
{
|
{
|
||||||
bool isOk = true;
|
bool isOk = true;
|
||||||
for (uint32_t i = 0; i < count; ++i)
|
for (uint32_t i = 0; i < count; ++i)
|
||||||
{
|
{
|
||||||
isOk = Save(&obj[i].x, 1, serializer) && isOk;
|
isOk = serializer.Write(&obj[i], sizeof(obj[i])) && isOk;
|
||||||
isOk = Save(&obj[i].y, 1, serializer) && isOk;
|
isOk = serializer.Write(&obj[i], sizeof(obj[i])) && isOk;
|
||||||
}
|
}
|
||||||
return isOk;
|
return isOk;
|
||||||
}
|
}
|
||||||
@@ -58,8 +250,8 @@ namespace Gen
|
|||||||
bool isOk = true;
|
bool isOk = true;
|
||||||
for (uint32_t i = 0; i < count; ++i)
|
for (uint32_t i = 0; i < count; ++i)
|
||||||
{
|
{
|
||||||
isOk = Load(&obj[i].x, 1, serializer) && isOk;
|
isOk = serializer.Read(&obj[i], sizeof(obj[i])) && isOk;
|
||||||
isOk = Load(&obj[i].y, 1, serializer) && isOk;
|
isOk = serializer.Read(&obj[i], sizeof(obj[i])) && isOk;
|
||||||
}
|
}
|
||||||
return isOk;
|
return isOk;
|
||||||
}
|
}
|
||||||
@@ -68,9 +260,9 @@ namespace Gen
|
|||||||
bool isOk = true;
|
bool isOk = true;
|
||||||
for (uint32_t i = 0; i < count; ++i)
|
for (uint32_t i = 0; i < count; ++i)
|
||||||
{
|
{
|
||||||
isOk = Save(&obj[i].x, 1, serializer) && isOk;
|
isOk = serializer.Write(&obj[i], sizeof(obj[i])) && isOk;
|
||||||
isOk = Save(&obj[i].y, 1, serializer) && isOk;
|
isOk = serializer.Write(&obj[i], sizeof(obj[i])) && isOk;
|
||||||
isOk = Save(&obj[i].z, 1, serializer) && isOk;
|
isOk = serializer.Write(&obj[i], sizeof(obj[i])) && isOk;
|
||||||
}
|
}
|
||||||
return isOk;
|
return isOk;
|
||||||
}
|
}
|
||||||
@@ -79,9 +271,9 @@ namespace Gen
|
|||||||
bool isOk = true;
|
bool isOk = true;
|
||||||
for (uint32_t i = 0; i < count; ++i)
|
for (uint32_t i = 0; i < count; ++i)
|
||||||
{
|
{
|
||||||
isOk = Load(&obj[i].x, 1, serializer) && isOk;
|
isOk = serializer.Read(&obj[i], sizeof(obj[i])) && isOk;
|
||||||
isOk = Load(&obj[i].y, 1, serializer) && isOk;
|
isOk = serializer.Read(&obj[i], sizeof(obj[i])) && isOk;
|
||||||
isOk = Load(&obj[i].z, 1, serializer) && isOk;
|
isOk = serializer.Read(&obj[i], sizeof(obj[i])) && isOk;
|
||||||
}
|
}
|
||||||
return isOk;
|
return isOk;
|
||||||
}
|
}
|
||||||
@@ -90,10 +282,10 @@ namespace Gen
|
|||||||
bool isOk = true;
|
bool isOk = true;
|
||||||
for (uint32_t i = 0; i < count; ++i)
|
for (uint32_t i = 0; i < count; ++i)
|
||||||
{
|
{
|
||||||
isOk = Save(&obj[i].x, 1, serializer) && isOk;
|
isOk = serializer.Write(&obj[i], sizeof(obj[i])) && isOk;
|
||||||
isOk = Save(&obj[i].y, 1, serializer) && isOk;
|
isOk = serializer.Write(&obj[i], sizeof(obj[i])) && isOk;
|
||||||
isOk = Save(&obj[i].z, 1, serializer) && isOk;
|
isOk = serializer.Write(&obj[i], sizeof(obj[i])) && isOk;
|
||||||
isOk = Save(&obj[i].w, 1, serializer) && isOk;
|
isOk = serializer.Write(&obj[i], sizeof(obj[i])) && isOk;
|
||||||
}
|
}
|
||||||
return isOk;
|
return isOk;
|
||||||
}
|
}
|
||||||
@@ -102,10 +294,10 @@ namespace Gen
|
|||||||
bool isOk = true;
|
bool isOk = true;
|
||||||
for (uint32_t i = 0; i < count; ++i)
|
for (uint32_t i = 0; i < count; ++i)
|
||||||
{
|
{
|
||||||
isOk = Load(&obj[i].x, 1, serializer) && isOk;
|
isOk = serializer.Read(&obj[i], sizeof(obj[i])) && isOk;
|
||||||
isOk = Load(&obj[i].y, 1, serializer) && isOk;
|
isOk = serializer.Read(&obj[i], sizeof(obj[i])) && isOk;
|
||||||
isOk = Load(&obj[i].z, 1, serializer) && isOk;
|
isOk = serializer.Read(&obj[i], sizeof(obj[i])) && isOk;
|
||||||
isOk = Load(&obj[i].w, 1, serializer) && isOk;
|
isOk = serializer.Read(&obj[i], sizeof(obj[i])) && isOk;
|
||||||
}
|
}
|
||||||
return isOk;
|
return isOk;
|
||||||
}
|
}
|
||||||
@@ -114,7 +306,7 @@ namespace Gen
|
|||||||
bool isOk = true;
|
bool isOk = true;
|
||||||
for (uint32_t i = 0; i < count; ++i)
|
for (uint32_t i = 0; i < count; ++i)
|
||||||
{
|
{
|
||||||
isOk = Save(obj[i].M, 9, serializer) && isOk;
|
isOk = serializer.Write(&obj[i], sizeof(obj[i])) && isOk;
|
||||||
}
|
}
|
||||||
return isOk;
|
return isOk;
|
||||||
}
|
}
|
||||||
@@ -123,7 +315,7 @@ namespace Gen
|
|||||||
bool isOk = true;
|
bool isOk = true;
|
||||||
for (uint32_t i = 0; i < count; ++i)
|
for (uint32_t i = 0; i < count; ++i)
|
||||||
{
|
{
|
||||||
isOk = Load(obj[i].M, 9, serializer) && isOk;
|
isOk = serializer.Read(&obj[i], sizeof(obj[i])) && isOk;
|
||||||
}
|
}
|
||||||
return isOk;
|
return isOk;
|
||||||
}
|
}
|
||||||
@@ -132,7 +324,7 @@ namespace Gen
|
|||||||
bool isOk = true;
|
bool isOk = true;
|
||||||
for (uint32_t i = 0; i < count; ++i)
|
for (uint32_t i = 0; i < count; ++i)
|
||||||
{
|
{
|
||||||
isOk = Save(obj[i].M, 16, serializer) && isOk;
|
isOk = serializer.Write(&obj[i], sizeof(obj[i])) && isOk;
|
||||||
}
|
}
|
||||||
return isOk;
|
return isOk;
|
||||||
}
|
}
|
||||||
@@ -141,7 +333,7 @@ namespace Gen
|
|||||||
bool isOk = true;
|
bool isOk = true;
|
||||||
for (uint32_t i = 0; i < count; ++i)
|
for (uint32_t i = 0; i < count; ++i)
|
||||||
{
|
{
|
||||||
isOk = Load(obj[i].M, 16, serializer) && isOk;
|
isOk = serializer.Read(&obj[i], sizeof(obj[i])) && isOk;
|
||||||
}
|
}
|
||||||
return isOk;
|
return isOk;
|
||||||
}
|
}
|
||||||
@@ -176,7 +368,7 @@ namespace Gen
|
|||||||
bool isOk = true;
|
bool isOk = true;
|
||||||
for (uint32_t i = 0; i < count; ++i)
|
for (uint32_t i = 0; i < count; ++i)
|
||||||
{
|
{
|
||||||
isOk = Save(&obj[i].Idx, 1, serializer) && isOk;
|
isOk = serializer.Write(&obj[i], sizeof(obj[i])) && isOk;
|
||||||
}
|
}
|
||||||
return isOk;
|
return isOk;
|
||||||
}
|
}
|
||||||
@@ -185,7 +377,7 @@ namespace Gen
|
|||||||
bool isOk = true;
|
bool isOk = true;
|
||||||
for (uint32_t i = 0; i < count; ++i)
|
for (uint32_t i = 0; i < count; ++i)
|
||||||
{
|
{
|
||||||
isOk = Load(&obj[i].Idx, 1, serializer) && isOk;
|
isOk = serializer.Read(&obj[i], sizeof(obj[i])) && isOk;
|
||||||
}
|
}
|
||||||
return isOk;
|
return isOk;
|
||||||
}
|
}
|
||||||
@@ -194,7 +386,7 @@ namespace Gen
|
|||||||
bool isOk = true;
|
bool isOk = true;
|
||||||
for (uint32_t i = 0; i < count; ++i)
|
for (uint32_t i = 0; i < count; ++i)
|
||||||
{
|
{
|
||||||
isOk = Save(&obj[i].ModelIdx, 1, serializer) && isOk;
|
isOk = serializer.Write(&obj[i], sizeof(obj[i])) && isOk;
|
||||||
isOk = Save(&obj[i].Asset, 1, serializer) && isOk;
|
isOk = Save(&obj[i].Asset, 1, serializer) && isOk;
|
||||||
}
|
}
|
||||||
return isOk;
|
return isOk;
|
||||||
@@ -204,7 +396,7 @@ namespace Gen
|
|||||||
bool isOk = true;
|
bool isOk = true;
|
||||||
for (uint32_t i = 0; i < count; ++i)
|
for (uint32_t i = 0; i < count; ++i)
|
||||||
{
|
{
|
||||||
isOk = Load(&obj[i].ModelIdx, 1, serializer) && isOk;
|
isOk = serializer.Read(&obj[i], sizeof(obj[i])) && isOk;
|
||||||
isOk = Load(&obj[i].Asset, 1, serializer) && isOk;
|
isOk = Load(&obj[i].Asset, 1, serializer) && isOk;
|
||||||
}
|
}
|
||||||
return isOk;
|
return isOk;
|
||||||
@@ -214,7 +406,7 @@ namespace Gen
|
|||||||
bool isOk = true;
|
bool isOk = true;
|
||||||
for (uint32_t i = 0; i < count; ++i)
|
for (uint32_t i = 0; i < count; ++i)
|
||||||
{
|
{
|
||||||
isOk = Save(&obj[i].TextureIdx, 1, serializer) && isOk;
|
isOk = serializer.Write(&obj[i], sizeof(obj[i])) && isOk;
|
||||||
isOk = Save(&obj[i].Asset, 1, serializer) && isOk;
|
isOk = Save(&obj[i].Asset, 1, serializer) && isOk;
|
||||||
}
|
}
|
||||||
return isOk;
|
return isOk;
|
||||||
@@ -224,7 +416,7 @@ namespace Gen
|
|||||||
bool isOk = true;
|
bool isOk = true;
|
||||||
for (uint32_t i = 0; i < count; ++i)
|
for (uint32_t i = 0; i < count; ++i)
|
||||||
{
|
{
|
||||||
isOk = Load(&obj[i].TextureIdx, 1, serializer) && isOk;
|
isOk = serializer.Read(&obj[i], sizeof(obj[i])) && isOk;
|
||||||
isOk = Load(&obj[i].Asset, 1, serializer) && isOk;
|
isOk = Load(&obj[i].Asset, 1, serializer) && isOk;
|
||||||
}
|
}
|
||||||
return isOk;
|
return isOk;
|
||||||
@@ -234,8 +426,8 @@ namespace Gen
|
|||||||
bool isOk = true;
|
bool isOk = true;
|
||||||
for (uint32_t i = 0; i < count; ++i)
|
for (uint32_t i = 0; i < count; ++i)
|
||||||
{
|
{
|
||||||
isOk = Save(&obj[i].X, 1, serializer) && isOk;
|
isOk = serializer.Write(&obj[i], sizeof(obj[i])) && isOk;
|
||||||
isOk = Save(&obj[i].Y, 1, serializer) && isOk;
|
isOk = serializer.Write(&obj[i], sizeof(obj[i])) && isOk;
|
||||||
}
|
}
|
||||||
return isOk;
|
return isOk;
|
||||||
}
|
}
|
||||||
@@ -244,8 +436,8 @@ namespace Gen
|
|||||||
bool isOk = true;
|
bool isOk = true;
|
||||||
for (uint32_t i = 0; i < count; ++i)
|
for (uint32_t i = 0; i < count; ++i)
|
||||||
{
|
{
|
||||||
isOk = Load(&obj[i].X, 1, serializer) && isOk;
|
isOk = serializer.Read(&obj[i], sizeof(obj[i])) && isOk;
|
||||||
isOk = Load(&obj[i].Y, 1, serializer) && isOk;
|
isOk = serializer.Read(&obj[i], sizeof(obj[i])) && isOk;
|
||||||
}
|
}
|
||||||
return isOk;
|
return isOk;
|
||||||
}
|
}
|
||||||
@@ -254,7 +446,7 @@ namespace Gen
|
|||||||
bool isOk = true;
|
bool isOk = true;
|
||||||
for (uint32_t i = 0; i < count; ++i)
|
for (uint32_t i = 0; i < count; ++i)
|
||||||
{
|
{
|
||||||
isOk = Save(obj[i].Elements, 4, serializer) && isOk;
|
isOk = serializer.Write(&obj[i], sizeof(obj[i])) && isOk;
|
||||||
isOk = Save(&obj[i].ModelHandle, 1, serializer) && isOk;
|
isOk = Save(&obj[i].ModelHandle, 1, serializer) && isOk;
|
||||||
isOk = Save(&obj[i].BoardTextureHandle, 1, serializer) && isOk;
|
isOk = Save(&obj[i].BoardTextureHandle, 1, serializer) && isOk;
|
||||||
}
|
}
|
||||||
@@ -265,7 +457,7 @@ namespace Gen
|
|||||||
bool isOk = true;
|
bool isOk = true;
|
||||||
for (uint32_t i = 0; i < count; ++i)
|
for (uint32_t i = 0; i < count; ++i)
|
||||||
{
|
{
|
||||||
isOk = Load(obj[i].Elements, 4, serializer) && isOk;
|
isOk = serializer.Read(&obj[i], sizeof(obj[i])) && isOk;
|
||||||
isOk = Load(&obj[i].ModelHandle, 1, serializer) && isOk;
|
isOk = Load(&obj[i].ModelHandle, 1, serializer) && isOk;
|
||||||
isOk = Load(&obj[i].BoardTextureHandle, 1, serializer) && isOk;
|
isOk = Load(&obj[i].BoardTextureHandle, 1, serializer) && isOk;
|
||||||
}
|
}
|
||||||
@@ -276,7 +468,7 @@ namespace Gen
|
|||||||
bool isOk = true;
|
bool isOk = true;
|
||||||
for (uint32_t i = 0; i < count; ++i)
|
for (uint32_t i = 0; i < count; ++i)
|
||||||
{
|
{
|
||||||
isOk = Save(&obj[i].Idx, 1, serializer) && isOk;
|
isOk = serializer.Write(&obj[i], sizeof(obj[i])) && isOk;
|
||||||
}
|
}
|
||||||
return isOk;
|
return isOk;
|
||||||
}
|
}
|
||||||
@@ -285,7 +477,7 @@ namespace Gen
|
|||||||
bool isOk = true;
|
bool isOk = true;
|
||||||
for (uint32_t i = 0; i < count; ++i)
|
for (uint32_t i = 0; i < count; ++i)
|
||||||
{
|
{
|
||||||
isOk = Load(&obj[i].Idx, 1, serializer) && isOk;
|
isOk = serializer.Read(&obj[i], sizeof(obj[i])) && isOk;
|
||||||
}
|
}
|
||||||
return isOk;
|
return isOk;
|
||||||
}
|
}
|
||||||
@@ -337,8 +529,8 @@ namespace Gen
|
|||||||
for (uint32_t i = 0; i < count; ++i)
|
for (uint32_t i = 0; i < count; ++i)
|
||||||
{
|
{
|
||||||
isOk = Save(&obj[i].RefCard, 1, serializer) && isOk;
|
isOk = Save(&obj[i].RefCard, 1, serializer) && isOk;
|
||||||
isOk = Save(&obj[i].MaxAvailableCount, 1, serializer) && isOk;
|
isOk = serializer.Write(&obj[i], sizeof(obj[i])) && isOk;
|
||||||
isOk = Save(&obj[i].UsedCount, 1, serializer) && isOk;
|
isOk = serializer.Write(&obj[i], sizeof(obj[i])) && isOk;
|
||||||
}
|
}
|
||||||
return isOk;
|
return isOk;
|
||||||
}
|
}
|
||||||
@@ -348,8 +540,8 @@ namespace Gen
|
|||||||
for (uint32_t i = 0; i < count; ++i)
|
for (uint32_t i = 0; i < count; ++i)
|
||||||
{
|
{
|
||||||
isOk = Load(&obj[i].RefCard, 1, serializer) && isOk;
|
isOk = Load(&obj[i].RefCard, 1, serializer) && isOk;
|
||||||
isOk = Load(&obj[i].MaxAvailableCount, 1, serializer) && isOk;
|
isOk = serializer.Read(&obj[i], sizeof(obj[i])) && isOk;
|
||||||
isOk = Load(&obj[i].UsedCount, 1, serializer) && isOk;
|
isOk = serializer.Read(&obj[i], sizeof(obj[i])) && isOk;
|
||||||
}
|
}
|
||||||
return isOk;
|
return isOk;
|
||||||
}
|
}
|
||||||
@@ -360,8 +552,8 @@ namespace Gen
|
|||||||
{
|
{
|
||||||
isOk = Save(&obj[i].RefCard, 1, serializer) && isOk;
|
isOk = Save(&obj[i].RefCard, 1, serializer) && isOk;
|
||||||
isOk = Save(&obj[i].Position, 1, serializer) && isOk;
|
isOk = Save(&obj[i].Position, 1, serializer) && isOk;
|
||||||
isOk = Save(&obj[i].Rotation, 1, serializer) && isOk;
|
isOk = serializer.Write(&obj[i], sizeof(obj[i])) && isOk;
|
||||||
isOk = Save(&obj[i].IsLocked, 1, serializer) && isOk;
|
isOk = serializer.Write(&obj[i], sizeof(obj[i])) && isOk;
|
||||||
}
|
}
|
||||||
return isOk;
|
return isOk;
|
||||||
}
|
}
|
||||||
@@ -372,8 +564,8 @@ namespace Gen
|
|||||||
{
|
{
|
||||||
isOk = Load(&obj[i].RefCard, 1, serializer) && isOk;
|
isOk = Load(&obj[i].RefCard, 1, serializer) && isOk;
|
||||||
isOk = Load(&obj[i].Position, 1, serializer) && isOk;
|
isOk = Load(&obj[i].Position, 1, serializer) && isOk;
|
||||||
isOk = Load(&obj[i].Rotation, 1, serializer) && isOk;
|
isOk = serializer.Read(&obj[i], sizeof(obj[i])) && isOk;
|
||||||
isOk = Load(&obj[i].IsLocked, 1, serializer) && isOk;
|
isOk = serializer.Read(&obj[i], sizeof(obj[i])) && isOk;
|
||||||
}
|
}
|
||||||
return isOk;
|
return isOk;
|
||||||
}
|
}
|
||||||
@@ -382,15 +574,15 @@ namespace Gen
|
|||||||
bool isOk = true;
|
bool isOk = true;
|
||||||
for (uint32_t i = 0; i < count; ++i)
|
for (uint32_t i = 0; i < count; ++i)
|
||||||
{
|
{
|
||||||
isOk = Save(&obj[i].ID, 1, serializer) && isOk;
|
isOk = serializer.Write(&obj[i], sizeof(obj[i])) && isOk;
|
||||||
isOk = Save(obj[i].PuzzleName, 64, serializer) && isOk;
|
isOk = serializer.Write(&obj[i], sizeof(obj[i])) && isOk;
|
||||||
isOk = Save(&obj[i].WidthTiles, 1, serializer) && isOk;
|
isOk = serializer.Write(&obj[i], sizeof(obj[i])) && isOk;
|
||||||
isOk = Save(&obj[i].HeightTiles, 1, serializer) && isOk;
|
isOk = serializer.Write(&obj[i], sizeof(obj[i])) && isOk;
|
||||||
isOk = Save(&obj[i].AvailableCardCount, 1, serializer) && isOk;
|
isOk = serializer.Write(&obj[i], sizeof(obj[i])) && isOk;
|
||||||
isOk = Save(obj[i].AvailableCards, 16, serializer) && isOk;
|
isOk = Save(obj[i].AvailableCards, 16, serializer) && isOk;
|
||||||
isOk = Save(obj[i].PlacedCards, 256, serializer) && isOk;
|
isOk = Save(obj[i].PlacedCards, 256, serializer) && isOk;
|
||||||
isOk = Save(obj[i].BackgroundTiles, 1024, serializer) && isOk;
|
isOk = serializer.Write(&obj[i], sizeof(obj[i])) && isOk;
|
||||||
isOk = Save(&obj[i].GoalPositionCount, 1, serializer) && isOk;
|
isOk = serializer.Write(&obj[i], sizeof(obj[i])) && isOk;
|
||||||
isOk = Save(obj[i].GoalPositions, 16, serializer) && isOk;
|
isOk = Save(obj[i].GoalPositions, 16, serializer) && isOk;
|
||||||
}
|
}
|
||||||
return isOk;
|
return isOk;
|
||||||
@@ -400,15 +592,15 @@ namespace Gen
|
|||||||
bool isOk = true;
|
bool isOk = true;
|
||||||
for (uint32_t i = 0; i < count; ++i)
|
for (uint32_t i = 0; i < count; ++i)
|
||||||
{
|
{
|
||||||
isOk = Load(&obj[i].ID, 1, serializer) && isOk;
|
isOk = serializer.Read(&obj[i], sizeof(obj[i])) && isOk;
|
||||||
isOk = Load(obj[i].PuzzleName, 64, serializer) && isOk;
|
isOk = serializer.Read(&obj[i], sizeof(obj[i])) && isOk;
|
||||||
isOk = Load(&obj[i].WidthTiles, 1, serializer) && isOk;
|
isOk = serializer.Read(&obj[i], sizeof(obj[i])) && isOk;
|
||||||
isOk = Load(&obj[i].HeightTiles, 1, serializer) && isOk;
|
isOk = serializer.Read(&obj[i], sizeof(obj[i])) && isOk;
|
||||||
isOk = Load(&obj[i].AvailableCardCount, 1, serializer) && isOk;
|
isOk = serializer.Read(&obj[i], sizeof(obj[i])) && isOk;
|
||||||
isOk = Load(obj[i].AvailableCards, 16, serializer) && isOk;
|
isOk = Load(obj[i].AvailableCards, 16, serializer) && isOk;
|
||||||
isOk = Load(obj[i].PlacedCards, 256, serializer) && isOk;
|
isOk = Load(obj[i].PlacedCards, 256, serializer) && isOk;
|
||||||
isOk = Load(obj[i].BackgroundTiles, 1024, serializer) && isOk;
|
isOk = serializer.Read(&obj[i], sizeof(obj[i])) && isOk;
|
||||||
isOk = Load(&obj[i].GoalPositionCount, 1, serializer) && isOk;
|
isOk = serializer.Read(&obj[i], sizeof(obj[i])) && isOk;
|
||||||
isOk = Load(obj[i].GoalPositions, 16, serializer) && isOk;
|
isOk = Load(obj[i].GoalPositions, 16, serializer) && isOk;
|
||||||
}
|
}
|
||||||
return isOk;
|
return isOk;
|
||||||
@@ -421,10 +613,10 @@ namespace Gen
|
|||||||
isOk = Save(&obj[i].BaseColor, 1, serializer) && isOk;
|
isOk = Save(&obj[i].BaseColor, 1, serializer) && isOk;
|
||||||
isOk = Save(&obj[i].HighlightColor, 1, serializer) && isOk;
|
isOk = Save(&obj[i].HighlightColor, 1, serializer) && isOk;
|
||||||
isOk = Save(&obj[i].TF, 1, serializer) && isOk;
|
isOk = Save(&obj[i].TF, 1, serializer) && isOk;
|
||||||
isOk = Save(&obj[i].Material, 1, serializer) && isOk;
|
isOk = serializer.Write(&obj[i], sizeof(obj[i])) && isOk;
|
||||||
isOk = Save(&obj[i].Texture, 1, serializer) && isOk;
|
isOk = Save(&obj[i].Texture, 1, serializer) && isOk;
|
||||||
isOk = Save(&obj[i].Model, 1, serializer) && isOk;
|
isOk = Save(&obj[i].Model, 1, serializer) && isOk;
|
||||||
isOk = Save(&obj[i].Visible, 1, serializer) && isOk;
|
isOk = serializer.Write(&obj[i], sizeof(obj[i])) && isOk;
|
||||||
}
|
}
|
||||||
return isOk;
|
return isOk;
|
||||||
}
|
}
|
||||||
@@ -436,10 +628,10 @@ namespace Gen
|
|||||||
isOk = Load(&obj[i].BaseColor, 1, serializer) && isOk;
|
isOk = Load(&obj[i].BaseColor, 1, serializer) && isOk;
|
||||||
isOk = Load(&obj[i].HighlightColor, 1, serializer) && isOk;
|
isOk = Load(&obj[i].HighlightColor, 1, serializer) && isOk;
|
||||||
isOk = Load(&obj[i].TF, 1, serializer) && isOk;
|
isOk = Load(&obj[i].TF, 1, serializer) && isOk;
|
||||||
isOk = Load(&obj[i].Material, 1, serializer) && isOk;
|
isOk = serializer.Read(&obj[i], sizeof(obj[i])) && isOk;
|
||||||
isOk = Load(&obj[i].Texture, 1, serializer) && isOk;
|
isOk = Load(&obj[i].Texture, 1, serializer) && isOk;
|
||||||
isOk = Load(&obj[i].Model, 1, serializer) && isOk;
|
isOk = Load(&obj[i].Model, 1, serializer) && isOk;
|
||||||
isOk = Load(&obj[i].Visible, 1, serializer) && isOk;
|
isOk = serializer.Read(&obj[i], sizeof(obj[i])) && isOk;
|
||||||
}
|
}
|
||||||
return isOk;
|
return isOk;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,9 +7,9 @@ namespace Gen
|
|||||||
struct Deserializer;
|
struct Deserializer;
|
||||||
struct PuzzleElementType
|
struct PuzzleElementType
|
||||||
{
|
{
|
||||||
|
static constexpr uint16_t EnumIdx = 0;
|
||||||
static constexpr int32_t EntryCount = 8;
|
static constexpr int32_t EntryCount = 8;
|
||||||
static constexpr uint32_t Hash = 2024002654;
|
enum Enum : uint8_t
|
||||||
enum Enum : int32_t
|
|
||||||
{
|
{
|
||||||
None,
|
None,
|
||||||
WaterIn,
|
WaterIn,
|
||||||
@@ -56,8 +56,8 @@ namespace Gen
|
|||||||
};
|
};
|
||||||
struct EMaterial
|
struct EMaterial
|
||||||
{
|
{
|
||||||
|
static constexpr uint16_t EnumIdx = 1;
|
||||||
static constexpr int32_t EntryCount = 2;
|
static constexpr int32_t EntryCount = 2;
|
||||||
static constexpr uint32_t Hash = 2024002654;
|
|
||||||
enum Enum : int32_t
|
enum Enum : int32_t
|
||||||
{
|
{
|
||||||
Default,
|
Default,
|
||||||
@@ -71,20 +71,20 @@ namespace Gen
|
|||||||
};
|
};
|
||||||
struct Vec2
|
struct Vec2
|
||||||
{
|
{
|
||||||
static constexpr uint32_t Hash = 2667033957;
|
static constexpr uint16_t TypeIdx = 12;
|
||||||
float x = {};
|
float x = {};
|
||||||
float y = {};
|
float y = {};
|
||||||
};
|
};
|
||||||
struct Vec3
|
struct Vec3
|
||||||
{
|
{
|
||||||
static constexpr uint32_t Hash = 473740858;
|
static constexpr uint16_t TypeIdx = 13;
|
||||||
float x = {};
|
float x = {};
|
||||||
float y = {};
|
float y = {};
|
||||||
float z = {};
|
float z = {};
|
||||||
};
|
};
|
||||||
struct Vec4
|
struct Vec4
|
||||||
{
|
{
|
||||||
static constexpr uint32_t Hash = 2507696603;
|
static constexpr uint16_t TypeIdx = 14;
|
||||||
float x = {};
|
float x = {};
|
||||||
float y = {};
|
float y = {};
|
||||||
float z = {};
|
float z = {};
|
||||||
@@ -92,7 +92,7 @@ namespace Gen
|
|||||||
};
|
};
|
||||||
struct Mat3
|
struct Mat3
|
||||||
{
|
{
|
||||||
static constexpr uint32_t Hash = 3364737048;
|
static constexpr uint16_t TypeIdx = 15;
|
||||||
float M[9] = {
|
float M[9] = {
|
||||||
1.0f, 0.0f, 0.0f,
|
1.0f, 0.0f, 0.0f,
|
||||||
0.0f, 1.0f, 0.0f,
|
0.0f, 1.0f, 0.0f,
|
||||||
@@ -101,7 +101,7 @@ namespace Gen
|
|||||||
};
|
};
|
||||||
struct Mat4
|
struct Mat4
|
||||||
{
|
{
|
||||||
static constexpr uint32_t Hash = 1650094019;
|
static constexpr uint16_t TypeIdx = 16;
|
||||||
float M[16] = {
|
float M[16] = {
|
||||||
1.0f, 0.0f, 0.0f, 0.0f,
|
1.0f, 0.0f, 0.0f, 0.0f,
|
||||||
0.0f, 1.0f, 0.0f, 0.0f,
|
0.0f, 1.0f, 0.0f, 0.0f,
|
||||||
@@ -111,7 +111,7 @@ namespace Gen
|
|||||||
};
|
};
|
||||||
struct Transform
|
struct Transform
|
||||||
{
|
{
|
||||||
static constexpr uint32_t Hash = 4103530190;
|
static constexpr uint16_t TypeIdx = 17;
|
||||||
Mat4 M = {};
|
Mat4 M = {};
|
||||||
Mat4 MI = {};
|
Mat4 MI = {};
|
||||||
Vec3 Position = {};
|
Vec3 Position = {};
|
||||||
@@ -120,62 +120,62 @@ namespace Gen
|
|||||||
};
|
};
|
||||||
struct AssetHandle
|
struct AssetHandle
|
||||||
{
|
{
|
||||||
static constexpr uint32_t Hash = 2609735487;
|
static constexpr uint16_t TypeIdx = 18;
|
||||||
uint32_t Idx = UINT32_MAX;
|
uint32_t Idx = UINT32_MAX;
|
||||||
};
|
};
|
||||||
struct ModelHandle
|
struct ModelHandle
|
||||||
{
|
{
|
||||||
static constexpr uint32_t Hash = 298089627;
|
static constexpr uint16_t TypeIdx = 19;
|
||||||
uint16_t ModelIdx = UINT16_MAX;
|
uint16_t ModelIdx = UINT16_MAX;
|
||||||
AssetHandle Asset = {};
|
AssetHandle Asset = {};
|
||||||
};
|
};
|
||||||
struct TextureHandle
|
struct TextureHandle
|
||||||
{
|
{
|
||||||
static constexpr uint32_t Hash = 1633273761;
|
static constexpr uint16_t TypeIdx = 20;
|
||||||
uint16_t TextureIdx = UINT16_MAX;
|
uint16_t TextureIdx = UINT16_MAX;
|
||||||
AssetHandle Asset = {};
|
AssetHandle Asset = {};
|
||||||
};
|
};
|
||||||
struct PuzPos
|
struct PuzPos
|
||||||
{
|
{
|
||||||
static constexpr uint32_t Hash = 1834398141;
|
static constexpr uint16_t TypeIdx = 21;
|
||||||
int8_t X = {};
|
int8_t X = {};
|
||||||
int8_t Y = {};
|
int8_t Y = {};
|
||||||
};
|
};
|
||||||
struct StaticPuzzleCard
|
struct StaticPuzzleCard
|
||||||
{
|
{
|
||||||
static constexpr uint32_t Hash = 431895198;
|
static constexpr uint16_t TypeIdx = 22;
|
||||||
PuzzleElementType::Enum Elements[4] = {};
|
PuzzleElementType::Enum Elements[4] = {};
|
||||||
ModelHandle ModelHandle = {};
|
ModelHandle ModelHandle = {};
|
||||||
TextureHandle BoardTextureHandle = {};
|
TextureHandle BoardTextureHandle = {};
|
||||||
};
|
};
|
||||||
struct StaticPuzzleCardHandle
|
struct StaticPuzzleCardHandle
|
||||||
{
|
{
|
||||||
static constexpr uint32_t Hash = 1742502768;
|
static constexpr uint16_t TypeIdx = 23;
|
||||||
uint16_t Idx = UINT16_MAX;
|
uint16_t Idx = UINT16_MAX;
|
||||||
};
|
};
|
||||||
struct PuzzleVisualSettings
|
struct PuzzleVisualSettings
|
||||||
{
|
{
|
||||||
static constexpr uint32_t Hash = 4208425878;
|
static constexpr uint16_t TypeIdx = 24;
|
||||||
Vec4 TileBaseColor = {};
|
Vec4 TileBaseColor = {};
|
||||||
Vec4 TileDotColor = {};
|
Vec4 TileDotColor = {};
|
||||||
Vec4 DisabledCardTint = {};
|
Vec4 DisabledCardTint = {};
|
||||||
};
|
};
|
||||||
struct StaticPuzzleData
|
struct StaticPuzzleData
|
||||||
{
|
{
|
||||||
static constexpr uint32_t Hash = 1076634601;
|
static constexpr uint16_t TypeIdx = 25;
|
||||||
StaticPuzzleCard Cards[64] = {};
|
StaticPuzzleCard Cards[64] = {};
|
||||||
PuzzleVisualSettings Visuals = {};
|
PuzzleVisualSettings Visuals = {};
|
||||||
};
|
};
|
||||||
struct PuzzleCardStack
|
struct PuzzleCardStack
|
||||||
{
|
{
|
||||||
static constexpr uint32_t Hash = 53538532;
|
static constexpr uint16_t TypeIdx = 26;
|
||||||
StaticPuzzleCardHandle RefCard = {};
|
StaticPuzzleCardHandle RefCard = {};
|
||||||
uint8_t MaxAvailableCount = {};
|
uint8_t MaxAvailableCount = {};
|
||||||
uint8_t UsedCount = {};
|
uint8_t UsedCount = {};
|
||||||
};
|
};
|
||||||
struct PlacedPuzzleCard
|
struct PlacedPuzzleCard
|
||||||
{
|
{
|
||||||
static constexpr uint32_t Hash = 3555575973;
|
static constexpr uint16_t TypeIdx = 27;
|
||||||
StaticPuzzleCardHandle RefCard = {};
|
StaticPuzzleCardHandle RefCard = {};
|
||||||
PuzPos Position = {};
|
PuzPos Position = {};
|
||||||
uint8_t Rotation = {};
|
uint8_t Rotation = {};
|
||||||
@@ -183,7 +183,7 @@ namespace Gen
|
|||||||
};
|
};
|
||||||
struct PuzzleData
|
struct PuzzleData
|
||||||
{
|
{
|
||||||
static constexpr uint32_t Hash = 657000000;
|
static constexpr uint16_t TypeIdx = 28;
|
||||||
uint16_t ID = {};
|
uint16_t ID = {};
|
||||||
char PuzzleName[64] = {};
|
char PuzzleName[64] = {};
|
||||||
uint8_t WidthTiles = {};
|
uint8_t WidthTiles = {};
|
||||||
@@ -197,7 +197,7 @@ namespace Gen
|
|||||||
};
|
};
|
||||||
struct SavedEntityRenderData
|
struct SavedEntityRenderData
|
||||||
{
|
{
|
||||||
static constexpr uint32_t Hash = 3172756855;
|
static constexpr uint16_t TypeIdx = 29;
|
||||||
Vec4 BaseColor = {};
|
Vec4 BaseColor = {};
|
||||||
Vec4 HighlightColor = {};
|
Vec4 HighlightColor = {};
|
||||||
Transform TF = {};
|
Transform TF = {};
|
||||||
@@ -210,6 +210,30 @@ namespace Gen
|
|||||||
bool Load(PuzzleElementType::Enum* obj, uint32_t count, Deserializer& serializer);
|
bool Load(PuzzleElementType::Enum* obj, uint32_t count, Deserializer& serializer);
|
||||||
bool Save(const EMaterial::Enum* obj, uint32_t count, Serializer& serializer);
|
bool Save(const EMaterial::Enum* obj, uint32_t count, Serializer& serializer);
|
||||||
bool Load(EMaterial::Enum* obj, uint32_t count, Deserializer& serializer);
|
bool Load(EMaterial::Enum* obj, uint32_t count, Deserializer& serializer);
|
||||||
|
bool Save(const int8_t* obj, uint32_t count, Serializer& serializer);
|
||||||
|
bool Load(int8_t* obj, uint32_t count, Deserializer& serializer);
|
||||||
|
bool Save(const int16_t* obj, uint32_t count, Serializer& serializer);
|
||||||
|
bool Load(int16_t* obj, uint32_t count, Deserializer& serializer);
|
||||||
|
bool Save(const int32_t* obj, uint32_t count, Serializer& serializer);
|
||||||
|
bool Load(int32_t* obj, uint32_t count, Deserializer& serializer);
|
||||||
|
bool Save(const int64_t* obj, uint32_t count, Serializer& serializer);
|
||||||
|
bool Load(int64_t* obj, uint32_t count, Deserializer& serializer);
|
||||||
|
bool Save(const uint8_t* obj, uint32_t count, Serializer& serializer);
|
||||||
|
bool Load(uint8_t* obj, uint32_t count, Deserializer& serializer);
|
||||||
|
bool Save(const uint16_t* obj, uint32_t count, Serializer& serializer);
|
||||||
|
bool Load(uint16_t* obj, uint32_t count, Deserializer& serializer);
|
||||||
|
bool Save(const uint32_t* obj, uint32_t count, Serializer& serializer);
|
||||||
|
bool Load(uint32_t* obj, uint32_t count, Deserializer& serializer);
|
||||||
|
bool Save(const uint64_t* obj, uint32_t count, Serializer& serializer);
|
||||||
|
bool Load(uint64_t* obj, uint32_t count, Deserializer& serializer);
|
||||||
|
bool Save(const bool* obj, uint32_t count, Serializer& serializer);
|
||||||
|
bool Load(bool* obj, uint32_t count, Deserializer& serializer);
|
||||||
|
bool Save(const float* obj, uint32_t count, Serializer& serializer);
|
||||||
|
bool Load(float* obj, uint32_t count, Deserializer& serializer);
|
||||||
|
bool Save(const double* obj, uint32_t count, Serializer& serializer);
|
||||||
|
bool Load(double* obj, uint32_t count, Deserializer& serializer);
|
||||||
|
bool Save(const char* obj, uint32_t count, Serializer& serializer);
|
||||||
|
bool Load(char* obj, uint32_t count, Deserializer& serializer);
|
||||||
bool Save(const Vec2* obj, uint32_t count, Serializer& serializer);
|
bool Save(const Vec2* obj, uint32_t count, Serializer& serializer);
|
||||||
bool Load(Vec2* obj, uint32_t count, Deserializer& serializer);
|
bool Load(Vec2* obj, uint32_t count, Deserializer& serializer);
|
||||||
bool Save(const Vec3* obj, uint32_t count, Serializer& serializer);
|
bool Save(const Vec3* obj, uint32_t count, Serializer& serializer);
|
||||||
@@ -246,4 +270,65 @@ namespace Gen
|
|||||||
bool Load(PuzzleData* obj, uint32_t count, Deserializer& serializer);
|
bool Load(PuzzleData* obj, uint32_t count, Deserializer& serializer);
|
||||||
bool Save(const SavedEntityRenderData* obj, uint32_t count, Serializer& serializer);
|
bool Save(const SavedEntityRenderData* obj, uint32_t count, Serializer& serializer);
|
||||||
bool Load(SavedEntityRenderData* obj, uint32_t count, Deserializer& serializer);
|
bool Load(SavedEntityRenderData* obj, uint32_t count, Deserializer& serializer);
|
||||||
|
|
||||||
|
namespace Meta {
|
||||||
|
struct TypeDef
|
||||||
|
{
|
||||||
|
uint32_t Size = 0;
|
||||||
|
uint32_t Hash = 0;
|
||||||
|
char Name[64]{"Dummy"};
|
||||||
|
uint16_t ChildCount = 0;
|
||||||
|
uint16_t ChildIndices[64]{0};
|
||||||
|
};
|
||||||
|
|
||||||
|
struct EnumDef
|
||||||
|
{
|
||||||
|
uint32_t Size = 0;
|
||||||
|
uint32_t Hash = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct MetadataTable
|
||||||
|
{
|
||||||
|
TypeDef TypeDefinitions[30]
|
||||||
|
{
|
||||||
|
TypeDef{sizeof(int8_t), 0, "i8", 0, {}},
|
||||||
|
TypeDef{sizeof(int16_t), 1, "i16", 0, {}},
|
||||||
|
TypeDef{sizeof(int32_t), 2, "i32", 0, {}},
|
||||||
|
TypeDef{sizeof(int64_t), 3, "i64", 0, {}},
|
||||||
|
TypeDef{sizeof(uint8_t), 4, "u8", 0, {}},
|
||||||
|
TypeDef{sizeof(uint16_t), 5, "u16", 0, {}},
|
||||||
|
TypeDef{sizeof(uint32_t), 6, "u32", 0, {}},
|
||||||
|
TypeDef{sizeof(uint64_t), 7, "u64", 0, {}},
|
||||||
|
TypeDef{sizeof(bool), 8, "b", 0, {}},
|
||||||
|
TypeDef{sizeof(float), 9, "f32", 0, {}},
|
||||||
|
TypeDef{sizeof(double), 10, "f64", 0, {}},
|
||||||
|
TypeDef{sizeof(char), 11, "str", 0, {}},
|
||||||
|
TypeDef{sizeof(Vec2), 2667033957, "Vec2", 2, {9, 9}},
|
||||||
|
TypeDef{sizeof(Vec3), 473740858, "Vec3", 3, {9, 9, 9}},
|
||||||
|
TypeDef{sizeof(Vec4), 2507696603, "Vec4", 4, {9, 9, 9, 9}},
|
||||||
|
TypeDef{sizeof(Mat3), 3364737048, "Mat3", 1, {9}},
|
||||||
|
TypeDef{sizeof(Mat4), 1650094019, "Mat4", 1, {9}},
|
||||||
|
TypeDef{sizeof(Transform), 4103530190, "Transform", 5, {16, 16, 13, 16, 13}},
|
||||||
|
TypeDef{sizeof(AssetHandle), 2609735487, "AssetHandle", 1, {6}},
|
||||||
|
TypeDef{sizeof(ModelHandle), 298089627, "ModelHandle", 2, {5, 18}},
|
||||||
|
TypeDef{sizeof(TextureHandle), 1633273761, "TextureHandle", 2, {5, 18}},
|
||||||
|
TypeDef{sizeof(PuzPos), 1834398141, "PuzPos", 2, {0, 0}},
|
||||||
|
TypeDef{sizeof(StaticPuzzleCard), 3413177578, "StaticPuzzleCard", 3, {0, 19, 20}},
|
||||||
|
TypeDef{sizeof(StaticPuzzleCardHandle), 1742502768, "StaticPuzzleCardHandle", 1, {5}},
|
||||||
|
TypeDef{sizeof(PuzzleVisualSettings), 4208425878, "PuzzleVisualSettings", 3, {14, 14, 14}},
|
||||||
|
TypeDef{sizeof(StaticPuzzleData), 423465540, "StaticPuzzleData", 2, {22, 24}},
|
||||||
|
TypeDef{sizeof(PuzzleCardStack), 53538532, "PuzzleCardStack", 3, {23, 4, 4}},
|
||||||
|
TypeDef{sizeof(PlacedPuzzleCard), 3555575973, "PlacedPuzzleCard", 4, {23, 21, 4, 8}},
|
||||||
|
TypeDef{sizeof(PuzzleData), 3349686056, "PuzzleData", 10, {5, 11, 4, 4, 6, 26, 27, 0, 6, 21}},
|
||||||
|
TypeDef{sizeof(SavedEntityRenderData), 3172756855, "SavedEntityRenderData", 7, {14, 14, 17, 1, 20, 19, 8}},
|
||||||
|
};
|
||||||
|
EnumDef EnumDefinitions[2]
|
||||||
|
{
|
||||||
|
EnumDef{sizeof(PuzzleElementType::Enum), 2983807453},
|
||||||
|
EnumDef{sizeof(EMaterial::Enum), 2024002654},
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
constexpr MetadataTable Metadata;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
24
src/notes.txt
Normal file
24
src/notes.txt
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
4 bytes: 4cc
|
||||||
|
File type idendifier
|
||||||
|
|
||||||
|
16 bytes: TypeInfoHeader
|
||||||
|
4 | 4 | 2 | 2 | 4
|
||||||
|
Version | Base Type Hash | Base Type Idx | Type Count | Type Data Size
|
||||||
|
// If base type hash matches, skip past type data (using type data size)
|
||||||
|
// and just load binary blob directly
|
||||||
|
|
||||||
|
TypeDataSize bytes: TypeDefs
|
||||||
|
|
||||||
|
// TODO: field table
|
||||||
|
name | array size
|
||||||
|
test | 1
|
||||||
|
a | 1
|
||||||
|
b | 1
|
||||||
|
c | 1
|
||||||
|
d | 32
|
||||||
|
|
||||||
|
// todo: enum table for upgrading strings?
|
||||||
|
|
||||||
|
xxx bytes: BaseType actual data
|
||||||
|
|
||||||
|
[blob]
|
||||||
Binary file not shown.
Reference in New Issue
Block a user