yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
controller.h
Go to the documentation of this file.
1#ifndef YAZE_APP_CORE_CONTROLLER_H
2#define YAZE_APP_CORE_CONTROLLER_H
3
5
6#include <memory>
7
8#include "absl/status/status.h"
12#include "rom/rom.h"
13
14int main(int argc, char** argv);
15
16namespace yaze {
17
18class CanvasAutomationServiceImpl;
19
27 public:
28 bool IsActive() const { return active_; }
29 absl::Status OnEntry(std::string filename = "");
30 void OnInput();
31 absl::Status OnLoad();
32 void DoRender() const;
33 void OnExit();
34
35 // Set startup editor and cards from command-line flags
36 void SetStartupEditor(const std::string& editor_name,
37 const std::string& cards);
38
39 auto window() -> SDL_Window* {
40 return window_backend_ ? window_backend_->GetNativeWindow() : nullptr;
41 }
42 void set_active(bool active) { active_ = active; }
43 auto active() const { return active_; }
48 auto renderer() -> gfx::IRenderer* { return renderer_.get(); }
49
50 // Test-friendly accessors for GUI testing with ImGuiTestEngine
52
53 // Window backend accessor
55
56 // Load a ROM file and initialize all editors for testing
57 // This performs the full initialization flow including LoadAssets()
58 absl::Status LoadRomForTesting(const std::string& rom_path);
59
60#ifdef YAZE_WITH_GRPC
61 void SetCanvasAutomationService(CanvasAutomationServiceImpl* service) {
62 editor_manager_.SetCanvasAutomationService(service);
63 }
64#endif
65
66 private:
67 friend int ::main(int argc, char** argv);
68
69 bool active_ = false;
70 std::unique_ptr<platform::IWindowBackend> window_backend_;
72 std::unique_ptr<gfx::IRenderer> renderer_;
73};
74
75} // namespace yaze
76
77#endif // YAZE_APP_CORE_CONTROLLER_H
Main controller for the application.
Definition controller.h:26
platform::IWindowBackend * window_backend()
Definition controller.h:54
auto window() -> SDL_Window *
Definition controller.h:39
editor::EditorManager * editor_manager()
Definition controller.h:51
auto overworld() -> yaze::zelda3::Overworld *
Definition controller.h:44
auto renderer() -> gfx::IRenderer *
Definition controller.h:48
editor::EditorManager editor_manager_
Definition controller.h:71
absl::Status LoadRomForTesting(const std::string &rom_path)
absl::Status OnEntry(std::string filename="")
Definition controller.cc:21
auto GetCurrentRom() -> Rom *
Definition controller.h:47
void SetStartupEditor(const std::string &editor_name, const std::string &cards)
Definition controller.cc:59
auto active() const
Definition controller.h:43
std::unique_ptr< platform::IWindowBackend > window_backend_
Definition controller.h:70
bool IsActive() const
Definition controller.h:28
absl::Status OnLoad()
Definition controller.cc:92
void DoRender() const
std::unique_ptr< gfx::IRenderer > renderer_
Definition controller.h:72
void set_active(bool active)
Definition controller.h:42
The Rom class is used to load, save, and modify Rom data. This is a generic SNES ROM container and do...
Definition rom.h:24
The EditorManager controls the main editor window and manages the various editor classes.
auto overworld() const -> yaze::zelda3::Overworld *
auto GetCurrentRom() const -> Rom *
Defines an abstract interface for all rendering operations.
Definition irenderer.h:40
Abstract window backend interface.
Definition iwindow.h:114
Represents the full Overworld data, light and dark world.
Definition overworld.h:217
int main(int argc, char **argv)
Definition emu.cc:39
SDL2/SDL3 compatibility layer.