Commit Graph

2128 Commits

Author SHA1 Message Date
scawful
90f8d8b915 Remove unused system editor files from YAZE project configuration
- Deleted references to `system_editor.cc` and `system_editor.h` from YAZE.vcxproj and YAZE.vcxproj.filters to clean up the project structure.
- Updated `room_object.cc` to use a direct assignment for `gfx::TileInfo` and commented out unused code in `room.cc` and `tracker.cc` for clarity and future reference.
2025-09-28 15:12:15 -04:00
scawful
97f00d3fc6 Add E2E and ZSCustomOverworld test suites for comprehensive testing
- Introduced new E2E test suite for comprehensive ROM testing, validating the complete ROM editing workflow.
- Added ZSCustomOverworld test suite to validate version upgrades and data integrity.
- Updated `EditorManager` to register the new test suites.
- Enhanced CMake configuration to include the new test files.
- Updated README to reflect the new testing capabilities and best practices for AI agent testing.
2025-09-28 15:11:31 -04:00
scawful
4b01d7be1d Add initial Visual Studio solution and project files
- Created a new Visual Studio solution file (YAZE.sln) to manage the project structure.
- Added a project file (YAZE.vcxproj) with configurations for Debug and Release builds across multiple platforms (Win32, x64, ARM64).
- Established initial project structure with relevant source and header files included for compilation.
- Updated theme manager to remove unnecessary logging statements, streamlining the code for better readability.
2025-09-28 12:08:11 -04:00
scawful
cb107ae69c Remove PNG and ZLIB support from the project
- Eliminated all references to PNG and ZLIB dependencies in CMake configuration and project files.
- Updated documentation to reflect the removal of PNG support and related functionalities.
- Adjusted build scripts and source files to remove unused code related to PNG handling, ensuring a cleaner codebase.
2025-09-28 12:03:29 -04:00
scawful
a0a2a40b47 Update LoadSystemFonts function to clarify Linux compatibility
- Added a comment to indicate that the LoadSystemFonts function is intended for loading Linux system fonts into ImGui.
- Maintained the function for compatibility while ensuring it does not perform any operations on Linux, as system font loading is now handled by NFD (Native File Dialog).
2025-09-28 01:49:04 -04:00
scawful
ff0e9c0cc3 Refactor font loading for Windows and Linux compatibility
- Removed Windows-specific font loading code to streamline the font loading process.
- Updated the LoadSystemFonts function to indicate that system font loading is now handled by NFD (Native File Dialog) for Linux.
- Maintained the function for compatibility while ensuring it does not perform any operations on Linux.
2025-09-28 01:46:14 -04:00
scawful
2a39cc644e Enhance Abseil integration and improve Windows font loading functionality
- Added additional Abseil flags modules to the CMake configuration for better support.
- Refactored Windows-specific font loading code to avoid namespace conflicts by using the `::` prefix for Windows API calls.
- Improved error handling and ensured proper memory management when retrieving font paths from the Windows registry.
2025-09-28 01:42:46 -04:00
scawful
f76fe312fb Refactor font loading logic in LoadSystemFonts function
- Improved buffer size calculations for font name and data to enhance safety and prevent overflow.
- Streamlined the maximum font loading limit to ensure efficient font management while maintaining clarity in the code.
2025-09-27 22:35:27 -04:00
scawful
505c91a97d Refactor GitHub Actions workflow for packaging and improve error handling
- Updated packaging commands in the release workflow to use Windows-compatible commands for copying files.
- Enhanced error handling for missing files and directories during the packaging process.
- Improved formatting of the Info.plist generation for better readability.
- Adjusted the shell used in the packaging step to be platform-specific, ensuring compatibility across different operating systems.
2025-09-27 22:09:06 -04:00
scawful
6dfc446e23 Refactor font initialization in LoadPackageFonts function
- Updated font configuration to include proper ImFontConfig initialization for each font entry in the font registry.
- Enhanced code clarity by adding comments to describe the initialization process.
2025-09-27 22:04:59 -04:00
scawful
660c3fd46f Enhance CMake configuration and improve string safety in source files
- Updated CMakeLists.txt to silence C++23 deprecation warnings and added definitions for intrinsic int128 support.
- Modified GitHub Actions workflow to handle missing asset directories gracefully and ensure correct versioning in Info.plist.
- Refactored string handling in multiple source files to use std::memcpy for safer string copying, preventing potential buffer overflows.
- Improved font loading logic and ensured consistent handling of theme properties in the editor.
2025-09-27 22:03:03 -04:00
scawful
332f050cf6 Update library directories and improve string handling in source files
- Added 'absl::numeric' to the AdditionalLibraryDirectories in yaze.vcxproj for enhanced functionality.
- Refactored string handling in multiple source files to use std::strncpy for safer string copying and prevent buffer overflows.
- Cleaned up unnecessary whitespace and improved code readability across various files.
2025-09-27 21:55:01 -04:00
scawful
a9f1a1637d Refactor font loading and enhance Windows font management
- Removed unused includes and improved code readability by renaming variables for clarity.
- Updated font size constants to use uppercase 'F' for consistency.
- Implemented helper functions for better handling of font paths and normalization.
- Enhanced the LoadSystemFonts function to load essential Windows fonts and added error handling for font loading failures.
- Streamlined the registry font loading process to ensure safer and more efficient font management.
2025-09-27 21:50:49 -04:00
scawful
faca7cfafe Enhance CMake and file dialog functionality
- Updated CMakeLists.txt to include additional MSVC compiler options for better compatibility and performance, such as support for large object files and UTF-8 encoding.
- Modified absl.cmake to add support for absl::int128.
- Refactored file dialog implementation in file_dialog.cc to utilize a feature flag for native file dialog support, improving cross-platform compatibility and maintainability. Added placeholder implementations for CI/CD environments.
2025-09-27 21:47:01 -04:00
scawful
8f8d2b7768 Enhance CI/CD integration for Visual Studio builds and update documentation
- Added a new workflow for validating Visual Studio builds on push and pull request events, ensuring that both x64 and x86 configurations are tested.
- Integrated vcpkg setup into the validation process to automatically manage dependencies.
- Implemented a PowerShell script for build validation, checking for executable creation and asset copying.
- Updated documentation to reflect the new CI/CD processes and automated validation features, improving clarity on build requirements and procedures.
- Refactored the EditorManager to streamline testing feature initialization, ensuring better control over testing capabilities.
2025-09-27 21:10:51 -04:00
scawful
bd875c3c5f Refactor vcpkg integration and enhance Windows build documentation
- Removed unnecessary dependencies from vcpkg.json for a cleaner configuration.
- Updated sdl2.cmake to improve handling of ZLIB and PNG dependencies for minimal builds on Windows.
- Added a comprehensive Visual Studio setup guide to assist users in configuring the YAZE project on Windows, including prerequisites and troubleshooting tips.
- Improved app configuration to prevent conflicts with Google Test integration, ensuring a smoother testing experience.
2025-09-27 21:00:28 -04:00
scawful
a578d48278 Enhance testing system integration in EditorManager and app configuration
- Added conditional compilation flags for enabling testing features in EditorManager, ensuring that testing-related functionalities are only initialized when tests are enabled.
- Updated app configuration to define YAZE_ENABLE_TESTING based on the build settings, improving clarity and control over testing capabilities.
- Refactored comments to clarify the context of testing features throughout the EditorManager code.
2025-09-27 20:14:20 -04:00
scawful
e958fd139e Refactor palette group display in Tile16Editor for improved clarity
- Replaced inline array with a static constant for palette group names, enhancing code readability and maintainability.
- Updated the display logic for the current palette group to utilize the new constant, ensuring consistent output.
2025-09-27 20:05:10 -04:00
scawful
5e45c94e59 Integrate vcpkg support for Windows builds and enhance documentation
- Added vcpkg integration in CMake for Windows, enabling automatic dependency management.
- Updated CMakePresets.json to include presets for debug and release builds with vcpkg.
- Created setup scripts for easy vcpkg installation on Windows.
- Enhanced documentation to guide users on vcpkg setup and usage with YAZE.
- Improved logging in Overworld class to track expanded tile flags during map assembly.
2025-09-27 20:05:00 -04:00
scawful
7815f8cc85 Refactor map properties handling in Overworld Editor for improved clarity and performance
- Rearranged include statements for better organization and reduced redundancy.
- Enhanced the DrawSimplifiedMapSettings method by improving formatting and readability.
- Streamlined the logic for handling world and map changes, ensuring more efficient updates.
- Updated the DrawMapPropertiesPanel and related methods to improve layout and user interaction.
- Refactored overlay handling logic to enhance maintainability and clarity in the Overworld class.
2025-09-27 19:42:32 -04:00
scawful
0460a6f638 Refactor tile selection logic in Tile16Editor for improved accuracy
- Simplified tile selection detection by integrating it with the tile selector drawing method.
- Enhanced click position calculations to use dynamic grid step values, improving responsiveness to different grid sizes.
- Rearranged drawing calls for better organization and clarity in the UpdateBlockset method.
2025-09-27 18:40:03 -04:00
scawful
3f37045b4d Refactor Tile16Editor drawing logic and enhance tile handling
- Updated the DrawToCurrentTile16 method to accept an optional source tile parameter, improving flexibility in tile rendering.
- Refined the logic for regenerating tile16 bitmaps from ROM data, ensuring accurate updates and palette management.
- Enhanced the UI layout for the Tile16 editor, optimizing the interaction of tile8 and tile16 controls.
- Improved code readability by standardizing formatting and reducing unnecessary whitespace.
2025-09-27 18:33:20 -04:00
scawful
dabfbfa5a2 Implement Tile16 changes commit callback and enhance editor functionality
- Added a callback mechanism in OverworldEditor to refresh the tile16 blockset and overworld map upon committing changes.
- Improved the Tile16Editor with new methods for committing changes to the overworld and discarding local modifications.
- Enhanced the UI layout for the Tile16 editor, optimizing the display and interaction of tile8 and tile16 controls.
- Updated the drawing logic for tile previews and improved palette management features for better user experience.
2025-09-27 18:14:16 -04:00
scawful
89396b1b57 Enhance Overworld Editor with v3 features and unified settings management
- Implemented full support for ZSCustomOverworld v3, including complex transition calculations and interactive overlays.
- Introduced a new unified settings table in OverworldEditorManager for streamlined management of toolsets and properties.
- Enhanced scratch space functionality with selection transfer capabilities between overworld and scratch slots.
- Removed the outdated ZEML system in favor of a pure ImGui layout for improved performance and maintainability.
- Updated changelog to reflect significant new features and improvements in the Overworld Editor.
2025-09-27 17:33:18 -04:00
scawful
089a31ff92 Refactor overworld map handling to improve custom ASM logic
- Simplified the logic for determining custom overworld behavior based on ASM version, enhancing clarity and maintainability.
- Updated comments for better understanding of expanded tile and entrance data checks in the Overworld class.
- Ensured that expanded data checks are more straightforward, improving the overall flow of the overworld map assembly process.
2025-09-27 17:29:56 -04:00
scawful
7355294f49 Refactor Overworld Editor and enhance settings management for v3 features
- Removed the outdated ZEML layout file and associated references to streamline the OverworldEditor.
- Introduced the OverworldEditorManager class to encapsulate v3 settings management, improving code organization and maintainability.
- Updated the OverworldEditor to utilize ImGui for layout, enhancing user interaction and flexibility.
- Enhanced the changelog with detailed descriptions of new features and improvements, including a comprehensive undo/redo system and advanced palette management.
- Removed deprecated diagnostic patterns from the clangd configuration to improve code quality checks.
2025-09-27 15:47:22 -04:00
scawful
a9ead0a45c Refactor EditorManager and OverworldEditor for enhanced functionality and error handling
- Updated EditorManager to improve welcome screen logic, ensuring it only displays in truly empty states and not when a ROM is loaded but current_rom_ is null.
- Enhanced error handling in EditorManager by routing editor errors to the toast manager for better user feedback.
- Improved OverworldEditor with enhanced tile interaction detection and added scratch space functionality for better layout management.
- Introduced a new ScratchSpaceSlot structure in OverworldEditor to manage scratch space for tile16 layouts, allowing for more flexible editing and selection.
- Added utility functions in canvas_utils for grid alignment and effective scaling, improving overall canvas interaction.
- Implemented an enhanced palette editor with ROM integration, providing users with tools for color analysis and palette management.
2025-09-27 15:24:58 -04:00
scawful
261032b1bd Implement basic Linux file dialog functionality and enhance dialog selection logic
- Added a basic implementation for the Linux save file dialog using a system command, returning a placeholder path for CI/CD.
- Introduced a new ShowSaveFileDialog method that utilizes a global feature flag to choose between native and bespoke dialog implementations, improving flexibility and maintainability.
2025-09-27 12:53:03 -04:00
scawful
920e5002ee Update changelog for version 0.3.1 with minor bug fixes related to color themes, ZSCustomOverworld v3 item loading, and Tile16 selection. 2025-09-27 11:40:12 -04:00
scawful
7e46b2b7be Enhance tile rendering and update logic in OverworldEditor and Canvas
- Added checks to ensure tile16 blockset is loaded and active before drawing in OverworldEditor.
- Improved tile rendering logic in Canvas to pre-render tiles and ensure they are active before drawing, preventing timing issues.
- Cleared cached tile bitmaps to force re-rendering when the tile16 blockset is updated, enhancing visual consistency.
2025-09-27 11:36:12 -04:00
scawful
c6490314f3 Enhance overworld editor with music editing features and custom overworld support
- Added a new Music tab in the Map Properties panel for editing music tracks associated with different game states.
- Implemented functionality to save music data for both Light and Dark World maps.
- Updated feature flags to enable custom overworld features based on ASM version, improving flexibility for ROM modifications.
- Enhanced UI elements with tooltips and popups for better user guidance on custom overworld settings.
2025-09-27 11:32:42 -04:00
scawful
8fe90c4c50 Refactor color structure and remove theme management from style files
- Rearranged the Color struct to place the blue component after green for consistency.
- Removed the Theme struct and its associated functions from style.h and style.cc, streamlining the codebase and focusing on color management.
2025-09-27 10:55:57 -04:00
scawful
86067fc066 Refactor welcome screen behavior in EditorManager to improve user control
- Updated the logic for displaying the welcome screen to only show it if it hasn't been manually closed by the user.
- Introduced a new flag to track whether the welcome screen was manually closed, enhancing user experience by preventing unwanted re-displays.
- Reset the welcome screen state when a ROM is loaded, ensuring a fresh start for the user.
- Minor adjustments to comments for clarity and maintainability.
2025-09-27 10:55:47 -04:00
scawful
9fc84c9a0c Remove DrawHomepage method from EditorManager and adjust welcome screen layout for improved UI consistency 2025-09-27 10:24:18 -04:00
scawful
41a3ee6ce2 Enhance editor UI and functionality with improved command palette and display settings
- Updated the command palette UI to include a search input with focus management, allowing users to filter and categorize commands more effectively.
- Enhanced the global search UI with tabbed results for recent files and labels, improving organization and accessibility.
- Refactored the display settings to be accessible via a popup, allowing customization without needing to load a ROM.
- Improved the welcome screen with enhanced particle effects and customization options, making it more visually appealing and user-friendly.
- Added functionality for global font scaling and theme management within the display settings, enhancing user experience.
2025-09-27 10:12:54 -04:00
scawful
730d01fcff Implement SaveRomAs functionality and enhance session management
- Added SaveRomAs method to allow users to save ROM files with specified filenames, ensuring proper file extensions are applied.
- Updated the DrawMenuBar method to utilize SaveRomAs, providing feedback on save success or failure through toast notifications.
- Enhanced session management by introducing RemoveSession method to mark sessions as closed instead of removing them, improving user experience when managing active sessions.
- Updated session handling logic to ensure closed sessions are properly skipped in the UI, maintaining clarity in session management.
2025-09-27 09:42:51 -04:00
scawful
fff706b38e Implement save file dialog functionality across platforms
- Added ShowSaveFileDialog and its platform-specific implementations for Windows and macOS, allowing users to save files with specified names and extensions.
- Enhanced the FileDialogWrapper class to support both native and bespoke dialog options based on feature flags.
- Updated the editor manager to utilize the new save dialog for ROM and project file saving, improving user experience and file management.
- Refactored existing dialog methods to ensure consistency and maintainability across different platforms.
2025-09-27 09:31:07 -04:00
scawful
65b17c5f6a Enhance theme management and add table canvas support
- Introduced new helper functions for managing table canvases in the GUI, allowing for better sizing and layout of elements.
- Updated the theme manager to include additional color properties for navigation elements, tree lines, and tab variations, improving visual consistency.
- Enhanced the theme selection interface with a more organized table layout for built-in and file themes, along with action buttons for theme management.
2025-09-27 09:15:05 -04:00
scawful
01ab9951e9 Add imgui_test_engine include path to CMake configuration
- Updated CMake files for both emu and z3ed to include the imgui_test_engine directory in the target include directories.
- This change ensures that the necessary headers for the imgui_test_engine are accessible during the build process, facilitating UI testing capabilities.
2025-09-26 23:41:46 -04:00
scawful
9b295d5d75 Refactor message_data for consistency in formatting
- Updated code style in message_data.cc and message_data.h for uniformity, specifically adjusting spacing around references and pointers.
- Improved readability by ensuring consistent use of `const` and reference qualifiers in function signatures.
- No functional changes were made; this commit focuses solely on code style enhancements.
2025-09-26 22:49:14 -04:00
scawful
1057a3f037 Implement welcome screen and enhance session management in EditorManager
- Added a welcome screen that can be accessed from the View menu, improving user experience for new users.
- Enhanced session management by allowing the reuse of empty sessions when loading ROMs, reducing unnecessary session creation.
- Improved the session table layout for better readability and added a custom overworld feature flag for each session.
- Updated the DrawWelcomeScreen method for better visual integration and added a glow effect to the decorative line.
2025-09-26 20:42:48 -04:00
scawful
c5e8e04f65 Enhance theme management with dynamic discovery and macOS bundle support
- Updated CMake configuration to ensure theme files are included in macOS bundles and added explicit file handling for theme resources.
- Refactored ThemeManager to replace hardcoded theme lists with dynamic discovery of available themes, improving flexibility across development and deployment scenarios.
- Introduced methods for refreshing and loading themes at runtime, enhancing user experience and customization options.
- Improved logging for theme loading processes, providing better feedback on successes and failures.
2025-09-26 19:55:40 -04:00
scawful
83d31556bb Add clang-tidy configuration and update project version to 0.3.0
- Introduced a new .clang-tidy configuration file for improved code quality checks with a lenient setup.
- Updated Doxyfile to reflect the new project version 0.3.0 and set the output directory for documentation.
- Enhanced README and changelog with new features, including theme management and multi-session support.
- Improved CI workflow to run clang-tidy with specified configurations for better code analysis.
2025-09-26 19:42:09 -04:00
scawful
997092390a Add theme management and background rendering features
- Introduced a comprehensive theme management system, allowing users to load, save, and switch between multiple themes.
- Added support for various built-in themes, enhancing the visual customization of the application.
- Implemented a background renderer for improved visual effects in docking windows, including grid backgrounds and subtle animations.
- Enhanced the EditorManager UI with themed elements, providing a more cohesive and engaging user experience.
- Updated CMake configuration to include new theme and background renderer source files, ensuring proper integration into the build system.
2025-09-26 19:32:19 -04:00
scawful
281fc84499 Refactor project structure and enhance project management features
- Updated the Rom class to use core::ResourceLabelManager for better namespace clarity.
- Introduced a comprehensive YazeProject structure consolidating project metadata, settings, and resource management.
- Enhanced project management capabilities with methods for creating, opening, saving, and validating projects.
- Implemented support for ZScream project format import and export, improving compatibility with existing projects.
- Added workspace settings and feature flags to streamline user configurations and project setup.
2025-09-26 18:02:04 -04:00
scawful
d21df011ae Enhance EditorManager UI with detailed ROM and session information
- Updated the ROM status display to include a clickable button that opens a detailed popup with metadata.
- Improved tooltips for ROM information, providing enhanced visibility on hover.
- Redesigned the session switcher and manager to include session metadata and improved styling for better user experience.
- Added animated background effects and enhanced button styles on the welcome screen for a more engaging interface.
2025-09-26 17:47:51 -04:00
scawful
9e3a5778aa Enhance CMake configuration for macOS and emulator build
- Added checks to conditionally set the DMG background image and DS Store setup script only if the files exist, improving robustness in packaging.
- Updated the emulator build configuration to skip unnecessary steps in minimal builds, ensuring cleaner builds and better resource management.
- Streamlined target include directories and linking for the emulator, maintaining modularity and clarity in the CMake setup.
2025-09-26 17:37:49 -04:00
scawful
a53e759043 Implement multi-session support and welcome screen in EditorManager
- Removed the homepage display logic and replaced it with a welcome screen that appears when no ROM is loaded or no active editors are present.
- Enhanced session management by iterating through all sessions to check for active editors, allowing for better multi-session docking.
- Introduced new methods for generating unique editor titles based on session context and added feature flags for per-session configurations.
- Added safeguards for ROM loading state checks in editor methods to prevent operations on unloaded ROMs.
2025-09-26 17:32:21 -04:00
scawful
a7ada79e80 Enhance AsarWrapper patch file handling
- Added filesystem support to ensure the base directory exists before creating a temporary patch file.
- Improved error reporting by including the path of the failed temporary patch file creation in the error message.
2025-09-26 16:49:24 -04:00
scawful
004c9ce585 Add asar-static library linkage in emu CMake configuration 2025-09-26 15:58:23 -04:00