// SPDX-License-Identifier: MIT // // ES-DE Frontend // GuiOfflineGenerator.h // // User interface for the miximage offline generator. // Calls MiximageGenerator to do the actual work. // #ifndef ES_APP_GUIS_GUI_OFFLINE_GENERATOR_H #define ES_APP_GUIS_GUI_OFFLINE_GENERATOR_H #include "GuiComponent.h" #include "MiximageGenerator.h" #include "components/ButtonComponent.h" #include "components/ComponentGrid.h" #include "views/ViewController.h" #include <queue> class TextComponent; class GuiOfflineGenerator : public GuiComponent { public: GuiOfflineGenerator(const std::queue<FileData*>& gameQueue); ~GuiOfflineGenerator(); private: void onSizeChanged() override; void update(int deltaTime) override; std::vector<HelpPrompt> getHelpPrompts() override; HelpStyle getHelpStyle() override { return ViewController::getInstance()->getViewHelpStyle(); } std::queue<FileData*> mGameQueue; std::unique_ptr<MiximageGenerator> mMiximageGenerator; std::thread mMiximageGeneratorThread; std::promise<bool> mGeneratorPromise; std::future<bool> mGeneratorFuture; FileData* mGame; bool mProcessing; bool mPaused; bool mOverwriting; std::string mResultMessage; unsigned int mTotalGames; unsigned int mGamesProcessed; unsigned int mImagesGenerated; unsigned int mImagesOverwritten; unsigned int mGamesSkipped; unsigned int mGamesFailed; Renderer* mRenderer; NinePatchComponent mBackground; ComponentGrid mGrid; std::shared_ptr<TextComponent> mTitle; std::shared_ptr<TextComponent> mStatus; std::shared_ptr<TextComponent> mGameCounter; std::shared_ptr<TextComponent> mGeneratedLbl; std::shared_ptr<TextComponent> mGeneratedVal; std::shared_ptr<TextComponent> mOverwrittenLbl; std::shared_ptr<TextComponent> mOverwrittenVal; std::shared_ptr<TextComponent> mSkippedLbl; std::shared_ptr<TextComponent> mSkippedVal; std::shared_ptr<TextComponent> mFailedLbl; std::shared_ptr<TextComponent> mFailedVal; std::shared_ptr<TextComponent> mProcessingLbl; std::shared_ptr<TextComponent> mProcessingVal; std::string mGameName; std::shared_ptr<TextComponent> mLastErrorLbl; std::shared_ptr<TextComponent> mLastErrorVal; std::shared_ptr<ComponentGrid> mButtonGrid; std::shared_ptr<ButtonComponent> mStartPauseButton; std::shared_ptr<ButtonComponent> mCloseButton; }; #endif // ES_APP_GUIS_GUI_OFFLINE_GENERATOR_H