yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
sprite_editor.h
Go to the documentation of this file.
1#ifndef YAZE_APP_EDITOR_SPRITE_EDITOR_H
2#define YAZE_APP_EDITOR_SPRITE_EDITOR_H
3
4#include <cstdint>
5#include <vector>
6
7#include "absl/status/status.h"
8#include "app/editor/editor.h"
10#include "app/gui/canvas.h"
13#include "app/rom.h"
14
15namespace yaze {
16namespace editor {
17
18constexpr ImGuiTabItemFlags kSpriteTabFlags =
19 ImGuiTabItemFlags_Trailing | ImGuiTabItemFlags_NoTooltip;
20
21constexpr ImGuiTabBarFlags kSpriteTabBarFlags =
22 ImGuiTabBarFlags_AutoSelectNewTabs | ImGuiTabBarFlags_Reorderable |
23 ImGuiTabBarFlags_FittingPolicyResizeDown |
24 ImGuiTabBarFlags_TabListPopupButton;
25
26constexpr ImGuiTableFlags kSpriteTableFlags =
27 ImGuiTableFlags_Resizable | ImGuiTableFlags_Reorderable |
28 ImGuiTableFlags_Hideable | ImGuiTableFlags_BordersOuter |
29 ImGuiTableFlags_BordersV;
30
38class SpriteEditor : public Editor {
39 public:
40 explicit SpriteEditor(Rom* rom = nullptr) : rom_(rom) {
42 }
43
44 void Initialize() override;
45 absl::Status Load() override;
46 absl::Status Update() override;
47 absl::Status Undo() override { return absl::UnimplementedError("Undo"); }
48 absl::Status Redo() override { return absl::UnimplementedError("Redo"); }
49 absl::Status Cut() override { return absl::UnimplementedError("Cut"); }
50 absl::Status Copy() override { return absl::UnimplementedError("Copy"); }
51 absl::Status Paste() override { return absl::UnimplementedError("Paste"); }
52 absl::Status Find() override { return absl::UnimplementedError("Find"); }
53 absl::Status Save() override { return absl::UnimplementedError("Save"); }
54
55 // Set the ROM pointer
56 void set_rom(Rom* rom) { rom_ = rom; }
57
58 // Get the ROM pointer
59 Rom* rom() const { return rom_; }
60
61 private:
63
67 void DrawSpritesList();
68
72 void DrawSpriteCanvas();
73
77 void DrawCurrentSheets();
78 void DrawCustomSprites();
80
85 void DrawToolset();
86
87 // Card visibility - ALL FALSE by default to prevent crash on ROM load
88 // Cards only shown when user explicitly opens them via View menu or shortcuts
90 bool show_custom_editor_ = false;
91
92 ImVector<int> active_sprites_;
95 uint8_t current_sheets_[8] = {0x00, 0x0A, 0x06, 0x07, 0x00, 0x00, 0x00, 0x00};
97 false;
99 // OAM Configuration
100 struct OAMConfig {
101 uint16_t x;
102 uint16_t y;
103 uint8_t tile;
104 uint8_t palette;
105 uint8_t priority;
106 bool flip_x;
107 bool flip_y;
108 };
109
114 "SpriteCanvas", ImVec2(0x200, 0x200),
118 "GraphicsSheetCanvas", ImVec2(0x80 * 2 + 2, 0x40 * 8 + 2),
121 std::vector<zsprite::ZSprite> custom_sprites_;
123 absl::Status status_;
126};
127
128} // namespace editor
129} // namespace yaze
130
131#endif // YAZE_APP_EDITOR_SPRITE_EDITOR_H
The Rom class is used to load, save, and modify Rom data.
Definition rom.h:71
Interface for editor classes.
Definition editor.h:82
EditorType type_
Definition editor.h:123
Allows the user to edit sprites.
ImVector< int > active_sprites_
absl::Status Find() override
void DrawAnimationFrames()
Draws the animation frames manager.
void DrawCurrentSheets()
Draws the current sheets.
void DrawSpriteCanvas()
Draws the sprite canvas.
absl::Status Paste() override
absl::Status Update() override
void DrawSpritesList()
Draws the sprites list.
absl::Status Redo() override
absl::Status Cut() override
absl::Status Undo() override
std::vector< zsprite::ZSprite > custom_sprites_
absl::Status Copy() override
absl::Status Save() override
absl::Status Load() override
SpriteEditor(Rom *rom=nullptr)
Represents a bitmap image optimized for SNES ROM hacking.
Definition bitmap.h:66
Modern, robust canvas for drawing and manipulating graphics.
Definition canvas.h:54
constexpr ImGuiTableFlags kSpriteTableFlags
constexpr ImGuiTabItemFlags kSpriteTabFlags
constexpr ImGuiTabBarFlags kSpriteTabBarFlags
Main namespace for the application.