yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
overworld_view.h
Go to the documentation of this file.
1#ifndef YAZE_APP_EDITOR_OVERWORLD_OVERWORLD_VIEW_H
2#define YAZE_APP_EDITOR_OVERWORLD_OVERWORLD_VIEW_H
3
4#include <array>
5#include <memory>
6#include <vector>
7
13
14namespace yaze::editor {
15
16class OverworldEditor;
17class OverworldCanvasRenderer;
18class OverworldEntityRenderer;
19class CanvasNavigationManager;
20
30 public:
31 explicit OverworldView(OverworldEditor* editor);
33
34 void Initialize();
35
36 // ===========================================================================
37 // Canvases
38 // ===========================================================================
39
46
47 // ===========================================================================
48 // Graphics Data
49 // ===========================================================================
50
56 std::array<gfx::Bitmap, zelda3::kNumOverworldMaps> maps_bmp;
58 std::vector<gfx::Bitmap> sprite_previews;
59
60 // ===========================================================================
61 // State
62 // ===========================================================================
63
64 bool all_gfx_loaded = false;
65 bool map_blockset_loaded = false;
66
67 // ===========================================================================
68 // Scratch Space System (Unified Single Workspace)
69 // ===========================================================================
70
71 struct ScratchSpace {
73 std::array<std::array<int, 32>, 32> tile_data{};
74 bool in_use = false;
75 std::string name = "Scratch Space";
76 int width = 16;
77 int height = 16;
78 std::vector<ImVec2> selected_tiles;
79 std::vector<ImVec2> selected_points;
80 bool select_rect_active = false;
81 };
83
84 // ===========================================================================
85 // Components
86 // ===========================================================================
87
88 std::unique_ptr<gui::TileSelectorWidget> blockset_selector;
89 std::unique_ptr<OverworldCanvasRenderer> canvas_renderer;
90 std::unique_ptr<OverworldEntityRenderer> entity_renderer;
91 std::unique_ptr<CanvasNavigationManager> canvas_nav;
92
93 private:
95};
96
97} // namespace yaze::editor
98
99#endif // YAZE_APP_EDITOR_OVERWORLD_OVERWORLD_VIEW_H
Main UI class for editing overworld maps in A Link to the Past.
Encapsulates all rendering-specific state and components for the overworld editor.
std::array< gfx::Bitmap, zelda3::kNumOverworldMaps > maps_bmp
std::vector< gfx::Bitmap > sprite_previews
std::unique_ptr< OverworldCanvasRenderer > canvas_renderer
std::unique_ptr< gui::TileSelectorWidget > blockset_selector
std::unique_ptr< CanvasNavigationManager > canvas_nav
std::unique_ptr< OverworldEntityRenderer > entity_renderer
OverworldView(OverworldEditor *editor)
gfx::BitmapTable current_graphics_set
Represents a bitmap image optimized for SNES ROM hacking.
Definition bitmap.h:67
Represents a palette of colors for the Super Nintendo Entertainment System (SNES).
Modern, robust canvas for drawing and manipulating graphics.
Definition canvas.h:150
Editors are the view controllers for the application.
std::unordered_map< int, std::unique_ptr< gfx::Bitmap > > BitmapTable
Definition bitmap.h:497
std::array< std::array< int, 32 >, 32 > tile_data