Files
Logic0/Logic0/serialization.h
T
2026-09-30 19:55:25 -05:00

45 lines
1.0 KiB
C++

#pragma once
#include "render_context.hpp"
#include "element.h"
#include "types.h"
#include "level.h"
#include "stage.h"
#include "placelet.h"
void serializeLevel(Logic0_RenderContext::RenderCtx& ctx) {
std::list<SerializableElement> savedElements;
for (Element* elem : *ctx.elements) {
SerializableElement elemS{
elem->type,
elem->x,
elem->y,
0
};
savedElements.push_back(elemS);
}
Level level{
savedElements,
"Xtimhedi"
};
LevelSystem::SaveLevel("level0.json", level);
}
void deserializeLevel(Logic0_RenderContext::RenderCtx& ctx, Level level) {
resetGameState(ctx);
for (SerializableElement elem : level.savedElements) {
switch (elem.type) {
case TYPE_WALL:
selectedType = elem.type;
placePlacelet(ctx, { elem.x, elem.y });
break;
case TYPE_PLAYER_GOAL:
selectedType = elem.type;
placePlacelet(ctx, { elem.x, elem.y });
break;
}
}
}