#pragma once #include "CategoryRenderer.h" #include "ConfigDefines.h" #include "ConfigDisplayItem.h" #include "plugin/PluginLoadWrapper.h" #include "utils/input/Input.h" #include #include #include #include #include class ConfigRenderer { public: explicit ConfigRenderer(std::vector &&vec); ~ConfigRenderer(); ConfigSubState Update(Input &input, const WUPSConfigSimplePadData &simpleInputData, const WUPSConfigComplexPadData &complexInputData); void Render() const; [[nodiscard]] bool NeedsRedraw() const; void ResetNeedsRedraw(); bool GetActivePluginsIfChanged(std::vector &result); private: ConfigSubState UpdateStateMain(const Input &input); void RenderStateMain() const; void DrawConfigEntry(uint32_t yOffset, const GeneralConfigInformation &configInformation, bool isHighlighted, bool isActive) const; void CallOnCloseCallback(const GeneralConfigInformation &info, const std::vector> &categories); void CallOnCloseCallback(const GeneralConfigInformation &info, const WUPSConfigAPIBackend::WUPSConfig &config); const std::vector> &GetConfigList() const; enum State { STATE_MAIN = 0, STATE_SUB = 1, }; std::vector mConfigs; std::vector> mAllConfigs; std::vector> mActiveConfigs; std::unique_ptr mCategoryRenderer = {}; State mState = STATE_MAIN; int32_t mCursorPos = 0; int32_t mRenderOffset = 0; int32_t mCurrentOpen = -1; bool mNeedRedraw = true; bool mSetActivePluginsMode = false; bool mActivePluginsDirty = false; };