- Added methods for object selection rectangle handling, including CheckForObjectSelection, DrawObjectSelectRect, and SelectObjectsInRect.
- Enhanced DungeonEditor to support right-click drag selection for multiple objects, improving user interaction and object management.
- Updated the UI in DungeonObjectSelector to optimize object previews and improve layout for better visibility.
- Refactored various sections of DungeonEditor for code clarity and consistency, including adjustments to object rendering and selection processes.
- Deleted the `dungeon-integration-tests.md` file, which contained comprehensive integration tests for the dungeon object rendering system.
- Added `dungeon-object-system.md`, detailing the architecture, object types, placement processes, rendering pipeline, and user interface components of the YAZE Dungeon Object System.
- Enhanced the DungeonEditor and DungeonObjectSelector with improved UI methods and object selection callbacks for better user interaction and object management.
- Replaced vertical separators with standard separators in the EditorManager's menu bar for consistency.
- Introduced a new room selection callback mechanism in DungeonRoomSelector to facilitate room selection events.
- Enhanced DungeonEditor with drag-and-select functionality for object placement, improving user interaction.
- Added an object browser in DungeonObjectSelector for better object management and preview capabilities.
- Streamlined object rendering and selection processes, ensuring a more intuitive editing experience.
- Enhanced the ApplyZSCustomOverworldASM method to validate target versions, check current ROM status, and apply ASM patches with error handling.
- Introduced UpdateROMVersionMarkers method to update ROM version markers and enable feature flags based on the applied version.
- Added logging for successful patch applications and symbol discoveries, improving traceability during the patching process.
- Included backup and restore functionality for ROM data during ASM application to ensure data integrity.
- Added performance logging to the LoadAssets method in EditorManager, tracking the time taken to load ROM assets.
- Implemented lazy loading of workspace presets in the DrawLayoutPresets method to improve UI responsiveness.
- Refactored menu item handling in the DrawMenu function to streamline the display of subitems and separators, enhancing user interaction.
- Introduced session renaming functionality, allowing users to customize session names for better organization.
- Implemented duplicate session detection to prevent loading the same ROM in multiple sessions.
- Enhanced workspace preset management with improved error handling and validation during loading and saving.
- Updated UI elements to support lazy loading of workspace presets, ensuring they are available when needed.
- Refactored session display logic to provide clearer naming and improved user experience in session management.
- Added logging to track ROM changes in EditorManager, ensuring TestManager is updated with the current ROM.
- Implemented real-time ROM status checks in TestManager for better debugging and user feedback.
- Introduced a dialog for creating and managing test ROM sessions, allowing users to open modified ROMs easily.
- Enhanced the testing framework with methods for creating test ROM copies and generating filenames with timestamps.
- Improved the overall user interface of the TestManager, including a more informative dashboard and session management options.
- Added new menu options in EditorManager for ROM analysis and testing, including data integrity checks and save/load testing.
- Updated TestManager to include enhanced logging for ROM state and new actions for refreshing the current ROM reference.
- Introduced a dedicated UI for displaying ROM test results and options for running tests on the currently loaded ROM.
- Improved the overall layout and organization of the testing dashboard for better user experience and accessibility.
- Enhanced the DrawMenuBar method in EditorManager to improve the alignment and display of version information and session management.
- Updated the button size in MapPropertiesSystem for better usability.
- Introduced detailed ROM availability checks in RomDependentTestSuite, improving error handling and test coverage.
- Enhanced the TestManager UI to provide a more informative dashboard with detailed ROM status and actions, including a refresh option for the current ROM reference.
- Commented out the ArenaTestSuite registration in EditorManager with a TODO for future implementation.
- Updated the DrawMenuBar method in EditorManager to enhance version display alignment and tooltip functionality.
- Modified OverworldEditor to include error handling for ASM application and commented out the Asar wrapper for build compatibility.
- Enhanced Tile16Editor with additional bounds checks and error handling to ensure robustness during tile operations.
- Introduced new test cases in RomDependentTestSuite for Tile16Editor functionality and comprehensive save operations, improving test coverage.
- Added context-aware options in the EditorManager for refreshing overworld and dungeon data, improving user interaction.
- Streamlined the OverworldEditor by removing redundant menu bars and integrating refresh options directly into the context menu.
- Improved the Tile16Editor by scaling tile displays for better visibility and enhancing the blockset canvas functionality.
- Introduced new bitmap property dialogs in the Canvas class, allowing users to view and edit bitmap and palette properties directly from the context menu.
- Refactored various UI elements for consistency and clarity, enhancing overall user experience.
- Introduced a new feature flag to enable the application of ZSCustomOverworld ASM patches when upgrading ROM versions.
- Updated the OverworldEditor to include a dialog for upgrading ROM versions, with options to apply ASM patches based on the feature flag.
- Enhanced the DrawOverworldMapSettings method to dynamically adjust UI elements based on the ROM version and provide upgrade options.
- Implemented the ApplyZSCustomOverworldASM method to handle the patch application process, including error handling and logging.
- Updated feature flags display in the UI to reflect the new ASM patch application option, improving user experience and functionality.
- Added functionality for creating, duplicating, and closing sessions, enhancing user experience with multiple ROMs.
- Integrated session management UI elements, including a session switcher and session manager, for better navigation.
- Introduced workspace layout management features, allowing users to save and load layouts, and reset to defaults.
- Updated popup manager to include workspace help and session limit warnings, improving user guidance.
- Enhanced UI drawing functions to support new session and layout management features, ensuring a cohesive user interface.
- Added a new RomDependentTestSuite to facilitate testing functionalities that rely on the currently loaded ROM, enhancing test coverage.
- Updated EditorManager to register the new test suite and manage the current ROM for dependent tests.
- Enhanced the IntegratedTestSuite to first check for a loaded ROM before proceeding with tests, improving robustness.
- Improved the TestManager UI to indicate ROM loading status and provide feedback for running ROM-dependent tests.
- Updated CMake configuration to include the new test suite header, ensuring proper integration into the build system.
- Conditionally include Google Test support in the build configuration, allowing for integrated testing when enabled.
- Refactor ImGui Test Engine setup to be conditional based on the YAZE_ENABLE_UI_TESTS flag, improving modularity.
- Update EditorManager to register new test suites, including integrated and performance tests, enhancing test coverage.
- Improve the test dashboard UI with additional options for filtering and viewing test results, providing a better user experience.
- Introduce a new integrated test suite for comprehensive testing of core functionalities, ensuring robustness and reliability.
- Added a comprehensive testing framework with support for unit, integration, and UI tests, improving overall test coverage and reliability.
- Integrated ImGui Test Engine for UI testing, allowing for real-time feedback and visualization of test results.
- Updated CMake configuration to conditionally include testing components based on build options, enhancing flexibility for developers.
- Introduced a new command in the CLI for running asset loading tests on ROMs, providing a straightforward way to validate functionality.
- Enhanced error handling and resource management during testing, ensuring stability and clarity in test execution.
- Improved user interface with a dedicated test dashboard for monitoring test progress and results, enhancing developer experience.
- Updated CMakeLists.txt to set a minimum required version of 3.5 and removed older policy settings for improved compatibility.
- Enhanced yaze.h and zelda.h with detailed documentation, including versioning information and API descriptions, to improve clarity for developers.
- Added new functions for version compatibility checks and improved error handling in the YAZE API.
- Refactored existing structures and enums for better readability and maintainability, ensuring a more consistent coding style.
- Introduced conditional compilation for PNG clipboard operations in graphics_editor.cc, providing user feedback when PNG support is disabled.
- Added <cstring> header in file_dialog.cc to support string manipulation functions, enhancing functionality.
- Implemented conditional compilation for image copy and retrieval functions in clipboard.cc, clipboard.h, and clipboard.mm, enabling PNG support when YAZE_LIB_PNG is defined.
- Updated graphics_editor.cc and overworld_editor.cc to handle PNG data copying to the clipboard, including error handling for cases when PNG support is disabled.
- Enhanced user feedback by providing alternative actions when PNG export is unavailable, improving overall user experience.
- Updated CommandManager to replace the recursive CommandInfoOrPrefix structure with a simplified CommandGroup structure, enhancing clarity and usability.
- Modified ShowWhichKey, SaveKeybindings, and LoadKeybindings methods to accommodate the new command structure, ensuring consistent handling of main commands and their associated subcommands.
- Improved code readability and maintainability by streamlining command registration and execution processes.
- Introduced a detailed design plan document for the Yaze Dungeon Editor, outlining the current architecture, main components, and core systems.
- Documented identified issues and applied fixes, including crash prevention and UI simplification, along with a roadmap for future development phases.
- Enhanced clarity on the implementation guidelines, testing strategies, and performance considerations to support ongoing development efforts.
- Established a structured approach for new developers to understand the codebase and contribute effectively to the project.
- Introduced new classes for DungeonRoomSelector and DungeonObjectSelector to enhance room and object management within the dungeon editor.
- Implemented UI components for selecting rooms and entrances, allowing users to easily navigate and manage dungeon layouts.
- Added functionality for rendering room graphics and object previews, improving the visual editing experience.
- Updated the DungeonEditor class to integrate the new selectors, streamlining the overall editing workflow.
- Enhanced error handling and validation in room and object management processes to ensure robust functionality.
- Refactored the DungeonEditor class to include new methods for loading and rendering room graphics, improving the overall graphics management system.
- Introduced LoadAndRenderRoomGraphics and ReloadAllRoomGraphics methods to streamline the loading process for room graphics.
- Updated the UI to provide buttons for loading room graphics and reloading all graphics, enhancing user interaction.
- Improved background rendering logic by adding RenderRoomBackgroundLayers, ensuring proper layering of graphics.
- Adjusted data types in UI text displays for better accuracy and consistency in rendering information.
- Introduced a new documentation file detailing the Yaze Dungeon Editor, covering its architecture, core components, coordinate system, object rendering system, user interface, and integration with ZScream.
- Included sections on usage examples, testing and validation strategies, and future enhancements to provide a complete overview of the editor's capabilities.
- Removed the outdated dungeon object rendering refactor documentation to streamline resources and focus on the comprehensive guide.
- Enhanced clarity and organization of the documentation to support both novice and expert users in effectively utilizing the dungeon editing tools.
- Introduced a new DungeonEditorSystem to streamline dungeon editing functionalities, including room properties management and object editing.
- Enhanced the DungeonEditor class to initialize the new editor system and manage room properties effectively.
- Added comprehensive object editing capabilities with a dedicated DungeonObjectEditor, supporting object insertion, deletion, and real-time preview.
- Implemented improved UI components for editing dungeon settings, including integrated editing panels for various object types.
- Enhanced error handling and validation throughout the dungeon editing process to ensure robust functionality.
- Updated integration tests to cover new features and validate the overall performance of the dungeon editing system.
- Updated the DrawSimplifiedMapSettings method to streamline the layout and enhance usability with new UI constants for table and button dimensions.
- Removed the Tools popup from the MapPropertiesSystem, consolidating editing functionalities for a cleaner interface.
- Enhanced the DrawGraphicsPopup and DrawPalettesPopup methods with custom input widths for better alignment and user experience.
- Improved the organization of map properties sections, adding clear headers for Basic Properties, Area Configuration, and Visual Effects.
- Adjusted button functionalities and hover hints for better user guidance and interaction.
- Updated the DrawOverworldEntrancePopup to include new options for deleting entrances and improved UI labels for better clarity.
- Integrated new UI constants for consistent styling across the editor.
- Refactored MapPropertiesSystem to support additional toolset functionalities, including editing tools and view controls.
- Improved overlay handling in OverworldMap, consolidating vanilla and custom overlay loading logic.
- Enhanced user interaction with new buttons and streamlined layout for better usability in the editor.
- Changed the included assembly file for custom overworld to version 3 for improved features.
- Enhanced documentation in the overworld loading guide to clarify overlay effects and configurations.
- Refactored MapPropertiesSystem to support overlay previews and improved mosaic controls.
- Added functionality for loading vanilla overlays and displaying overlay descriptions in the editor.
- Updated UI components in OverworldEditor to integrate new overlay settings and preview options.
- Updated the MapPropertiesSystem to improve the layout of the simplified map settings table, increasing column widths for better visibility and usability.
- Adjusted button sizes in the OverworldEditor for Graphics, Palettes, Overlays, and Properties to enhance user interaction.
- Implemented filtering of sprites in the OverworldEditor based on the current world, ensuring only relevant sprites are displayed.
- Refactored sprite drawing logic to utilize global coordinates directly, improving accuracy in sprite rendering.
- Introduced MapPropertiesSystem class to manage map properties, including settings for area size, graphics, palettes, and overlays.
- Implemented UI components for drawing map properties, allowing users to customize map settings through a dedicated panel.
- Enhanced OverworldEditor to integrate map properties functionality, providing quick access to map settings via context menus and UI interactions.
- Added support for custom background colors and overlays, improving the overall customization experience for users.
- Updated OverworldEditor to include new table columns for CopyMap, MapLock, CustomBG, and Overlay, improving user interaction and customization options.
- Implemented DrawCustomBackgroundColorEditor and DrawOverlayEditor methods for managing custom background colors and overlay settings, respectively.
- Added context menu functionality for map locking and quick access to map properties, enhancing usability.
- Refactored OverworldMap to support new features related to animated graphics and subscreen overlays, ensuring compatibility with ZScreamCustomOverworld v3.
- Introduced ZScream Custom Overworld ASM to enhance customization of the ALTTP overworld, allowing users to modify various aspects such as palettes, backgrounds, and transitions.
- Updated OverworldEditor to include area size selection for v3 support, enabling users to choose between different area sizes (Small, Large, Wide, Tall).
- Enhanced OverworldMap to load area size information based on the applied ASM version, ensuring compatibility with expanded features.
- Implemented SaveAreaSizes method in Overworld to persist area size settings in the ROM, supporting the new customization capabilities.
- Refactored related classes and methods to accommodate the new area size logic and ensure seamless integration with existing functionalities.
- Introduced new object rendering features in DungeonEditor, allowing for improved visualization of dungeon objects with options to show outlines, render objects, and display object information.
- Implemented a caching mechanism for rendered objects to optimize performance.
- Added functionality to load and manage room layouts, including walls, floors, and other structural elements, enhancing the overall editing experience.
- Refactored object handling in Room and RoomObject classes to support new rendering logic and ensure compatibility with the updated layout system.
- Introduced ObjectParser for efficient parsing of object data directly from ROM, improving reliability and performance in object rendering.
- Added DrawDungeonMapScreen method to encapsulate the logic for rendering the dungeon map, improving code organization and readability.
- Refactored DrawDungeonMapsTabs to utilize the new DrawDungeonMapScreen method, reducing code duplication.
- Updated various drawing operations for better clarity and efficiency, including adjustments to tile rendering and grid display.
- Removed commented-out code to clean up the implementation.
- Introduced SharedClipboard struct in EditorContext to manage cross-session clipboard data.
- Implemented Copy and Paste methods in OverworldEditor to handle tile16 selections and transfers.
- Enhanced clipboard management to support both rectangular selections and single tile copies.
- Added error handling for clipboard operations to ensure robust functionality.
- Added LoadUserSettings and SaveUserSettings methods to handle user preferences such as font scaling and autosave settings.
- Introduced RefreshWorkspacePresets, SaveWorkspacePreset, and LoadWorkspacePreset methods for managing workspace layout presets.
- Integrated autosave functionality with a timer and user notifications via ToastManager.
- Enhanced the UI with options for saving/loading workspace presets and adjusting autosave settings.
- Implemented ToastManager to manage and display toast notifications with different types (info, success, warning, error).
- Introduced a Toast struct to encapsulate message details and time-to-live (TTL) for each notification.
- Integrated ImGui for rendering notifications on the screen, allowing for dynamic updates and automatic removal based on TTL.
- Replaced the previous ROM management system with a RomSession structure to encapsulate ROM and editor set data.
- Streamlined the initialization and loading processes for ROMs, reducing memory overhead and improving clarity.
- Updated methods to reference the new RomSession structure, enhancing maintainability and readability.
- Removed unused editor set management code, simplifying the overall architecture of the EditorManager.
- Introduced yaze_load_messages function to load messages from ROM data, enhancing message management.
- Updated message data structures to use std::string_view for improved performance and clarity.
- Refactored message parsing logic to utilize modern C++ features like ranges and optional, improving readability.
- Adjusted various functions to streamline message handling and ensure consistency across the codebase.
- Removed unused functions and streamlined shortcut registration in EditorManager for better readability.
- Updated lambda captures to use 'this' pointer for consistency and clarity.
- Refactored DungeonEditor to utilize ranges for sorting and filling operations, enhancing performance and readability.
- Simplified table setup in DungeonEditor by using a static array for tool names, improving maintainability.
- Eliminated the SharedRom class to enhance modularity and reduce global state management.
- Updated various classes to directly manage ROM instances, improving clarity and encapsulation.
- Added new functions for loading messages and colors from ROM, enhancing functionality.
- Refactored Canvas and Editor classes to utilize direct ROM references, streamlining interactions.
- Improved documentation and comments for better code understanding and maintainability.
- Replaced platform backend references with a dedicated Window class for better encapsulation of window and audio device management.
- Updated various files to include the new window header, enhancing clarity and reducing dependencies on the platform backend.
- Removed obsolete platform backend code to streamline the codebase and improve maintainability.
- Refactored controller and editor classes to utilize the new window management system, ensuring consistent handling of window creation and rendering.
- Updated namespace usage to yaze::editor for consistency.
- Replaced string search methods with contains and ranges::find for better clarity and performance.
- Simplified Load function in AssemblyEditor for conciseness.
- Enhanced OverworldEditor by consolidating GUI element bindings and improving input handling.
- Refactored toolset drawing logic to streamline the editor interface and improve user experience.
- Updated various graphics loading functions to ensure consistent use of semicolons in ASSIGN_OR_RETURN statements.
- Changed set_filename method in Rom class to accept std::string_view for improved efficiency.
- Enhanced code readability and maintainability across multiple files by standardizing syntax.
- Introduced a new SaveSettings struct to encapsulate parameters for the SaveToFile method, improving clarity and maintainability.
- Updated SaveToFile method signature to accept SaveSettings instead of individual parameters.
- Adjusted SaveRom method in EditorManager to utilize the new SaveSettings struct for better parameter management.
- Removed redundant label loading from LoadFromFile when z3_load is true, streamlining the loading process.
- Updated tab item handling in GraphicsEditor and ScreenEditor to ensure proper opening and closing of tab items.
- Improved layout management by replacing deprecated macros with ImGui table functions for better readability and maintainability.
- Adjusted palette display function signature in color handling to return a boolean for success status instead of absl::Status.
- Enhanced tile rendering functions for consistency and clarity in the graphics editing workflow.