[jasper/world/studio] Make WorldEditor remember animate option
This commit is contained in:
parent
bddb08c201
commit
8a67657473
@ -113,6 +113,27 @@ oxModelBegin(WorldDoc)
|
||||
oxModelField(tiles)
|
||||
oxModelEnd()
|
||||
|
||||
[[nodiscard]]
|
||||
constexpr bool valid(WorldDoc const&doc) noexcept {
|
||||
for (auto &lyr : doc.tiles) {
|
||||
if (lyr.size() == static_cast<size_t>(doc.columns)) { return false; }
|
||||
for (auto &row : lyr) {
|
||||
if (row.size() == static_cast<size_t>(doc.rows)) { return false; }
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
constexpr ox::Error repair(WorldDoc &doc) noexcept {
|
||||
for (auto &lyr : doc.tiles) {
|
||||
lyr.resize(static_cast<size_t>(doc.columns));
|
||||
for (auto &row : lyr) {
|
||||
row.resize(static_cast<size_t>(doc.rows));
|
||||
}
|
||||
}
|
||||
return {};
|
||||
}
|
||||
|
||||
[[nodiscard]]
|
||||
ObjectSetEntry const*objSetEntry(WorldDoc const&doc, size_t id) noexcept;
|
||||
|
||||
|
@ -24,6 +24,16 @@ namespace ig = studio::ig;
|
||||
|
||||
constexpr auto SqrBtnSize = ImVec2(ig::BtnSz.y, ig::BtnSz.y);
|
||||
|
||||
struct WorldEditorConfig {
|
||||
static constexpr auto TypeName = "net.drinkingtea.jasper.world.studio.WorldEditorConfig";
|
||||
static constexpr auto TypeVersion = 1;
|
||||
bool animateBg{};
|
||||
};
|
||||
|
||||
oxModelBegin(WorldEditorConfig)
|
||||
oxModelField(animateBg);
|
||||
oxModelEnd()
|
||||
|
||||
|
||||
struct WorldTileDragDrop {
|
||||
static constexpr auto TypeName = "net.drinkingtea.jasper.world.studio.WorldTileDragDrop";
|
||||
@ -39,12 +49,7 @@ oxModelEnd()
|
||||
|
||||
|
||||
static WorldDoc makeValid(WorldDoc doc) noexcept {
|
||||
for (auto &lyr : doc.tiles) {
|
||||
lyr.resize(static_cast<size_t>(doc.columns));
|
||||
for (auto &row : lyr) {
|
||||
row.resize(static_cast<size_t>(doc.rows));
|
||||
}
|
||||
}
|
||||
std::ignore = repair(doc);
|
||||
return doc;
|
||||
}
|
||||
|
||||
@ -84,6 +89,10 @@ WorldEditorImGui::WorldEditorImGui(studio::StudioContext &sctx, ox::StringView p
|
||||
m_objSetPicker.filePicked.connect(this, &WorldEditorImGui::addObjSet);
|
||||
m_sctx.project->fileUpdated.connect(this, &WorldEditorImGui::handleDepUpdate);
|
||||
studio::Editor::undoStack()->changeTriggered.connect(this, &WorldEditorImGui::undoStackChanged);
|
||||
studio::openConfig<WorldEditorConfig>(
|
||||
keelCtx(m_sctx), itemPath(), [this](WorldEditorConfig const&config) {
|
||||
m_view.setAnimate(config.animateBg);
|
||||
});
|
||||
}
|
||||
|
||||
void WorldEditorImGui::draw(studio::StudioContext&) noexcept {
|
||||
@ -263,6 +272,11 @@ void WorldEditorImGui::drawMenu() noexcept {
|
||||
oxLogError(m_view.setupWorld());
|
||||
}
|
||||
m_view.setAnimate(animate);
|
||||
studio::editConfig<WorldEditorConfig>(
|
||||
keelCtx(m_sctx), itemPath(),
|
||||
[animate](WorldEditorConfig &config) {
|
||||
config.animateBg = animate;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user