#pragma once struct GameConfig; class BuildingIconCache; class ItemIconCache; class Simulation; // Everything an item production tooltip reads (REQ-UI-ITEM-TOOLTIP): the simulation it // asks which recipes the player has unlocked, the immutable config holding the recipes // themselves, and the two icon caches its recipe lines are drawn from. // // Its own bundle rather than the selection panel's (SelectionContext), because an item is // named all over the UI -- the header bar, the dialogs, the panel -- and every one of // those places has to be able to explain it (REQ-UI-ITEM-VALUE-TOOLTIP). The panel's // context carries visuals and the debug flag besides, which no tooltip reads. // // Nothing here is owned: a view onto objects living in MainWindow, which it must not // outlive. struct ItemTooltipContext { // Const because a tooltip only ever reads: what produces an item is a question, not // a command. const Simulation* sim = nullptr; const GameConfig* config = nullptr; ItemIconCache* itemIcons = nullptr; BuildingIconCache* buildingIcons = nullptr; };