backend-infra-engineer: Post v0.3.9-hotfix7 snapshot (build cleanup)

This commit is contained in:
scawful
2025-12-22 00:20:49 +00:00
parent 2934c82b75
commit 5c4cd57ff8
1259 changed files with 239160 additions and 43801 deletions

104
src/app/application.h Normal file
View File

@@ -0,0 +1,104 @@
#ifndef YAZE_APP_APPLICATION_H_
#define YAZE_APP_APPLICATION_H_
#include <memory>
#include <string>
#include <vector>
#include "absl/status/status.h"
#include "app/controller.h"
#include "app/startup_flags.h"
#include "yaze_config.h"
#ifdef YAZE_WITH_GRPC
#include "app/service/unified_grpc_server.h"
#include "app/service/canvas_automation_service.h"
#endif
namespace yaze {
/**
* @brief Configuration options for the application startup
*/
struct AppConfig {
// File loading
std::string rom_file;
std::string log_file;
bool debug = false;
std::string log_categories;
StartupVisibility welcome_mode = StartupVisibility::kAuto;
StartupVisibility dashboard_mode = StartupVisibility::kAuto;
StartupVisibility sidebar_mode = StartupVisibility::kAuto;
// Startup navigation
std::string startup_editor; // Editor to open (e.g., "Dungeon")
std::vector<std::string> open_panels; // Panel IDs to show (e.g., "dungeon.room_list")
// Jump targets
int jump_to_room = -1; // Dungeon room ID (-1 to ignore)
int jump_to_map = -1; // Overworld map ID (-1 to ignore)
// Services
bool enable_api = false;
int api_port = 8080;
bool enable_test_harness = false;
int test_harness_port = 50051;
};
/**
* @class Application
* @brief Main application singleton managing lifecycle and global state
*/
class Application {
public:
static Application& Instance();
// Initialize the application with configuration
void Initialize(const AppConfig& config);
// Default initialization (empty config)
void Initialize() { Initialize(AppConfig{}); }
// Main loop tick
void Tick();
// Shutdown application
void Shutdown();
// Unified ROM loading
void LoadRom(const std::string& path);
// Accessors
Controller* GetController() { return controller_.get(); }
bool IsReady() const { return controller_ != nullptr; }
const AppConfig& GetConfig() const { return config_; }
private:
Application() = default;
~Application() = default;
// Non-copyable
Application(const Application&) = delete;
Application& operator=(const Application&) = delete;
std::unique_ptr<Controller> controller_;
AppConfig config_;
#ifndef __EMSCRIPTEN__
// For non-WASM builds, we need a local queue for ROMs requested before
// the controller is initialized.
std::string pending_rom_;
#endif
// Helper to run startup actions (jumps, card opening) after ROM load
void RunStartupActions();
#ifdef YAZE_WITH_GRPC
std::unique_ptr<YazeGRPCServer> grpc_server_;
std::unique_ptr<CanvasAutomationServiceImpl> canvas_automation_service_;
#endif
};
} // namespace yaze
#endif // YAZE_APP_APPLICATION_H_