#pragma once #include "CategoryRenderer.h" #include "ConfigDefines.h" #include "ConfigDisplayItem.h" #include "utils/input/Input.h" #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(); private: ConfigSubState UpdateStateMain(const Input &input); void RenderStateMain() const; void DrawConfigEntry(uint32_t yOffset, const GeneralConfigInformation &configInformation, bool isHighlighted) const; void CallOnCloseCallback(const GeneralConfigInformation &info, const std::vector> &categories); void CallOnCloseCallback(const GeneralConfigInformation &info, const WUPSConfigAPIBackend::WUPSConfig &config); enum State { STATE_MAIN = 0, STATE_SUB = 1, }; std::vector mConfigs; std::unique_ptr mCategoryRenderer = {}; State mState = STATE_MAIN; int32_t mCursorPos = 0; int32_t mRenderOffset = 0; int32_t mCurrentOpen = -1; bool mNeedRedraw = true; };