loading works!!
This commit is contained in:
41
src/gen/Def.cpp
Normal file
41
src/gen/Def.cpp
Normal file
@@ -0,0 +1,41 @@
|
||||
#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 Generated
|
||||
{
|
||||
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 Generated
|
||||
@@ -2,17 +2,6 @@
|
||||
#include <bx/file.h>
|
||||
#include <cstdint>
|
||||
|
||||
#define SAVE_T(T) \
|
||||
inline 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; \
|
||||
}
|
||||
|
||||
namespace Generated
|
||||
{
|
||||
struct Serializer
|
||||
@@ -40,17 +29,31 @@ namespace Generated
|
||||
}
|
||||
};
|
||||
|
||||
SAVE_T(uint8_t)
|
||||
SAVE_T(uint16_t)
|
||||
SAVE_T(uint32_t)
|
||||
SAVE_T(uint64_t)
|
||||
SAVE_T(int8_t)
|
||||
SAVE_T(int16_t)
|
||||
SAVE_T(int32_t)
|
||||
SAVE_T(int64_t)
|
||||
SAVE_T(float)
|
||||
SAVE_T(double)
|
||||
SAVE_T(bool)
|
||||
SAVE_T(char)
|
||||
struct Deserializer
|
||||
{
|
||||
bx::Error Err;
|
||||
bx::FilePath Path;
|
||||
bx::FileReader Reader;
|
||||
|
||||
bool Init(const bx::FilePath& path)
|
||||
{
|
||||
Path = path;
|
||||
Reader.open(path, &Err);
|
||||
return Err.isOk();
|
||||
}
|
||||
|
||||
bool Read(void* data, uint32_t size)
|
||||
{
|
||||
Reader.read(data, size, &Err);
|
||||
return Err.isOk();
|
||||
}
|
||||
|
||||
void Finish()
|
||||
{
|
||||
Reader.close();
|
||||
}
|
||||
};
|
||||
|
||||
template <typename T> bool Save(const T* obj, uint32_t count, Serializer& serializer);
|
||||
template <typename T> bool Load(T* obj, uint32_t count, Deserializer& serializer);
|
||||
} // namespace Generated
|
||||
|
||||
@@ -12,6 +12,16 @@ namespace Generated
|
||||
}
|
||||
return isOk;
|
||||
}
|
||||
bool Load(PuzzleElementType::Enum* obj, uint32_t count, Deserializer& serializer)
|
||||
{
|
||||
bool isOk = true;
|
||||
for (uint32_t i = 0; i < count; ++i)
|
||||
{
|
||||
auto val = (int32_t)obj[i];
|
||||
isOk = Load(&val, 1, serializer) && isOk;
|
||||
}
|
||||
return isOk;
|
||||
}
|
||||
bool Save(const PuzPos* obj, uint32_t count, Serializer& serializer)
|
||||
{
|
||||
bool isOk = true;
|
||||
@@ -22,6 +32,16 @@ namespace Generated
|
||||
}
|
||||
return isOk;
|
||||
}
|
||||
bool Load(PuzPos* obj, uint32_t count, Deserializer& serializer)
|
||||
{
|
||||
bool isOk = true;
|
||||
for (uint32_t i = 0; i < count; ++i)
|
||||
{
|
||||
isOk = Load(&obj[i].X, 1, serializer) && isOk;
|
||||
isOk = Load(&obj[i].Y, 1, serializer) && isOk;
|
||||
}
|
||||
return isOk;
|
||||
}
|
||||
bool Save(const ElemPos* obj, uint32_t count, Serializer& serializer)
|
||||
{
|
||||
bool isOk = true;
|
||||
@@ -32,6 +52,16 @@ namespace Generated
|
||||
}
|
||||
return isOk;
|
||||
}
|
||||
bool Load(ElemPos* obj, uint32_t count, Deserializer& serializer)
|
||||
{
|
||||
bool isOk = true;
|
||||
for (uint32_t i = 0; i < count; ++i)
|
||||
{
|
||||
isOk = Load(&obj[i].Position, 1, serializer) && isOk;
|
||||
isOk = Load(&obj[i].ElemIdx, 1, serializer) && isOk;
|
||||
}
|
||||
return isOk;
|
||||
}
|
||||
bool Save(const PuzzleNode* obj, uint32_t count, Serializer& serializer)
|
||||
{
|
||||
bool isOk = true;
|
||||
@@ -41,6 +71,15 @@ namespace Generated
|
||||
}
|
||||
return isOk;
|
||||
}
|
||||
bool Load(PuzzleNode* obj, uint32_t count, Deserializer& serializer)
|
||||
{
|
||||
bool isOk = true;
|
||||
for (uint32_t i = 0; i < count; ++i)
|
||||
{
|
||||
isOk = Load(obj[i].PlacedTypes, 4, serializer) && isOk;
|
||||
}
|
||||
return isOk;
|
||||
}
|
||||
bool Save(const StaticPuzzleCard* obj, uint32_t count, Serializer& serializer)
|
||||
{
|
||||
bool isOk = true;
|
||||
@@ -51,6 +90,16 @@ namespace Generated
|
||||
}
|
||||
return isOk;
|
||||
}
|
||||
bool Load(StaticPuzzleCard* obj, uint32_t count, Deserializer& serializer)
|
||||
{
|
||||
bool isOk = true;
|
||||
for (uint32_t i = 0; i < count; ++i)
|
||||
{
|
||||
isOk = Load(obj[i].Nodes, 4, serializer) && isOk;
|
||||
isOk = Load(&obj[i].ModelHandle, 1, serializer) && isOk;
|
||||
}
|
||||
return isOk;
|
||||
}
|
||||
bool Save(const StaticPuzzleCardHandle* obj, uint32_t count, Serializer& serializer)
|
||||
{
|
||||
bool isOk = true;
|
||||
@@ -60,6 +109,15 @@ namespace Generated
|
||||
}
|
||||
return isOk;
|
||||
}
|
||||
bool Load(StaticPuzzleCardHandle* obj, uint32_t count, Deserializer& serializer)
|
||||
{
|
||||
bool isOk = true;
|
||||
for (uint32_t i = 0; i < count; ++i)
|
||||
{
|
||||
isOk = Load(&obj[i].Idx, 1, serializer) && isOk;
|
||||
}
|
||||
return isOk;
|
||||
}
|
||||
bool Save(const StaticPuzzleData* obj, uint32_t count, Serializer& serializer)
|
||||
{
|
||||
bool isOk = true;
|
||||
@@ -69,6 +127,15 @@ namespace Generated
|
||||
}
|
||||
return isOk;
|
||||
}
|
||||
bool Load(StaticPuzzleData* obj, uint32_t count, Deserializer& serializer)
|
||||
{
|
||||
bool isOk = true;
|
||||
for (uint32_t i = 0; i < count; ++i)
|
||||
{
|
||||
isOk = Load(obj[i].Cards, 64, serializer) && isOk;
|
||||
}
|
||||
return isOk;
|
||||
}
|
||||
bool Save(const PuzzleCardStack* obj, uint32_t count, Serializer& serializer)
|
||||
{
|
||||
bool isOk = true;
|
||||
@@ -80,6 +147,17 @@ namespace Generated
|
||||
}
|
||||
return isOk;
|
||||
}
|
||||
bool Load(PuzzleCardStack* obj, uint32_t count, Deserializer& serializer)
|
||||
{
|
||||
bool isOk = true;
|
||||
for (uint32_t i = 0; i < count; ++i)
|
||||
{
|
||||
isOk = Load(&obj[i].RefCard, 1, serializer) && isOk;
|
||||
isOk = Load(&obj[i].MaxAvailableCount, 1, serializer) && isOk;
|
||||
isOk = Load(&obj[i].UsedCount, 1, serializer) && isOk;
|
||||
}
|
||||
return isOk;
|
||||
}
|
||||
bool Save(const PlacedPuzzleCard* obj, uint32_t count, Serializer& serializer)
|
||||
{
|
||||
bool isOk = true;
|
||||
@@ -92,6 +170,18 @@ namespace Generated
|
||||
}
|
||||
return isOk;
|
||||
}
|
||||
bool Load(PlacedPuzzleCard* obj, uint32_t count, Deserializer& serializer)
|
||||
{
|
||||
bool isOk = true;
|
||||
for (uint32_t i = 0; i < count; ++i)
|
||||
{
|
||||
isOk = Load(&obj[i].RefCard, 1, serializer) && isOk;
|
||||
isOk = Load(&obj[i].Position, 1, serializer) && isOk;
|
||||
isOk = Load(&obj[i].Rotation, 1, serializer) && isOk;
|
||||
isOk = Load(&obj[i].IsLocked, 1, serializer) && isOk;
|
||||
}
|
||||
return isOk;
|
||||
}
|
||||
bool Save(const PuzzleData* obj, uint32_t count, Serializer& serializer)
|
||||
{
|
||||
bool isOk = true;
|
||||
@@ -110,4 +200,22 @@ namespace Generated
|
||||
}
|
||||
return isOk;
|
||||
}
|
||||
bool Load(PuzzleData* obj, uint32_t count, Deserializer& serializer)
|
||||
{
|
||||
bool isOk = true;
|
||||
for (uint32_t i = 0; i < count; ++i)
|
||||
{
|
||||
isOk = Load(&obj[i].WidthTiles, 1, serializer) && isOk;
|
||||
isOk = Load(&obj[i].HeightTiles, 1, serializer) && isOk;
|
||||
isOk = Load(&obj[i].AvailableCardCount, 1, serializer) && isOk;
|
||||
isOk = Load(obj[i].AvailableCards, 16, serializer) && isOk;
|
||||
isOk = Load(&obj[i].PlacedCardCount, 1, serializer) && isOk;
|
||||
isOk = Load(obj[i].PlacedCards, 256, serializer) && isOk;
|
||||
isOk = Load(obj[i].PlacedNodes, 1024, serializer) && isOk;
|
||||
isOk = Load(&obj[i].GoalPositionCount, 1, serializer) && isOk;
|
||||
isOk = Load(obj[i].GoalPositions, 16, serializer) && isOk;
|
||||
isOk = Load(obj[i].PuzzleName, 64, serializer) && isOk;
|
||||
}
|
||||
return isOk;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -94,13 +94,23 @@ namespace Generated
|
||||
char PuzzleName[64] = {};
|
||||
};
|
||||
bool Save(const PuzzleElementType::Enum* obj, uint32_t count, Serializer& serializer);
|
||||
bool Load(PuzzleElementType::Enum* obj, uint32_t count, Deserializer& serializer);
|
||||
bool Save(const PuzPos* obj, uint32_t count, Serializer& serializer);
|
||||
bool Load(PuzPos* obj, uint32_t count, Deserializer& serializer);
|
||||
bool Save(const ElemPos* obj, uint32_t count, Serializer& serializer);
|
||||
bool Load(ElemPos* obj, uint32_t count, Deserializer& serializer);
|
||||
bool Save(const PuzzleNode* obj, uint32_t count, Serializer& serializer);
|
||||
bool Load(PuzzleNode* obj, uint32_t count, Deserializer& serializer);
|
||||
bool Save(const StaticPuzzleCard* obj, uint32_t count, Serializer& serializer);
|
||||
bool Load(StaticPuzzleCard* obj, uint32_t count, Deserializer& serializer);
|
||||
bool Save(const StaticPuzzleCardHandle* obj, uint32_t count, Serializer& serializer);
|
||||
bool Load(StaticPuzzleCardHandle* obj, uint32_t count, Deserializer& serializer);
|
||||
bool Save(const StaticPuzzleData* obj, uint32_t count, Serializer& serializer);
|
||||
bool Load(StaticPuzzleData* obj, uint32_t count, Deserializer& serializer);
|
||||
bool Save(const PuzzleCardStack* obj, uint32_t count, Serializer& serializer);
|
||||
bool Load(PuzzleCardStack* obj, uint32_t count, Deserializer& serializer);
|
||||
bool Save(const PlacedPuzzleCard* obj, uint32_t count, Serializer& serializer);
|
||||
bool Load(PlacedPuzzleCard* obj, uint32_t count, Deserializer& serializer);
|
||||
bool Save(const PuzzleData* obj, uint32_t count, Serializer& serializer);
|
||||
bool Load(PuzzleData* obj, uint32_t count, Deserializer& serializer);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user