yaze 0.2.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
message_editor.h
Go to the documentation of this file.
1#ifndef YAZE_APP_EDITOR_MESSAGE_EDITOR_H
2#define YAZE_APP_EDITOR_MESSAGE_EDITOR_H
3
4#include <array>
5#include <string>
6#include <vector>
7
8#include "absl/status/status.h"
9#include "app/editor/editor.h"
11#include "app/gfx/bitmap.h"
12#include "app/gui/canvas.h"
13#include "app/gui/style.h"
14#include "app/rom.h"
15
16namespace yaze {
17namespace editor {
18
19constexpr int kGfxFont = 0x70000; // 2bpp format
20constexpr int kCharactersWidth = 0x74ADF;
21constexpr int kNumMessages = 396;
22constexpr int kCurrentMessageWidth = 172;
23constexpr int kCurrentMessageHeight = 4096;
24constexpr int kFontGfxMessageSize = 128;
25constexpr int kFontGfxMessageDepth = 8;
26constexpr int kFontGfx16Size = 172 * 4096;
27
28constexpr uint8_t kWidthArraySize = 100;
29constexpr uint8_t kBlockTerminator = 0x80;
30constexpr uint8_t kMessageBankChangeId = 0x80;
31
32class MessageEditor : public Editor {
33 public:
34 explicit MessageEditor(Rom* rom = nullptr) : rom_(rom) {
36 }
37
38 void Initialize() override;
39 absl::Status Load() override;
40 absl::Status Update() override;
41 void DrawMessageList();
42 void DrawCurrentMessage();
43 void DrawTextCommands();
45 void DrawDictionary();
46 void DrawImportExport();
48
49 absl::Status Cut() override;
50 absl::Status Copy() override;
51 absl::Status Paste() override;
52 absl::Status Undo() override;
53 absl::Status Redo() override;
54 absl::Status Find() override;
55 absl::Status Save() override;
56 void Delete();
57 void SelectAll();
58
59 void DrawTileToPreview(int x, int y, int srcx, int srcy, int pal,
60 int sizex = 1, int sizey = 1);
61 void DrawCharacterToPreview(char c);
62 void DrawCharacterToPreview(const std::vector<uint8_t>& text);
63
64 void DrawStringToPreview(std::string str);
65 void DrawMessagePreview();
66 std::string DisplayTextOverflowError(int pos, bool bank);
67
68 absl::Status ImportMessagesFromFile(const std::string& filename);
69 absl::Status ExportMessagesToFile(const std::string& filename);
70
71 void SetMessageFont(int font_index);
72 void SetMessageColor(int color_index);
73 void SetMessageSpeed(int speed);
74 void SetMessageWindow(int window_type);
75 void SetMessagePosition(int x, int y);
76
77 void set_rom(Rom* rom) { rom_ = rom; }
78 Rom* rom() const { return rom_; }
79
80 private:
82 bool skip_next = false;
83 bool data_loaded_ = false;
84 bool case_sensitive_ = false;
85 bool match_whole_word_ = false;
87
88 int text_line_ = 0;
90 int shown_lines_ = 0;
91
92 std::string search_text_ = "";
93 std::string import_filename_ = "";
94 std::string export_filename_ = "";
95
96 std::array<uint8_t, kWidthArraySize> width_array = {0};
97 std::vector<uint8_t> font_gfx16_data_;
98 std::vector<uint8_t> current_font_gfx16_data_;
99 std::vector<std::string> parsed_messages_;
100 std::vector<MessageData> list_of_texts_;
101 std::vector<DictionaryEntry> all_dictionaries_;
102
104
108
109 gui::Canvas font_gfx_canvas_{"##FontGfxCanvas", ImVec2(128, 128)};
111 ImVec2(172, 4096)};
112 gui::Canvas tile_editor_canvas_{"##TileEditorCanvas", ImVec2(256, 256)};
113 gui::Canvas tile_preview_canvas_{"##TilePreviewCanvas", ImVec2(64, 64)};
114
116
117 absl::Status status_;
118};
119
120} // namespace editor
121} // namespace yaze
122
123#endif // YAZE_APP_EDITOR_MESSAGE_EDITOR_H
The Rom class is used to load, save, and modify Rom data.
Definition rom.h:59
EditorType type_
Definition editor.h:92
std::vector< std::string > parsed_messages_
absl::Status Copy() override
absl::Status Find() override
absl::Status Update() override
void SetMessageFont(int font_index)
std::array< uint8_t, kWidthArraySize > width_array
absl::Status Paste() override
std::string DisplayTextOverflowError(int pos, bool bank)
void SetMessageColor(int color_index)
void DrawStringToPreview(std::string str)
absl::Status Undo() override
absl::Status Load() override
void DrawTileToPreview(int x, int y, int srcx, int srcy, int pal, int sizex=1, int sizey=1)
absl::Status ExportMessagesToFile(const std::string &filename)
MessageEditor(Rom *rom=nullptr)
void SetMessagePosition(int x, int y)
absl::Status Cut() override
std::vector< MessageData > list_of_texts_
std::vector< uint8_t > font_gfx16_data_
std::vector< uint8_t > current_font_gfx16_data_
gfx::SnesPalette font_preview_colors_
absl::Status Redo() override
std::vector< DictionaryEntry > all_dictionaries_
void SetMessageSpeed(int speed)
void SetMessageWindow(int window_type)
absl::Status Save() override
absl::Status ImportMessagesFromFile(const std::string &filename)
Represents a bitmap image.
Definition bitmap.h:66
Represents a palette of colors for the Super Nintendo Entertainment System (SNES).
Represents a canvas for drawing and manipulating graphics.
Definition canvas.h:36
Editors are the view controllers for the application.
constexpr int kCharactersWidth
constexpr int kFontGfx16Size
constexpr int kCurrentMessageWidth
constexpr int kCurrentMessageHeight
constexpr uint8_t kBlockTerminator
constexpr int kGfxFont
constexpr int kFontGfxMessageSize
constexpr int kFontGfxMessageDepth
constexpr uint8_t kWidthArraySize
constexpr uint8_t kMessageBankChangeId
constexpr int kNumMessages
Main namespace for the application.
Definition controller.cc:18