1#ifndef YAZE_APP_CORE_EDITOR_H
2#define YAZE_APP_CORE_EDITOR_H
9#include "absl/status/status.h"
10#include "absl/status/statusor.h"
11#include "absl/strings/str_format.h"
77 explicit operator bool()
const {
return IsValid(); }
168 "Unknown",
"Assembly",
"Dungeon",
"Emulator",
"Graphics",
169 "Music",
"Overworld",
"Palette",
"Screen",
"Sprite",
170 "Message",
"Hex",
"Agent",
"Settings",
195 virtual absl::Status
Load() = 0;
198 virtual absl::Status
Save() = 0;
203 virtual absl::Status
Cut() = 0;
204 virtual absl::Status
Copy() = 0;
207 virtual absl::Status
Undo() = 0;
208 virtual absl::Status
Redo() = 0;
210 virtual absl::Status
Find() = 0;
212 virtual absl::Status
Clear() {
return absl::OkStatus(); }
223 return "ROM state not implemented";
256 template <
typename T>
258 const std::string& operation =
"")
const {
260 return absl::FailedPreconditionError(
261 operation.empty() ?
"ROM not loaded"
262 : absl::StrFormat(
"%s: ROM not loaded", operation));
266 }
catch (
const std::exception& e) {
267 return absl::InternalError(absl::StrFormat(
268 "%s: %s", operation.empty() ?
"ROM access failed" : operation,
The Rom class is used to load, save, and modify Rom data. This is a generic SNES ROM container and do...
Manages project versioning (Git) and ROM artifact snapshots.
Interface for editor classes.
virtual void SetGameData(zelda3::GameData *game_data)
virtual absl::Status Cut()=0
virtual absl::Status Copy()=0
virtual absl::Status Redo()=0
EditorContext context() const
virtual void Initialize()=0
zelda3::GameData * game_data() const
EditorDependencies dependencies_
virtual absl::Status Clear()
void set_active(bool active)
virtual ~Editor()=default
virtual std::string GetRomStatus() const
virtual absl::Status Save()=0
std::string MakePanelId(const std::string &base_id) const
virtual bool IsRomLoaded() const
void SetDependencies(const EditorDependencies &deps)
std::string MakePanelTitle(const std::string &base_title) const
absl::StatusOr< T > SafeRomAccess(std::function< T()> accessor, const std::string &operation="") const
virtual absl::Status Find()=0
virtual absl::Status Paste()=0
virtual absl::Status Load()=0
virtual absl::Status Update()=0
virtual absl::Status Undo()=0
Central registry for all editor cards with session awareness and dependency injection.
Manages user preferences and settings persistence.
A class for emulating and debugging SNES games.
Defines an abstract interface for all rendering operations.
constexpr std::array< const char *, 14 > kEditorNames
Lightweight view into the essential runtime context (Rom + GameData)
zelda3::GameData * game_data
bool has_overworld_tile16
std::vector< int > overworld_tile16_ids
Unified dependency container for all editor types.
project::YazeProject * project
ToastManager * toast_manager
SharedClipboard * shared_clipboard
gfx::IRenderer * renderer
ShortcutManager * shortcut_manager
UserSettings * user_settings
core::VersionManager * version_manager
zelda3::GameData * game_data
EditorContext context() const
PanelManager * panel_manager
PopupManager * popup_manager
Modern project structure with comprehensive settings consolidation.