Skip to content

Commit

Permalink
Also apply brightness mods to dynamic geometry
Browse files Browse the repository at this point in the history
  • Loading branch information
lethal-guitar committed Oct 14, 2022
1 parent 88b1f3b commit 2d6536a
Show file tree
Hide file tree
Showing 3 changed files with 51 additions and 58 deletions.
40 changes: 4 additions & 36 deletions src/engine/map_renderer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -287,39 +287,17 @@ void MapRenderer::switchBackdrops()

void MapRenderer::renderBackground(
const base::Vec2& sectionStart,
const base::Size& sectionSize,
const float backColorMod) const
const base::Size& sectionSize) const
{
if (backColorMod < 1.0f)
{
// const auto saved = renderer::saveState(mpRenderer);
mpRenderer->setColorModulation(base::Color{
base::roundTo<uint8_t, float>(255 * backColorMod),
base::roundTo<uint8_t, float>(255 * backColorMod),
base::roundTo<uint8_t, float>(255 * backColorMod),
255});
}
renderMapTiles(sectionStart, sectionSize, DrawMode::Background);
mpRenderer->setColorModulation(base::Color{255, 255, 255, 255});
}


void MapRenderer::renderForeground(
const base::Vec2& sectionStart,
const base::Size& sectionSize,
const float foreColorMod) const
const base::Size& sectionSize) const
{
if (foreColorMod < 1.0f)
{
// const auto saved = renderer::saveState(mpRenderer);
mpRenderer->setColorModulation(base::Color{
base::roundTo<uint8_t, float>(255 * foreColorMod),
base::roundTo<uint8_t, float>(255 * foreColorMod),
base::roundTo<uint8_t, float>(255 * foreColorMod),
255});
}
renderMapTiles(sectionStart, sectionSize, DrawMode::Foreground);
mpRenderer->setColorModulation(base::Color{255, 255, 255, 255});
}


Expand Down Expand Up @@ -419,24 +397,14 @@ renderer::TexCoords MapRenderer::calculateBackdropTexCoords(

void MapRenderer::renderBackdrop(
const base::Vec2f& cameraPosition,
const base::Size& viewportSize,
const float dropColorMod) const
const base::Size& viewportSize) const
{
if (dropColorMod < 1.0f)
{
// const auto saved = renderer::saveState(mpRenderer);
mpRenderer->setColorModulation(base::Color{
base::roundTo<uint8_t, float>(255 * dropColorMod),
base::roundTo<uint8_t, float>(255 * dropColorMod),
base::roundTo<uint8_t, float>(255 * dropColorMod),
255});
}
const auto saved = renderer::saveState(mpRenderer);
mpRenderer->setTextureRepeatEnabled(true);
mpRenderer->drawTexture(
mBackdropTexture.data(),
calculateBackdropTexCoords(cameraPosition, viewportSize),
{{}, data::tilesToPixels(viewportSize)});
mpRenderer->setColorModulation(base::Color{255, 255, 255, 255});
}


Expand Down
11 changes: 4 additions & 7 deletions src/engine/map_renderer.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -108,16 +108,13 @@ class MapRenderer

void renderBackdrop(
const base::Vec2f& cameraPosition,
const base::Size& viewportSize,
const float dropColorMod) const;
const base::Size& viewportSize) const;
void renderBackground(
const base::Vec2& sectionStart,
const base::Size& sectionSize,
const float backColorMod) const;
const base::Size& sectionSize) const;
void renderForeground(
const base::Vec2& sectionStart,
const base::Size& sectionSize,
const float foreColorMod) const;
const base::Size& sectionSize) const;

void updateAnimatedMapTiles();
void updateBackdropAutoScrolling(engine::TimeDelta dt);
Expand All @@ -144,7 +141,7 @@ class MapRenderer
void renderMapTiles(
const base::Vec2& sectionStart,
const base::Size& sectionSize,
const DrawMode drawMode) const;
DrawMode drawMode) const;
data::map::TileIndex animatedTileIndex(data::map::TileIndex) const;

private:
Expand Down
58 changes: 43 additions & 15 deletions src/game_logic/game_world.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -252,6 +252,27 @@ base::Size clampedSectionSize(
std::min(sectionSize.height, map.height() - sectionStart.y)};
}


base::ScopeGuard
applyBrightnessOption(renderer::Renderer* pRenderer, float brightness)
{
if (brightness < 1.0f)
{
auto guard = renderer::saveState(pRenderer);
pRenderer->setColorModulation(base::Color{
base::roundTo<uint8_t>(255.0f * brightness),
base::roundTo<uint8_t>(255.0f * brightness),
base::roundTo<uint8_t>(255.0f * brightness),
255});
return guard;
}
else
{
return base::ScopeGuard{[]() {
}};
}
}

} // namespace


Expand Down Expand Up @@ -990,10 +1011,10 @@ void GameWorld::drawMapAndSprites(
}
else
{
const auto saved =
applyBrightnessOption(mpRenderer, mpOptions->mDropTileBrightness);
state.mMapRenderer.renderBackdrop(
params.mInterpolatedCameraPosition,
params.mViewportSize,
mpOptions->mDropTileBrightness);
params.mInterpolatedCameraPosition, params.mViewportSize);
}
};

Expand All @@ -1010,25 +1031,32 @@ void GameWorld::drawMapAndSprites(
};

auto renderBackgroundLayers = [&]() {
state.mMapRenderer.renderBackground(
params.mRenderStartPosition,
params.mViewportSize,
mpOptions->mBackTileBrightness);
state.mDynamicGeometrySystem.renderDynamicBackgroundSections(
params.mRenderStartPosition, params.mViewportSize, interpolationFactor);
{
const auto saved =
applyBrightnessOption(mpRenderer, mpOptions->mBackTileBrightness);
state.mMapRenderer.renderBackground(
params.mRenderStartPosition, params.mViewportSize);
state.mDynamicGeometrySystem.renderDynamicBackgroundSections(
params.mRenderStartPosition, params.mViewportSize, interpolationFactor);
}

state.mSpriteRenderingSystem.renderBackgroundSprites(
mSpecialEffects, mpOptions->mBackSpriteBrightness);
state.mSpriteRenderingSystem.renderRegularSprites(
mSpecialEffects, mpOptions->mRegSpriteBrightness);
};

auto renderForegroundLayers = [&]() {
state.mMapRenderer.renderForeground(
params.mRenderStartPosition,
params.mViewportSize,
mpOptions->mForeTileBrightness);
state.mDynamicGeometrySystem.renderDynamicForegroundSections(
params.mRenderStartPosition, params.mViewportSize, interpolationFactor);
{
const auto saved =
applyBrightnessOption(mpRenderer, mpOptions->mForeTileBrightness);

state.mMapRenderer.renderForeground(
params.mRenderStartPosition, params.mViewportSize);
state.mDynamicGeometrySystem.renderDynamicForegroundSections(
params.mRenderStartPosition, params.mViewportSize, interpolationFactor);
}

state.mSpriteRenderingSystem.renderForegroundSprites(
mSpecialEffects, mpOptions->mForeSpriteBrightness);
renderTileDebris();
Expand Down

0 comments on commit 2d6536a

Please sign in to comment.