yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
overworld_toolbar.h
Go to the documentation of this file.
1#ifndef YAZE_APP_EDITOR_OVERWORLD_OVERWORLD_TOOLBAR_H
2#define YAZE_APP_EDITOR_OVERWORLD_OVERWORLD_TOOLBAR_H
3
4#include <functional>
5#include <string>
6
9#include "imgui/imgui.h"
10#include "rom/rom.h"
12
13namespace yaze::project {
14struct YazeProject;
15} // namespace yaze::project
16
17namespace yaze::editor {
18
19class ShortcutManager;
20class WorkspaceWindowManager;
21
24 static constexpr const char* kCanvas = "overworld.canvas";
25 static constexpr const char* kTile16Editor = "overworld.tile16_editor";
26 static constexpr const char* kTile16Selector = "overworld.tile16_selector";
27 static constexpr const char* kTile8Selector = "overworld.tile8_selector";
28 static constexpr const char* kAreaGraphics = "overworld.area_graphics";
29 static constexpr const char* kGfxGroups = "overworld.gfx_groups";
30 static constexpr const char* kUsageStats = "overworld.usage_stats";
31 static constexpr const char* kItemList = "overworld.item_list";
32 static constexpr const char* kScratchSpace = "overworld.scratch";
33 static constexpr const char* kMapProperties = "overworld.properties";
34 static constexpr const char* kV3Settings = "overworld.v3_settings";
35 static constexpr const char* kDebugWindow = "overworld.debug";
36};
37
42 public:
43 OverworldToolbar() = default;
44
45 void Draw(int& current_world, int& current_map, bool& current_map_lock,
46 EditingMode& current_mode, EntityEditMode& entity_edit_mode,
47 WorkspaceWindowManager* window_manager, Rom* rom,
48 zelda3::Overworld* overworld, project::YazeProject* project,
49 int game_state, const std::function<void()>& draw_appearance = {});
50
53
54 std::function<void(int)> on_world_changed;
55 std::function<void(int)> on_story_changed;
56 std::function<void(EditingMode)> on_set_mode;
57 std::function<void(EntityEditMode)> on_set_entity_mode;
58 std::function<void()> on_insert_item;
59 std::function<void()> on_open_map_properties;
60
61 // View
62 std::function<void()> on_toggle_overlay_preview;
63 std::function<bool()> is_overlay_preview_enabled;
64 std::function<void()> on_toggle_grid;
65 std::function<bool()> is_grid_visible;
66 std::function<void()> on_toggle_entities;
67 std::function<bool()> are_entities_visible;
68 std::function<void()> on_zoom_in;
69 std::function<void()> on_zoom_out;
70 std::function<void()> on_zoom_fit;
71 std::function<void()> on_center_map;
72 std::function<float()> get_zoom;
73
74 // ROM version upgrade callback (vanilla ROMs only)
75 std::function<void(int)> on_upgrade_rom_version;
76
77 private:
79 std::string WithHint(const char* text, const char* shortcut_name) const;
80
81 void DrawViewControls(bool in_menu);
82};
83
84} // namespace yaze::editor
85
86#endif // YAZE_APP_EDITOR_OVERWORLD_OVERWORLD_TOOLBAR_H
The Rom class is used to load, save, and modify Rom data. This is a generic SNES ROM container and do...
Definition rom.h:49
ShortcutManager * shortcuts
Used for shortcut hints in tooltips (GetDisplayString).
std::function< bool()> are_entities_visible
std::function< void()> on_insert_item
std::function< void()> on_zoom_fit
std::function< void()> on_center_map
std::function< void(int)> on_upgrade_rom_version
std::string WithHint(const char *text, const char *shortcut_name) const
"Label (Shortcut)" when the shortcut is bound, else "Label".
void Draw(int &current_world, int &current_map, bool &current_map_lock, EditingMode &current_mode, EntityEditMode &entity_edit_mode, WorkspaceWindowManager *window_manager, Rom *rom, zelda3::Overworld *overworld, project::YazeProject *project, int game_state, const std::function< void()> &draw_appearance={})
std::function< float()> get_zoom
std::function< void(int)> on_story_changed
std::function< bool()> is_overlay_preview_enabled
std::function< void(int)> on_world_changed
std::function< void()> on_zoom_in
std::function< void()> on_open_map_properties
std::function< void()> on_zoom_out
std::function< void()> on_toggle_grid
std::function< void()> on_toggle_entities
std::function< bool()> is_grid_visible
std::function< void()> on_toggle_overlay_preview
std::function< void(EntityEditMode)> on_set_entity_mode
std::function< void(EditingMode)> on_set_mode
Central registry for all editor cards with session awareness and dependency injection.
Editors are the view controllers for the application.
Panel IDs for overworld editor panels.
static constexpr const char * kMapProperties
static constexpr const char * kTile8Selector
static constexpr const char * kAreaGraphics
static constexpr const char * kV3Settings
static constexpr const char * kItemList
static constexpr const char * kScratchSpace
static constexpr const char * kTile16Editor
static constexpr const char * kTile16Selector
static constexpr const char * kCanvas
static constexpr const char * kDebugWindow
static constexpr const char * kGfxGroups
static constexpr const char * kUsageStats
Modern project structure with comprehensive settings consolidation.
Definition project.h:287