let the world renderer hold the simulation by const reference

The renderer documented itself as reading the simulation and never writing it,
while holding a mutable reference to it -- because hasAll() forced that on
every caller. With hasAll const the claim and the type can agree, and the const
overloads of getAdmin, forEach and get cover everything the renderer does.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JcReq7hVk4KUPhTDKWAG7K
This commit is contained in:
2026-08-08 19:42:24 +02:00
parent 256c4b5492
commit 352beda47c
2 changed files with 4 additions and 5 deletions

View File

@@ -109,7 +109,7 @@ QColor statusLightFill(ProductionStatus status, const StatusLightVisuals& sl)
} // namespace
WorldRenderer::WorldRenderer(Simulation& sim, const VisualsConfig& visuals,
WorldRenderer::WorldRenderer(const Simulation& sim, const VisualsConfig& visuals,
ItemIconCache* itemIcons, const std::string& configDir)
: m_sim(sim)
, m_visuals(visuals)

View File

@@ -77,7 +77,7 @@ public:
// `itemIcons` is the window-wide per-item icon cache (REQ-UI-ITEM-ICON); not
// owned, must outlive this renderer. `configDir` is used once, to load the
// per-building world icons.
WorldRenderer(Simulation& sim, const VisualsConfig& visuals,
WorldRenderer(const Simulation& sim, const VisualsConfig& visuals,
ItemIconCache* itemIcons, const std::string& configDir);
~WorldRenderer();
@@ -141,9 +141,8 @@ private:
std::optional<QVector2D> entityPosition(entt::entity entity) const;
// Non-const only because EntityAdmin's component accessors are; the renderer
// reads the simulation and never writes it.
Simulation& m_sim;
// The renderer reads the simulation and never writes it.
const Simulation& m_sim;
const VisualsConfig& m_visuals;
// Per-item icon cache (REQ-UI-ITEM-ICON), shared window-wide and owned by