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"
12#include "app/rom.h"
13
14namespace yaze {
15namespace editor {
16
17constexpr ImGuiTabItemFlags kSpriteTabFlags =
18 ImGuiTabItemFlags_Trailing | ImGuiTabItemFlags_NoTooltip;
19
20constexpr ImGuiTabBarFlags kSpriteTabBarFlags =
21 ImGuiTabBarFlags_AutoSelectNewTabs | ImGuiTabBarFlags_Reorderable |
22 ImGuiTabBarFlags_FittingPolicyResizeDown |
23 ImGuiTabBarFlags_TabListPopupButton;
24
25constexpr ImGuiTableFlags kSpriteTableFlags =
26 ImGuiTableFlags_Resizable | ImGuiTableFlags_Reorderable |
27 ImGuiTableFlags_Hideable | ImGuiTableFlags_BordersOuter |
28 ImGuiTableFlags_BordersV;
29
37class SpriteEditor : public Editor {
38 public:
39 explicit SpriteEditor(Rom* rom = nullptr) : rom_(rom) {
41 }
42
43 void Initialize() override;
44 absl::Status Load() override;
45 absl::Status Update() override;
46 absl::Status Undo() override { return absl::UnimplementedError("Undo"); }
47 absl::Status Redo() override { return absl::UnimplementedError("Redo"); }
48 absl::Status Cut() override { return absl::UnimplementedError("Cut"); }
49 absl::Status Copy() override { return absl::UnimplementedError("Copy"); }
50 absl::Status Paste() override { return absl::UnimplementedError("Paste"); }
51 absl::Status Find() override { return absl::UnimplementedError("Find"); }
52 absl::Status Save() override { return absl::UnimplementedError("Save"); }
53
54 // Set the ROM pointer
55 void set_rom(Rom* rom) { rom_ = rom; }
56
57 // Get the ROM pointer
58 Rom* rom() const { return rom_; }
59
60 private:
62
66 void DrawSpritesList();
67
71 void DrawSpriteCanvas();
72
76 void DrawCurrentSheets();
77 void DrawCustomSprites();
79
84 void DrawToolset();
85
86 ImVector<int> active_sprites_;
89 uint8_t current_sheets_[8] = {0x00, 0x0A, 0x06, 0x07, 0x00, 0x00, 0x00, 0x00};
91 false;
93 // OAM Configuration
94 struct OAMConfig {
95 uint16_t x;
96 uint16_t y;
97 uint8_t tile;
98 uint8_t palette;
99 uint8_t priority;
100 bool flip_x;
101 bool flip_y;
102 };
103
108 "SpriteCanvas", ImVec2(0x200, 0x200),
112 "GraphicsSheetCanvas", ImVec2(0x80 * 2 + 2, 0x40 * 8 + 2),
115 std::vector<zsprite::ZSprite> custom_sprites_;
117 absl::Status status_;
120};
121
122} // namespace editor
123} // namespace yaze
124
125#endif // YAZE_APP_EDITOR_SPRITE_EDITOR_H
The Rom class is used to load, save, and modify Rom data.
Definition rom.h:74
Interface for editor classes.
Definition editor.h:122
EditorType type_
Definition editor.h:164
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:59
constexpr ImGuiTableFlags kSpriteTableFlags
constexpr ImGuiTabItemFlags kSpriteTabFlags
constexpr ImGuiTabBarFlags kSpriteTabBarFlags
Main namespace for the application.
Definition controller.cc:20