#ifndef YAZE_APP_EDITOR_SCREEN_EDITOR_H #define YAZE_APP_EDITOR_SCREEN_EDITOR_H #include #include #include "app/asm/script.h" #include "app/core/constants.h" #include "app/gfx/bitmap.h" #include "app/gfx/snes_tile.h" #include "app/gfx/snes_palette.h" #include "app/rom.h" #include "app/zelda3/inventory.h" #include "gui/canvas.h" #include "gui/icons.h" #include "gui/color.h" namespace yaze { namespace app { namespace editor { using MosaicArray = std::array; static int overworldCustomMosaicASM = 0x1301D0; class ScreenEditor { public: ScreenEditor(); void SetupROM(ROM &rom) { rom_ = rom; inventory_.SetupROM(rom_); } void Update(); private: void DrawMosaicEditor(); void DrawTitleScreenEditor(); void DrawNamingScreenEditor(); void DrawOverworldMapEditor(); void DrawDungeonMapsEditor(); void DrawInventoryMenuEditor(); void DrawToolset(); void DrawInventoryToolset(); void DrawWorldGrid(int world, int h = 8, int w = 8); char mosaic_tiles_[core::kNumOverworldMaps]; ROM rom_; Bytes all_gfx_; zelda3::Inventory inventory_; gfx::SNESPalette palette_; snes_asm::Script mosaic_script_; gui::Canvas screen_canvas_; gui::Canvas tilesheet_canvas_; }; } // namespace editor } // namespace app } // namespace yaze #endif