yaze 0.2.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"
11#include "app/rom.h"
12
13namespace yaze {
14namespace editor {
15
16constexpr ImGuiTabItemFlags kSpriteTabFlags =
17 ImGuiTabItemFlags_Trailing | ImGuiTabItemFlags_NoTooltip;
18
19constexpr ImGuiTabBarFlags kSpriteTabBarFlags =
20 ImGuiTabBarFlags_AutoSelectNewTabs | ImGuiTabBarFlags_Reorderable |
21 ImGuiTabBarFlags_FittingPolicyResizeDown |
22 ImGuiTabBarFlags_TabListPopupButton;
23
24constexpr ImGuiTableFlags kSpriteTableFlags =
25 ImGuiTableFlags_Resizable | ImGuiTableFlags_Reorderable |
26 ImGuiTableFlags_Hideable | ImGuiTableFlags_BordersOuter |
27 ImGuiTableFlags_BordersV;
28
36class SpriteEditor : public Editor {
37 public:
38 explicit SpriteEditor(Rom* rom = nullptr) : rom_(rom) {
40 }
41
42 void Initialize() override;
43 absl::Status Load() override;
44 absl::Status Update() override;
45 absl::Status Undo() override { return absl::UnimplementedError("Undo"); }
46 absl::Status Redo() override { return absl::UnimplementedError("Redo"); }
47 absl::Status Cut() override { return absl::UnimplementedError("Cut"); }
48 absl::Status Copy() override { return absl::UnimplementedError("Copy"); }
49 absl::Status Paste() override { return absl::UnimplementedError("Paste"); }
50 absl::Status Find() override { return absl::UnimplementedError("Find"); }
51 absl::Status Save() override { return absl::UnimplementedError("Save"); }
52
53 // Set the ROM pointer
54 void set_rom(Rom* rom) { rom_ = rom; }
55
56 // Get the ROM pointer
57 Rom* rom() const { return rom_; }
58
59 private:
61
65 void DrawSpritesList();
66
70 void DrawSpriteCanvas();
71
75 void DrawCurrentSheets();
76 void DrawCustomSprites();
78
83
84 ImVector<int> active_sprites_;
85
87 uint8_t current_sheets_[8] = {0x00, 0x0A, 0x06, 0x07, 0x00, 0x00, 0x00, 0x00};
89 false;
90
91 // OAM Configuration
92 struct OAMConfig {
93 uint16_t x;
94 uint16_t y;
95 uint8_t tile;
96 uint8_t palette;
97 uint8_t priority;
98 bool flip_x;
99 bool flip_y;
100 };
101
104
106 "SpriteCanvas", ImVec2(0x200, 0x200),
108
110 "GraphicsSheetCanvas", ImVec2(0x80 * 2 + 2, 0x40 * 8 + 2),
112
113 std::vector<zsprite::ZSprite> custom_sprites_;
114
115 absl::Status status_;
116
118};
119
120} // namespace editor
121} // namespace yaze
122
123#endif // YAZE_APP_EDITOR_SPRITE_EDITOR_H
The Rom class is used to load, save, and modify Rom data.
Definition rom.h:59
EditorType type_
Definition editor.h:92
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.
Definition bitmap.h:66
Represents a canvas for drawing and manipulating graphics.
Definition canvas.h:36
Editors are the view controllers for the application.
constexpr ImGuiTableFlags kSpriteTableFlags
constexpr ImGuiTabItemFlags kSpriteTabFlags
constexpr ImGuiTabBarFlags kSpriteTabBarFlags
Main namespace for the application.
Definition controller.cc:18