1#ifndef YAZE_APP_EDITOR_OVERWORLDEDITOR_H
2#define YAZE_APP_EDITOR_OVERWORLDEDITOR_H
4#include "absl/status/status.h"
16#include "imgui/imgui.h"
21constexpr unsigned int k4BPP = 4;
35 ImGuiTableFlags_Borders | ImGuiTableFlags_Resizable;
38 ImGuiTableFlags_Resizable | ImGuiTableFlags_Reorderable |
39 ImGuiTableFlags_Hideable | ImGuiTableFlags_BordersOuter |
40 ImGuiTableFlags_BordersV;
42static constexpr absl::string_view kToolsetColumnNames[] = {
43 "#undoTool",
"#redoTool",
"#separator2",
"#zoomOutTool",
44 "#zoomInTool",
"#separator",
"#drawTool",
"#history",
45 "#entranceTool",
"#exitTool",
"#itemTool",
"#spriteTool",
46 "#transportTool",
"#musicTool",
"#separator3",
"#tilemapTool",
47 "propertiesTool",
"#separator4",
"#experimentalTool",
"#properties",
51 "Light World\0Dark World\0Extra World\0";
81 absl::Status
Update() final;
82 absl::Status
Undo()
override {
return absl::UnimplementedError(
"Undo"); }
83 absl::Status
Redo()
override {
return absl::UnimplementedError(
"Redo"); }
84 absl::Status
Cut()
override {
return absl::UnimplementedError(
"Cut"); }
85 absl::Status
Copy()
override {
return absl::UnimplementedError(
"Copy"); }
86 absl::Status
Paste()
override {
return absl::UnimplementedError(
"Paste"); }
87 absl::Status
Find()
override {
88 return absl::UnimplementedError(
"Find Unused Tiles");
125 const std::vector<uint8_t>& tile_data);
233 std::array<gfx::Bitmap, zelda3::kNumOverworldMaps>
maps_bmp_;
The Rom class is used to load, save, and modify Rom data.
Manage graphics group configurations in a Rom.
gui::zeml::Node layout_node_
zelda3::OverworldItem current_item_
bool overworld_canvas_fullscreen_
bool map_blockset_loaded_
absl::Status UpdateUsageStats()
bool selected_tile_loaded_
zelda3::OverworldEntranceTileTypes entrance_tiletypes_
zelda3::OverworldEntrance current_entrance_
OverworldEditor(Rom &rom)
zelda3::Sprite current_sprite_
absl::Status CheckForCurrentMap()
Check for changes to the overworld map. Calls RefreshOverworldMap and RefreshTile16Blockset on the cu...
void DrawOverworldEdits()
absl::Status Cut() override
gfx::Bitmap current_gfx_bmp_
zelda3::OverworldBlockset refresh_blockset_
gfx::Bitmap selected_tile_bmp_
bool middle_mouse_dragging_
std::vector< gfx::Bitmap > tile8_individual_
Tile16Editor tile16_editor_
gui::Canvas ow_map_canvas_
void DrawOverworldExits(ImVec2 zero, ImVec2 scrolling)
absl::Status Undo() override
void DrawOverworldItems()
zelda3::GameEntity * dragged_entity_
std::array< gfx::Bitmap, zelda3::kNumOverworldMaps > maps_bmp_
void RefreshOverworldMap()
void CheckForOverworldEdits()
Check for changes to the overworld map.
zelda3::OverworldExit current_exit_
std::vector< std::vector< uint8_t > > tile8_individual_data_
void RefreshMapProperties()
void RenderUpdatedMapBitmap(const ImVec2 &click_position, const std::vector< uint8_t > &tile_data)
gui::Canvas current_gfx_canvas_
void DrawCustomOverworldMapSettings()
absl::Status DrawTileSelector()
absl::Status Redo() override
void DrawFullscreenCanvas()
void DrawOverworldProperties()
absl::Status RefreshMapPalette()
void DrawOverworldMapSettings()
void DrawOverworldCanvas()
gui::Canvas blockset_canvas_
absl::Status RefreshTile16Blockset()
void CheckForSelectRectangle()
Draw and create the tile16 IDs that are currently selected.
void RefreshChildMap(int i)
std::vector< gfx::Bitmap > sprite_previews_
absl::Status Copy() override
absl::Status DrawAreaGraphics()
PaletteEditor palette_editor_
GfxGroupEditor gfx_group_editor_
absl::Status Update() final
void DrawOverworldSprites()
absl::Status Paste() override
std::vector< uint8_t > selected_tile_data_
EditingMode previous_mode
gui::Table toolset_table_
gui::Canvas graphics_bin_canvas_
gfx::BitmapTable current_graphics_set_
zelda3::Overworld overworld_
absl::Status LoadGraphics()
Load the Bitmap objects for each OverworldMap.
absl::Status Find() override
std::array< gfx::Bitmap, zelda3::kNumTile16Individual > tile16_individual_
absl::Status LoadSpriteGraphics()
void DrawOverworldEntrances(ImVec2 canvas_p, ImVec2 scrolling, bool holes=false)
zelda3::GameEntity * current_entity_
gui::Table map_settings_table_
gui::Canvas properties_canvas_
gfx::SnesPalette palette_
gfx::Bitmap tile16_blockset_bmp_
absl::Status DrawTile16Selector()
Allows the user to view and edit in game palettes.
Popup window to edit Tile16 data.
Represents a bitmap image.
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.
Base class for all overworld and dungeon entities.
Represents the full Overworld data, light and dark world.
A class for managing sprites in the overworld and underworld.
Editors are the view controllers for the application.
constexpr ImVec2 kOverworldCanvasSize(kOverworldMapSize *8, kOverworldMapSize *8)
constexpr absl::string_view kOWMapTable
constexpr ImGuiTableFlags kOWMapFlags
constexpr unsigned int kOverworldMapSize
constexpr unsigned int kTile8DisplayHeight
constexpr absl::string_view kWorldList
constexpr absl::string_view kGamePartComboString
constexpr ImGuiTableFlags kToolsetTableFlags
constexpr unsigned int kNumSheetsToLoad
constexpr ImVec2 kCurrentGfxCanvasSize(0x100+1, 0x10 *0x40+1)
constexpr ImVec2 kBlocksetCanvasSize(0x100+1, 0x4000+1)
constexpr ImVec2 kGraphicsBinCanvasSize(0x100+1, kNumSheetsToLoad *0x40+1)
constexpr unsigned int kByteSize
constexpr ImGuiTableFlags kOWEditFlags
constexpr absl::string_view kOWEditTable
constexpr float kInputFieldSize
constexpr absl::string_view kTileSelectorTab
constexpr unsigned int k4BPP
constexpr unsigned int kMessageIdSize
std::unordered_map< int, gfx::Bitmap > BitmapTable
std::vector< std::vector< uint16_t > > OverworldBlockset
Represents tile32 data for the overworld.
Main namespace for the application.