#pragma once namespace Components { class UIFeeder : public Component { public: typedef Utils::Slot GetItemCount_t; typedef Utils::Slot GetItemText_t; typedef Utils::Slot Select_t; struct Callbacks { GetItemCount_t getItemCount; GetItemText_t getItemText; Select_t select; }; UIFeeder(); ~UIFeeder(); static void Add(float feeder, GetItemCount_t itemCountCb, GetItemText_t itemTextCb, Select_t selectCb); private: struct Container { float feeder; int index; int column; }; static Container Current; static void GetItemCountStub(); static unsigned int GetItemCount(); static void GetItemTextStub(); static const char* GetItemText(); static void SetItemSelectionStub(); static bool SetItemSelection(); static bool CheckFeeder(); static int CheckSelection(int feeder); static void CheckSelectionStub(); static void MouseEnterStub(); static void MouseSelectStub(); static void HandleKeyStub(); static void PlaySoundStub(); static void Select(float feeder, unsigned int index); static std::unordered_map Feeders; static unsigned int GetMapCount(); static const char* GetMapText(unsigned int index, int column); static void SelectMap(unsigned int index); static void ApplyMap([[maybe_unused]] const UIScript::Token& token, [[maybe_unused]] const Game::uiInfo_s* info); static void ApplyInitialMap([[maybe_unused]] const UIScript::Token& token, [[maybe_unused]] const Game::uiInfo_s* info); }; }