[jasper/world] Move obj states initialization to initial loading of resources
All checks were successful
Build / build (push) Successful in 3m54s

This commit is contained in:
Gary Talent 2025-01-13 01:43:25 -06:00
parent 2823db63ac
commit c8217e5ab0

View File

@ -23,6 +23,18 @@ ox::Error World::setupDisplay() noexcept {
if (m_worldStatic.objTileRefSets.empty()) {
return ox::Error{1, "WorldStatic must have at least one ref set"};
}
m_currentTicks = ticksMs(turbineCtx(m_nctx));
m_objStates.clear();
for (uint16_t objIdx{}; auto &obj : m_worldStatic.objTileRefSets) {
if (isUpdatingObj(obj)) {
m_objStates.emplace_back(ObjState{
.objIdx = objIdx,
.frame = 0,
.nextUpdateTime = m_currentTicks + obj.intervalMs,
});
}
++objIdx;
}
auto &kctx = keelCtx(m_nctx);
if (m_tilesheets.empty()) {
for (auto const&tsAddr : m_worldStatic.tilesheets) {
@ -62,7 +74,6 @@ ox::Result<int> World::update() noexcept {
}
void World::setupTiles() noexcept {
m_objStates.clear();
m_currentTicks = ticksMs(turbineCtx(m_nctx));
ncore::setBgStatus(m_nctx, 0); // disable all backgrounds
for (auto layerNo = 0u; auto const&layer : m_worldStatic.map) {
@ -95,13 +106,6 @@ void World::setupTile(
.tileIdx = static_cast<uint_t>(obj.cbbIdx + 3),
.palBank = obj.palBank,
});
if (isUpdatingObj(obj)) {
m_objStates.emplace_back(ObjState{
.objIdx = t.objIdxRefSet,
.frame = 0,
.nextUpdateTime = m_currentTicks + obj.intervalMs,
});
}
}
ox::Result<turbine::TimeMs> World::updateObj(ObjState &state) noexcept {