yaze 0.2.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
tile16_editor.h
Go to the documentation of this file.
1#ifndef YAZE_APP_EDITOR_TILE16EDITOR_H
2#define YAZE_APP_EDITOR_TILE16EDITOR_H
3
4#include <array>
5#include <vector>
6
7#include "absl/status/status.h"
9#include "app/gfx/bitmap.h"
11#include "app/gfx/snes_tile.h"
12#include "app/gui/canvas.h"
13#include "app/gui/input.h"
14#include "app/rom.h"
16#include "imgui/imgui.h"
17#include "util/notify.h"
18
19namespace yaze {
20namespace editor {
21
25class Tile16Editor : public gfx::GfxContext, public SharedRom {
26 public:
28 std::array<gfx::Bitmap, zelda3::kNumTile16Individual> &tile16_individual)
29 : tile16_individual_(&tile16_individual) {}
30 absl::Status Initialize(const gfx::Bitmap &tile16_blockset_bmp,
31 const gfx::Bitmap &current_gfx_bmp,
32 std::array<uint8_t, 0x200> &all_tiles_types);
33
34 absl::Status Update();
35
36 void DrawTile16Editor();
37 absl::Status UpdateTile16Transfer();
38 absl::Status UpdateBlockset();
39
40 absl::Status DrawToCurrentTile16(ImVec2 pos);
41
42 absl::Status UpdateTile16Edit();
43
44 absl::Status UpdateTransferTileCanvas();
45
46 absl::Status LoadTile8();
47
48 absl::Status SetCurrentTile(int id);
49
50 // New methods for clipboard and scratch space
51 absl::Status CopyTile16ToClipboard(int tile_id);
52 absl::Status PasteTile16FromClipboard();
53 absl::Status SaveTile16ToScratchSpace(int slot);
54 absl::Status LoadTile16FromScratchSpace(int slot);
55 absl::Status ClearScratchSpace(int slot);
56
57 private:
59 bool transfer_started_ = false;
61 bool x_flip = false;
62 bool y_flip = false;
63 bool priority_tile = false;
64
68 uint8_t current_palette_ = 0;
69
70 // Clipboard for Tile16 graphics
72 bool clipboard_has_data_ = false;
73
74 // Scratch space for Tile16 graphics (4 slots)
75 std::array<gfx::Bitmap, 4> scratch_space_;
76 std::array<bool, 4> scratch_space_used_ = {false, false, false, false};
77
80
81 std::array<uint8_t, 0x200> all_tiles_types_;
82
83 // Tile16 blockset for selecting the tile to edit
84 gui::Canvas blockset_canvas_{"blocksetCanvas", ImVec2(0x100, 0x4000),
87
88 // Canvas for editing the selected tile
89 gui::Canvas tile16_edit_canvas_{"Tile16EditCanvas", ImVec2(0x40, 0x40),
92
93 // Tile8 canvas to get the tile to drawing in the tile16_edit_canvas_
99
102
103 gui::Table tile_edit_table_{"##TileEditTable", 3, ImGuiTableFlags_Borders};
104
105 std::array<gfx::Bitmap, zelda3::kNumTile16Individual> *tile16_individual_ = nullptr;
106 std::vector<gfx::Bitmap> current_gfx_individual_;
107
110
111 absl::Status status_;
112
113 Rom *transfer_rom_ = nullptr;
115 std::array<gfx::Bitmap, kNumGfxSheets> transfer_gfx_;
116 absl::Status transfer_status_;
117};
118
119} // namespace editor
120} // namespace yaze
121
122#endif // YAZE_APP_EDITOR_TILE16EDITOR_H
The Rom class is used to load, save, and modify Rom data.
Definition rom.h:59
SharedRom()=default
Allows the user to view and edit in game palettes.
absl::Status SaveTile16ToScratchSpace(int slot)
util::NotifyValue< uint32_t > notify_tile16
absl::Status UpdateTransferTileCanvas()
std::array< uint8_t, 0x200 > all_tiles_types_
absl::Status PasteTile16FromClipboard()
absl::Status LoadTile16FromScratchSpace(int slot)
absl::Status UpdateTile16Transfer()
absl::Status Initialize(const gfx::Bitmap &tile16_blockset_bmp, const gfx::Bitmap &current_gfx_bmp, std::array< uint8_t, 0x200 > &all_tiles_types)
absl::Status SetCurrentTile(int id)
std::array< gfx::Bitmap, 4 > scratch_space_
std::array< gfx::Bitmap, zelda3::kNumTile16Individual > * tile16_individual_
Tile16Editor(std::array< gfx::Bitmap, zelda3::kNumTile16Individual > &tile16_individual)
absl::Status DrawToCurrentTile16(ImVec2 pos)
zelda3::Overworld transfer_overworld_
std::vector< gfx::Bitmap > current_gfx_individual_
absl::Status CopyTile16ToClipboard(int tile_id)
std::array< gfx::Bitmap, kNumGfxSheets > transfer_gfx_
absl::Status ClearScratchSpace(int slot)
std::array< bool, 4 > scratch_space_used_
util::NotifyValue< uint8_t > notify_palette
Represents a bitmap image.
Definition bitmap.h:66
Shared graphical context across editors.
Represents a palette of colors for the Super Nintendo Entertainment System (SNES).
Represents a canvas for drawing and manipulating graphics.
Definition canvas.h:36
A class to manage a value that can be modified and notify when it changes.
Definition notify.h:13
Represents the full Overworld data, light and dark world.
Definition overworld.h:112
Editors are the view controllers for the application.
constexpr int kTilesheetHeight
Definition snes_tile.h:16
constexpr int kTilesheetWidth
Definition snes_tile.h:15
Main namespace for the application.
Definition controller.cc:18