yaze 0.2.0
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 <cmath>
5
6#include "absl/status/status.h"
7#include "absl/status/statusor.h"
8#include "app/core/common.h"
12#include "app/gfx/bitmap.h"
14#include "app/gfx/snes_tile.h"
15#include "app/gfx/tilesheet.h"
16#include "app/gui/canvas.h"
17#include "app/gui/icons.h"
18#include "app/rom.h"
20#include "imgui/imgui.h"
21
22namespace yaze {
23namespace app {
24namespace editor {
25
30 public:
31 absl::Status InitBlockset(const gfx::Bitmap& tile16_blockset_bmp,
32 const gfx::Bitmap& current_gfx_bmp,
33 const std::vector<gfx::Bitmap>& tile16_individual,
34 uint8_t all_tiles_types[0x200]);
35
36 absl::Status Update();
37 absl::Status DrawMenu();
38
39 void DrawTile16Editor();
40 absl::Status UpdateTile16Transfer();
41 absl::Status UpdateBlockset();
42
43 absl::Status DrawToCurrentTile16(ImVec2 pos);
44
45 absl::Status UpdateTile16Edit();
46
47 absl::Status DrawTileEditControls();
48
49 absl::Status UpdateTransferTileCanvas();
50
51 absl::Status LoadTile8();
52
53 absl::Status SetCurrentTile(int id);
54
55 private:
57 bool transfer_started_ = false;
59
62 uint8_t current_palette_ = 0;
63
66
67 // Various options for the Tile16 Editor
68 bool x_flip;
69 bool y_flip;
72
74
75 // Tile16 blockset for selecting the tile to edit
76 gui::Canvas blockset_canvas_{"blocksetCanvas", ImVec2(0x100, 0x4000),
79
80 // Canvas for editing the selected tile
81 gui::Canvas tile16_edit_canvas_{"Tile16EditCanvas", ImVec2(0x40, 0x40),
84
85 // Tile8 canvas to get the tile to drawing in the tile16_edit_canvas_
91
94
95 std::vector<std::vector<uint8_t>> tile16_individual_data_;
96 std::vector<gfx::Bitmap> tile16_individual_;
97
98 std::vector<gfx::Bitmap> current_gfx_individual_;
99
100 std::vector<uint8_t> current_tile16_data_;
101
102 std::vector<uint8_t> tile8_gfx_data_;
103
105
108
109 absl::Status status_;
110
112 absl::Status transfer_status_;
113};
114
115} // namespace editor
116} // namespace app
117} // namespace yaze
118#endif // YAZE_APP_EDITOR_TILE16EDITOR_H
The Rom class is used to load, save, and modify Rom data.
Definition rom.h:145
A class to hold a shared pointer to a Rom object.
Definition rom.h:585
A class to manage a value that can be modified and notify when it changes.
Definition common.h:160
Allows the user to view and edit in game palettes.
Popup window to edit Tile16 data.
core::NotifyValue< uint8_t > notify_palette
std::vector< uint8_t > current_tile16_data_
std::vector< uint8_t > tile8_gfx_data_
std::vector< gfx::Bitmap > current_gfx_individual_
absl::Status DrawToCurrentTile16(ImVec2 pos)
absl::Status SetCurrentTile(int id)
std::vector< std::vector< uint8_t > > tile16_individual_data_
absl::Status InitBlockset(const gfx::Bitmap &tile16_blockset_bmp, const gfx::Bitmap &current_gfx_bmp, const std::vector< gfx::Bitmap > &tile16_individual, uint8_t all_tiles_types[0x200])
std::vector< gfx::Bitmap > tile16_individual_
zelda3::overworld::Overworld transfer_overworld_
core::NotifyValue< uint32_t > notify_tile16
Shared graphical context across editors.
Definition gfx_context.h:25
Represents a bitmap image.
Definition bitmap.h:70
Represents a palette of colors for the Super Nintendo Entertainment System (SNES).
Represents a canvas for drawing and manipulating graphics.
Definition canvas.h:36
Represents the full Overworld data, light and dark world.
Definition overworld.h:447
constexpr int kTilesheetWidth
Definition snes_tile.h:14
constexpr int kTilesheetHeight
Definition snes_tile.h:15
Definition common.cc:21