Skip to content

Commit 2d6536a

Browse files
committed
Also apply brightness mods to dynamic geometry
1 parent 88b1f3b commit 2d6536a

File tree

3 files changed

+51
-58
lines changed

3 files changed

+51
-58
lines changed

src/engine/map_renderer.cpp

Lines changed: 4 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -287,39 +287,17 @@ void MapRenderer::switchBackdrops()
287287

288288
void MapRenderer::renderBackground(
289289
const base::Vec2& sectionStart,
290-
const base::Size& sectionSize,
291-
const float backColorMod) const
290+
const base::Size& sectionSize) const
292291
{
293-
if (backColorMod < 1.0f)
294-
{
295-
// const auto saved = renderer::saveState(mpRenderer);
296-
mpRenderer->setColorModulation(base::Color{
297-
base::roundTo<uint8_t, float>(255 * backColorMod),
298-
base::roundTo<uint8_t, float>(255 * backColorMod),
299-
base::roundTo<uint8_t, float>(255 * backColorMod),
300-
255});
301-
}
302292
renderMapTiles(sectionStart, sectionSize, DrawMode::Background);
303-
mpRenderer->setColorModulation(base::Color{255, 255, 255, 255});
304293
}
305294

306295

307296
void MapRenderer::renderForeground(
308297
const base::Vec2& sectionStart,
309-
const base::Size& sectionSize,
310-
const float foreColorMod) const
298+
const base::Size& sectionSize) const
311299
{
312-
if (foreColorMod < 1.0f)
313-
{
314-
// const auto saved = renderer::saveState(mpRenderer);
315-
mpRenderer->setColorModulation(base::Color{
316-
base::roundTo<uint8_t, float>(255 * foreColorMod),
317-
base::roundTo<uint8_t, float>(255 * foreColorMod),
318-
base::roundTo<uint8_t, float>(255 * foreColorMod),
319-
255});
320-
}
321300
renderMapTiles(sectionStart, sectionSize, DrawMode::Foreground);
322-
mpRenderer->setColorModulation(base::Color{255, 255, 255, 255});
323301
}
324302

325303

@@ -419,24 +397,14 @@ renderer::TexCoords MapRenderer::calculateBackdropTexCoords(
419397

420398
void MapRenderer::renderBackdrop(
421399
const base::Vec2f& cameraPosition,
422-
const base::Size& viewportSize,
423-
const float dropColorMod) const
400+
const base::Size& viewportSize) const
424401
{
425-
if (dropColorMod < 1.0f)
426-
{
427-
// const auto saved = renderer::saveState(mpRenderer);
428-
mpRenderer->setColorModulation(base::Color{
429-
base::roundTo<uint8_t, float>(255 * dropColorMod),
430-
base::roundTo<uint8_t, float>(255 * dropColorMod),
431-
base::roundTo<uint8_t, float>(255 * dropColorMod),
432-
255});
433-
}
402+
const auto saved = renderer::saveState(mpRenderer);
434403
mpRenderer->setTextureRepeatEnabled(true);
435404
mpRenderer->drawTexture(
436405
mBackdropTexture.data(),
437406
calculateBackdropTexCoords(cameraPosition, viewportSize),
438407
{{}, data::tilesToPixels(viewportSize)});
439-
mpRenderer->setColorModulation(base::Color{255, 255, 255, 255});
440408
}
441409

442410

src/engine/map_renderer.hpp

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -108,16 +108,13 @@ class MapRenderer
108108

109109
void renderBackdrop(
110110
const base::Vec2f& cameraPosition,
111-
const base::Size& viewportSize,
112-
const float dropColorMod) const;
111+
const base::Size& viewportSize) const;
113112
void renderBackground(
114113
const base::Vec2& sectionStart,
115-
const base::Size& sectionSize,
116-
const float backColorMod) const;
114+
const base::Size& sectionSize) const;
117115
void renderForeground(
118116
const base::Vec2& sectionStart,
119-
const base::Size& sectionSize,
120-
const float foreColorMod) const;
117+
const base::Size& sectionSize) const;
121118

122119
void updateAnimatedMapTiles();
123120
void updateBackdropAutoScrolling(engine::TimeDelta dt);
@@ -144,7 +141,7 @@ class MapRenderer
144141
void renderMapTiles(
145142
const base::Vec2& sectionStart,
146143
const base::Size& sectionSize,
147-
const DrawMode drawMode) const;
144+
DrawMode drawMode) const;
148145
data::map::TileIndex animatedTileIndex(data::map::TileIndex) const;
149146

150147
private:

src/game_logic/game_world.cpp

Lines changed: 43 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -252,6 +252,27 @@ base::Size clampedSectionSize(
252252
std::min(sectionSize.height, map.height() - sectionStart.y)};
253253
}
254254

255+
256+
base::ScopeGuard
257+
applyBrightnessOption(renderer::Renderer* pRenderer, float brightness)
258+
{
259+
if (brightness < 1.0f)
260+
{
261+
auto guard = renderer::saveState(pRenderer);
262+
pRenderer->setColorModulation(base::Color{
263+
base::roundTo<uint8_t>(255.0f * brightness),
264+
base::roundTo<uint8_t>(255.0f * brightness),
265+
base::roundTo<uint8_t>(255.0f * brightness),
266+
255});
267+
return guard;
268+
}
269+
else
270+
{
271+
return base::ScopeGuard{[]() {
272+
}};
273+
}
274+
}
275+
255276
} // namespace
256277

257278

@@ -990,10 +1011,10 @@ void GameWorld::drawMapAndSprites(
9901011
}
9911012
else
9921013
{
1014+
const auto saved =
1015+
applyBrightnessOption(mpRenderer, mpOptions->mDropTileBrightness);
9931016
state.mMapRenderer.renderBackdrop(
994-
params.mInterpolatedCameraPosition,
995-
params.mViewportSize,
996-
mpOptions->mDropTileBrightness);
1017+
params.mInterpolatedCameraPosition, params.mViewportSize);
9971018
}
9981019
};
9991020

@@ -1010,25 +1031,32 @@ void GameWorld::drawMapAndSprites(
10101031
};
10111032

10121033
auto renderBackgroundLayers = [&]() {
1013-
state.mMapRenderer.renderBackground(
1014-
params.mRenderStartPosition,
1015-
params.mViewportSize,
1016-
mpOptions->mBackTileBrightness);
1017-
state.mDynamicGeometrySystem.renderDynamicBackgroundSections(
1018-
params.mRenderStartPosition, params.mViewportSize, interpolationFactor);
1034+
{
1035+
const auto saved =
1036+
applyBrightnessOption(mpRenderer, mpOptions->mBackTileBrightness);
1037+
state.mMapRenderer.renderBackground(
1038+
params.mRenderStartPosition, params.mViewportSize);
1039+
state.mDynamicGeometrySystem.renderDynamicBackgroundSections(
1040+
params.mRenderStartPosition, params.mViewportSize, interpolationFactor);
1041+
}
1042+
10191043
state.mSpriteRenderingSystem.renderBackgroundSprites(
10201044
mSpecialEffects, mpOptions->mBackSpriteBrightness);
10211045
state.mSpriteRenderingSystem.renderRegularSprites(
10221046
mSpecialEffects, mpOptions->mRegSpriteBrightness);
10231047
};
10241048

10251049
auto renderForegroundLayers = [&]() {
1026-
state.mMapRenderer.renderForeground(
1027-
params.mRenderStartPosition,
1028-
params.mViewportSize,
1029-
mpOptions->mForeTileBrightness);
1030-
state.mDynamicGeometrySystem.renderDynamicForegroundSections(
1031-
params.mRenderStartPosition, params.mViewportSize, interpolationFactor);
1050+
{
1051+
const auto saved =
1052+
applyBrightnessOption(mpRenderer, mpOptions->mForeTileBrightness);
1053+
1054+
state.mMapRenderer.renderForeground(
1055+
params.mRenderStartPosition, params.mViewportSize);
1056+
state.mDynamicGeometrySystem.renderDynamicForegroundSections(
1057+
params.mRenderStartPosition, params.mViewportSize, interpolationFactor);
1058+
}
1059+
10321060
state.mSpriteRenderingSystem.renderForegroundSprites(
10331061
mSpecialEffects, mpOptions->mForeSpriteBrightness);
10341062
renderTileDebris();

0 commit comments

Comments
 (0)