save works!
This commit is contained in:
@@ -1,2 +1,56 @@
|
||||
#pragma once
|
||||
#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
|
||||
{
|
||||
bx::Error Err;
|
||||
bx::FilePath Path;
|
||||
bx::FileWriter Writer;
|
||||
|
||||
bool Init(const bx::FilePath& path)
|
||||
{
|
||||
Path = path;
|
||||
Writer.open(path, false, &Err);
|
||||
return Err.isOk();
|
||||
}
|
||||
|
||||
bool Write(const void* data, uint32_t size)
|
||||
{
|
||||
Writer.write(data, size, &Err);
|
||||
return Err.isOk();
|
||||
}
|
||||
|
||||
void Finish()
|
||||
{
|
||||
Writer.close();
|
||||
}
|
||||
};
|
||||
|
||||
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)
|
||||
|
||||
} // namespace Generated
|
||||
|
||||
113
src/gen/Generated.cpp
Normal file
113
src/gen/Generated.cpp
Normal file
@@ -0,0 +1,113 @@
|
||||
#include "Generated.h"
|
||||
|
||||
namespace Generated
|
||||
{
|
||||
bool Save(const PuzzleElementType::Enum* obj, uint32_t count, Serializer& serializer)
|
||||
{
|
||||
bool isOk = true;
|
||||
for (uint32_t i = 0; i < count; ++i)
|
||||
{
|
||||
auto val = (int32_t)obj[i];
|
||||
isOk = Save(&val, 1, serializer) && isOk;
|
||||
}
|
||||
return isOk;
|
||||
}
|
||||
bool Save(const PuzPos* obj, uint32_t count, Serializer& serializer)
|
||||
{
|
||||
bool isOk = true;
|
||||
for (uint32_t i = 0; i < count; ++i)
|
||||
{
|
||||
isOk = Save(&obj[i].X, 1, serializer) && isOk;
|
||||
isOk = Save(&obj[i].Y, 1, serializer) && isOk;
|
||||
}
|
||||
return isOk;
|
||||
}
|
||||
bool Save(const ElemPos* obj, uint32_t count, Serializer& serializer)
|
||||
{
|
||||
bool isOk = true;
|
||||
for (uint32_t i = 0; i < count; ++i)
|
||||
{
|
||||
isOk = Save(&obj[i].Position, 1, serializer) && isOk;
|
||||
isOk = Save(&obj[i].ElemIdx, 1, serializer) && isOk;
|
||||
}
|
||||
return isOk;
|
||||
}
|
||||
bool Save(const PuzzleNode* obj, uint32_t count, Serializer& serializer)
|
||||
{
|
||||
bool isOk = true;
|
||||
for (uint32_t i = 0; i < count; ++i)
|
||||
{
|
||||
isOk = Save(obj[i].PlacedTypes, 4, serializer) && isOk;
|
||||
}
|
||||
return isOk;
|
||||
}
|
||||
bool Save(const StaticPuzzleCard* obj, uint32_t count, Serializer& serializer)
|
||||
{
|
||||
bool isOk = true;
|
||||
for (uint32_t i = 0; i < count; ++i)
|
||||
{
|
||||
isOk = Save(obj[i].Nodes, 4, serializer) && isOk;
|
||||
isOk = Save(&obj[i].ModelHandle, 1, serializer) && isOk;
|
||||
}
|
||||
return isOk;
|
||||
}
|
||||
bool Save(const StaticPuzzleCardHandle* obj, uint32_t count, Serializer& serializer)
|
||||
{
|
||||
bool isOk = true;
|
||||
for (uint32_t i = 0; i < count; ++i)
|
||||
{
|
||||
isOk = Save(&obj[i].Idx, 1, serializer) && isOk;
|
||||
}
|
||||
return isOk;
|
||||
}
|
||||
bool Save(const StaticPuzzleData* obj, uint32_t count, Serializer& serializer)
|
||||
{
|
||||
bool isOk = true;
|
||||
for (uint32_t i = 0; i < count; ++i)
|
||||
{
|
||||
isOk = Save(obj[i].Cards, 64, serializer) && isOk;
|
||||
}
|
||||
return isOk;
|
||||
}
|
||||
bool Save(const PuzzleCardStack* obj, uint32_t count, Serializer& serializer)
|
||||
{
|
||||
bool isOk = true;
|
||||
for (uint32_t i = 0; i < count; ++i)
|
||||
{
|
||||
isOk = Save(&obj[i].RefCard, 1, serializer) && isOk;
|
||||
isOk = Save(&obj[i].MaxAvailableCount, 1, serializer) && isOk;
|
||||
isOk = Save(&obj[i].UsedCount, 1, serializer) && isOk;
|
||||
}
|
||||
return isOk;
|
||||
}
|
||||
bool Save(const PlacedPuzzleCard* obj, uint32_t count, Serializer& serializer)
|
||||
{
|
||||
bool isOk = true;
|
||||
for (uint32_t i = 0; i < count; ++i)
|
||||
{
|
||||
isOk = Save(&obj[i].RefCard, 1, serializer) && isOk;
|
||||
isOk = Save(&obj[i].Position, 1, serializer) && isOk;
|
||||
isOk = Save(&obj[i].Rotation, 1, serializer) && isOk;
|
||||
isOk = Save(&obj[i].IsLocked, 1, serializer) && isOk;
|
||||
}
|
||||
return isOk;
|
||||
}
|
||||
bool Save(const PuzzleData* obj, uint32_t count, Serializer& serializer)
|
||||
{
|
||||
bool isOk = true;
|
||||
for (uint32_t i = 0; i < count; ++i)
|
||||
{
|
||||
isOk = Save(&obj[i].WidthTiles, 1, serializer) && isOk;
|
||||
isOk = Save(&obj[i].HeightTiles, 1, serializer) && isOk;
|
||||
isOk = Save(&obj[i].AvailableCardCount, 1, serializer) && isOk;
|
||||
isOk = Save(obj[i].AvailableCards, 16, serializer) && isOk;
|
||||
isOk = Save(&obj[i].PlacedCardCount, 1, serializer) && isOk;
|
||||
isOk = Save(obj[i].PlacedCards, 256, serializer) && isOk;
|
||||
isOk = Save(obj[i].PlacedNodes, 1024, serializer) && isOk;
|
||||
isOk = Save(&obj[i].GoalPositionCount, 1, serializer) && isOk;
|
||||
isOk = Save(obj[i].GoalPositions, 16, serializer) && isOk;
|
||||
isOk = Save(obj[i].PuzzleName, 64, serializer) && isOk;
|
||||
}
|
||||
return isOk;
|
||||
}
|
||||
}
|
||||
@@ -6,7 +6,7 @@ namespace Generated
|
||||
struct PuzzleElementType
|
||||
{
|
||||
static constexpr int32_t EntryCount = 8;
|
||||
enum class Enum : int32_t
|
||||
enum Enum : int32_t
|
||||
{
|
||||
None,
|
||||
WaterIn,
|
||||
@@ -52,7 +52,7 @@ namespace Generated
|
||||
};
|
||||
struct PuzzleNode
|
||||
{
|
||||
PuzzleElementType PlacedTypes[4] = {};
|
||||
PuzzleElementType::Enum PlacedTypes[4] = {};
|
||||
};
|
||||
struct StaticPuzzleCard
|
||||
{
|
||||
@@ -91,5 +91,16 @@ namespace Generated
|
||||
PuzzleNode PlacedNodes[1024] = {};
|
||||
uint32_t GoalPositionCount = {};
|
||||
ElemPos GoalPositions[16] = {};
|
||||
char PuzzleName[64] = {};
|
||||
};
|
||||
bool Save(const PuzzleElementType::Enum* obj, uint32_t count, Serializer& serializer);
|
||||
bool Save(const PuzPos* obj, uint32_t count, Serializer& serializer);
|
||||
bool Save(const ElemPos* obj, uint32_t count, Serializer& serializer);
|
||||
bool Save(const PuzzleNode* obj, uint32_t count, Serializer& serializer);
|
||||
bool Save(const StaticPuzzleCard* obj, uint32_t count, Serializer& serializer);
|
||||
bool Save(const StaticPuzzleCardHandle* obj, uint32_t count, Serializer& serializer);
|
||||
bool Save(const StaticPuzzleData* obj, uint32_t count, Serializer& serializer);
|
||||
bool Save(const PuzzleCardStack* obj, uint32_t count, Serializer& serializer);
|
||||
bool Save(const PlacedPuzzleCard* obj, uint32_t count, Serializer& serializer);
|
||||
bool Save(const PuzzleData* obj, uint32_t count, Serializer& serializer);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user