[nostalgia/scene] Cleanup
This commit is contained in:
parent
de45e7a075
commit
bac3eed958
@ -17,6 +17,9 @@ class Scene {
|
|||||||
|
|
||||||
ox::Error setupDisplay(core::Context *ctx) const noexcept;
|
ox::Error setupDisplay(core::Context *ctx) const noexcept;
|
||||||
|
|
||||||
|
private:
|
||||||
|
void setupLayer(core::Context*, const ox::Vector<uint16_t> &layer, unsigned layerNo) const noexcept;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -22,26 +22,33 @@ ox::Error Scene::setupDisplay(core::Context *ctx) const noexcept {
|
|||||||
// disable all backgrounds
|
// disable all backgrounds
|
||||||
core::setBgStatus(ctx, 0);
|
core::setBgStatus(ctx, 0);
|
||||||
for (auto layerNo = 0u; const auto &layer : m_sceneStatic.tileMapIdx) {
|
for (auto layerNo = 0u; const auto &layer : m_sceneStatic.tileMapIdx) {
|
||||||
core::setBgStatus(ctx, layerNo, true);
|
setupLayer(ctx, layer, layerNo);
|
||||||
core::setBgCbb(ctx, layerNo, 0);
|
|
||||||
auto x = 0;
|
|
||||||
auto y = 0;
|
|
||||||
auto width = m_sceneStatic.rows[layerNo];
|
|
||||||
for (const auto &tile : layer) {
|
|
||||||
auto tile8 = static_cast<uint8_t >(tile);
|
|
||||||
core::setTile(ctx, layerNo, x, y, tile8);
|
|
||||||
core::setTile(ctx, layerNo, x + 1, y, tile8 + 1);
|
|
||||||
core::setTile(ctx, layerNo, x, y + 1, tile8 + 2);
|
|
||||||
core::setTile(ctx, layerNo, x + 1, y + 1, tile8 + 3);
|
|
||||||
x += 2;
|
|
||||||
if (x >= width * 2) {
|
|
||||||
x = 0;
|
|
||||||
y += 2;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
++layerNo;
|
++layerNo;
|
||||||
}
|
}
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Scene::setupLayer(
|
||||||
|
core::Context *ctx,
|
||||||
|
const ox::Vector<uint16_t> &layer,
|
||||||
|
unsigned layerNo) const noexcept {
|
||||||
|
core::setBgStatus(ctx, layerNo, true);
|
||||||
|
core::setBgCbb(ctx, layerNo, 0);
|
||||||
|
auto x = 0;
|
||||||
|
auto y = 0;
|
||||||
|
const auto width = m_sceneStatic.rows[layerNo];
|
||||||
|
for (const auto &tile : layer) {
|
||||||
|
const auto tile8 = static_cast<uint8_t>(tile);
|
||||||
|
core::setTile(ctx, layerNo, x, y, tile8);
|
||||||
|
core::setTile(ctx, layerNo, x + 1, y, tile8 + 1);
|
||||||
|
core::setTile(ctx, layerNo, x, y + 1, tile8 + 2);
|
||||||
|
core::setTile(ctx, layerNo, x + 1, y + 1, tile8 + 3);
|
||||||
|
x += 2;
|
||||||
|
if (x >= width * 2) {
|
||||||
|
x = 0;
|
||||||
|
y += 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user