#ifndef YAZE_APP_CORE_CONTROLLER_H #define YAZE_APP_CORE_CONTROLLER_H #include #include #include "absl/status/status.h" #include "app/core/window.h" #include "app/editor/editor_manager.h" int main(int argc, char **argv); namespace yaze { namespace core { /** * @brief Main controller for the application. * * This class is responsible for managing the main window and the * main editor. It is the main entry point for the application. */ class Controller { public: bool IsActive() const { return active_; } absl::Status OnEntry(std::string filename = ""); void OnInput(); absl::Status OnLoad(); void DoRender() const; void OnExit(); auto window() -> SDL_Window * { return window_.window_.get(); } void set_active(bool active) { active_ = active; } auto active() const { return active_; } private: friend int ::main(int argc, char **argv); bool active_ = false; core::Window window_; editor::EditorManager editor_manager_; }; } // namespace core } // namespace yaze #endif // YAZE_APP_CORE_CONTROLLER_H