45 lines
1.0 KiB
C++
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;
|
|
}
|
|
|
|
|
|
}
|
|
} |