1#ifndef YAZE_APP_EDITOR_MESSAGE_EDITOR_H
2#define YAZE_APP_EDITOR_MESSAGE_EDITOR_H
10#include "absl/status/status.h"
11#include "absl/status/statusor.h"
26class MessageEditorTestPeer;
27class MessageEditorSaveTestPeer;
52 absl::Status
Load()
override;
53 absl::Status
Update()
override;
70 absl::Status
Save()
override;
78 absl::Status
Cut()
override;
79 absl::Status
Copy()
override;
80 absl::Status
Paste()
override;
81 absl::Status
Undo()
override;
82 absl::Status
Redo()
override;
83 absl::Status
Find()
override;
105 uint32_t
end()
const {
return start +
static_cast<uint32_t
>(
bytes.size()); }
122 absl::StatusOr<SavePlan>
BuildSavePlan(
bool include_font_widths,
123 bool include_vanilla_messages,
124 bool include_expanded_messages)
const;
128 bool include_vanilla_messages,
129 bool include_expanded_messages);
160 ImVec2(172 * 2, 4096)};
The Rom class is used to load, save, and modify Rom data. This is a generic SNES ROM container and do...
Interface for editor classes.
zelda3::GameData * game_data() const
EditorDependencies dependencies_
DirtyState transaction_dirty_snapshot_
std::vector< std::string > parsed_messages_
absl::Status Copy() override
bool current_message_is_expanded_
bool replace_status_error_
void CommitSaveTransaction() override
std::vector< MessageData > expanded_messages_
int CalculateExpandedBankUsage() const
absl::Status Find() override
void ResolveFontPalette()
void EnsureFontTexturesReady()
absl::Status SaveExpandedMessages()
DirtyState transaction_saved_domains_
void RollbackSaveTransaction() override
bool font_graphics_loaded_
absl::Status Update() override
void ClearSavedDomains(const DirtyState &saved)
void FinalizePendingUndo()
absl::Status LoadExpandedMessagesFromRom()
friend class MessageEditorTestPeer
void RecordSavedDomains(const SavePlan &plan)
void DrawExpandedMessageSettings()
void UpdateCurrentMessageFromText(const std::string &text)
absl::Status Paste() override
void ApplySnapshot(const MessageSnapshot &snapshot)
bool save_transaction_active_
absl::StatusOr< SavePlan > BuildSavePlan(bool include_font_widths, bool include_vanilla_messages, bool include_expanded_messages) const
std::vector< int > transaction_expanded_address_snapshot_
void SyncCurrentExpandedMessageAddress()
void MarkDomainDirty(SaveDomain domain)
gui::Canvas current_font_gfx16_canvas_
gui::Canvas font_gfx_canvas_
void RefreshFontAtlasBitmap(const std::vector< uint8_t > &font_data)
std::vector< std::string > current_parse_errors_
absl::Status Undo() override
absl::Status Load() override
std::string replace_status_
bool show_message_editor_
friend class MessageEditorSaveTestPeer
std::vector< std::string > current_parse_warnings_
std::string message_bundle_status_
std::array< uint8_t, 0x4000 > raw_font_gfx_data_
gfx::SnesPalette BuildFallbackFontPalette() const
void Initialize() override
std::string replace_text_
MessageEditor(Rom *rom=nullptr)
absl::Status SaveDirtyDomains(bool include_font_widths, bool include_vanilla_messages, bool include_expanded_messages)
absl::Status Cut() override
void DrawMessagePreview()
Rom expanded_message_bin_
MessageEditor(Rom *rom, const EditorDependencies &deps)
int expanded_message_base_id_
bool message_bundle_status_error_
std::optional< MessageSnapshot > pending_undo_before_
absl::Status BeginSaveTransaction() override
std::vector< MessageData > list_of_texts_
bool OpenMessageById(int display_id)
gfx::SnesPalette font_preview_colors_
MessageData current_message_
MessagePreview message_preview_
gui::TextBox message_text_box_
void DrawCurrentMessage()
void DrawSpecialCharacters()
absl::Status Redo() override
int ResolveExpandedMessageBaseId() const
void ImportMessageBundleFromFile(const std::string &path)
gfx::Bitmap current_font_gfx16_bitmap_
absl::Status ValidateSavePlan(const SavePlan &plan) const
int ReplaceCurrentMatch()
int current_message_index_
absl::Status ApplySavePlan(const SavePlan &plan)
gfx::Bitmap font_gfx_bitmap_
std::string expanded_message_path_
absl::Status Save() override
void SetGameData(zelda3::GameData *game_data) override
Represents a bitmap image optimized for SNES ROM hacking.
Represents a palette of colors for the Super Nintendo Entertainment System (SNES).
Modern, robust canvas for drawing and manipulating graphics.
constexpr int kCharactersWidth
constexpr int kFontGfx16Size
constexpr uint8_t kBlockTerminator
constexpr int kFontGfxMessageSize
constexpr int kFontGfxMessageDepth
constexpr uint8_t kMessageBankChangeId
constexpr int kNumMessages
Unified dependency container for all editor types.
std::vector< uint8_t > bytes
std::vector< int > expanded_message_addresses
bool saves_vanilla_messages
bool saves_expanded_messages
std::vector< PlannedWrite > writes