#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;
};
