Commit Graph

2352 Commits

Author SHA1 Message Date
scawful
cf28aa14da Enhance Windows vcpkg setup in release workflow
- Added caching for vcpkg dependencies to improve build efficiency on Windows.
- Included a verification step to check installed vcpkg packages and ensure zlib is present.
- Updated vcpkg installation step to run automatically, streamlining the setup process.
2025-09-26 22:31:34 -04:00
scawful
69a730983f Update Doxygen workflow to trigger on documentation changes and improve build process
- Modified the Doxygen GitHub Actions workflow to only run when documentation-related files are modified, enhancing efficiency.
- Updated the checkout action to version 4 and added a step to check if documentation changes are present before proceeding with the build.
- Cleaned up previous build artifacts only if documentation changes are detected, ensuring a fresh build environment.
- Improved deployment step to GitHub Pages with a summary message indicating the success or skip of the documentation generation.
2025-09-26 22:27:44 -04:00
scawful
d2470a9ed2 Refactor release workflow to improve tag validation and output
- Enhanced the release workflow to validate tag formats more robustly, ensuring compliance with semantic versioning.
- Added detailed error messages and guidance for users on creating valid tags.
- Updated the workflow to use a validated tag for release creation and announcements, improving consistency and clarity in the release process.
2025-09-26 22:24:19 -04:00
scawful
1743859d0a Enhance release workflow and add version validation script
- Updated the release workflow to enforce semantic versioning for tags, improving consistency in release management.
- Added a validation step to ensure tags follow the semantic versioning format before proceeding with the release.
- Introduced a new script to facilitate the creation of release tags, including checks for existing tags and uncommitted changes, enhancing the release process.
2025-09-26 22:21:58 -04:00
scawful
75186d97c6 Update CI workflow for release process and enhance changelog extraction
- Modified the release workflow to output the tag name instead of upload URL and release ID.
- Improved changelog extraction with error handling and default release notes creation if extraction fails.
- Switched to using softprops/action-gh-release for creating releases and uploading assets.
- Added macOS dependency installation step for UI tests and refined CMake configurations for better build control.
- Enhanced packaging steps to include documentation and assets in the release artifacts.
2025-09-26 22:15:13 -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
d49d87852d Enhance CI workflow with relaxed checks for release and master branches
- Updated the CI configuration to allow relaxed code quality checks for the release and master branches, including warnings for formatting errors and reduced cppcheck categories.
- Implemented conditional logic for clang-tidy and cppcheck to run less stringent checks during release builds, improving build efficiency while maintaining code quality.
- Enhanced feedback messages to guide developers on formatting and code quality expectations for different branches.
2025-09-26 19:56:37 -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
dedbe078d3 Refactor Windows packaging configuration in CMake
- Updated the CMake packaging script to conditionally set the CPACK_GENERATOR based on the environment, differentiating between CI/CD builds and local builds.
- Enhanced NSIS-specific configuration to only apply for local builds, improving clarity and maintainability.
- Adjusted package file naming conventions for Windows builds to reflect the environment, ensuring consistency across different build scenarios.
2025-09-26 18:04:27 -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
0f37061299 Refactor release notes generation in CI workflow
- Updated the GitHub Actions workflow to utilize a dedicated Python script for extracting changelog information based on the release version.
- Removed the previous inline changelog generation logic, streamlining the process and improving maintainability.
- Added a new script, `extract_changelog.py`, to handle changelog extraction from the documentation, ensuring accurate release notes for each version.
2025-09-26 17:01:39 -04:00
scawful
e3eb37395d Update CI workflow to improve test execution and remove obsolete CMake configuration
- Modified the core test execution command in the CI workflow to run tests sequentially with a single job (-j1) for better stability.
- Removed the outdated CMake workflow file, streamlining the CI configuration and eliminating redundancy.
2025-09-26 16:51:47 -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
a868b32a48 Enhance ImGui library integration and CMake configuration
- Added backend source files for ImGui, improving functionality with SDL2.
- Updated CMakeLists.txt to conditionally create the yaze_c library as static or shared based on the YAZE_MINIMAL_BUILD flag.
- Streamlined test linking by ensuring yaze_test links against yaze_core instead of yaze_c, enhancing modularity.
2025-09-26 16:47:47 -04:00
scawful
004c9ce585 Add asar-static library linkage in emu CMake configuration 2025-09-26 15:58:23 -04:00
scawful
0958dffdca imgui test engine build emu 2025-09-26 15:30:46 -04:00
scawful
857e75e7fe Refactor CMake configuration for core library and testing
- Updated CMakeLists.txt to create a separate core library (yaze_core) for testing, enhancing modularity.
- Adjusted source file organization for yaze_c and yaze_core, ensuring proper inclusion of essential components.
- Modified test CMakeLists.txt to link against yaze_core instead of yaze_c, streamlining dependencies for test targets.
- Disabled installation of the library in minimal builds while maintaining the ability to build for testing purposes.
2025-09-26 15:14:52 -04:00
scawful
caffe59800 Update README and build instructions for clarity and organization
- Revised README to enhance feature descriptions and streamline sections for better readability.
- Updated build instructions to clarify platform-specific setup and improve the overall structure.
- Added new documentation files for platform compatibility and build presets, detailing native file dialog support and build configuration options.
- Removed outdated documentation related to overworld expansion to maintain relevance.
2025-09-26 15:00:57 -04:00
scawful
78579d2934 Update CMake include directories for improved modularity and organization
- Refactored target_include_directories in app.cmake, emu.cmake, and z3ed.cmake to use absolute paths for better clarity and maintainability.
- Updated test_manager.cc and test_manager.h to simplify ImGui header inclusion.
- Enhanced test CMakeLists.txt to conditionally include directories for the extract_vanilla_values utility, ensuring proper integration with the new structure.
2025-09-26 14:46:41 -04:00
scawful
cbce2730b6 Update CMake configuration and .clangd settings for improved build management
- Removed unnecessary compile flags from .clangd to streamline configuration.
- Added YAZE_BUILD_LIB option in CMakeLists.txt for conditional library building in minimal builds.
- Enhanced SDL2 CMake configuration to set include directories for bundled SDL, ensuring proper integration.
- Updated test CMakeLists.txt to conditionally link yaze_c and ImGuiTestEngine based on build options, improving modularity and flexibility.
- Refactored test_editor.cc and test_editor.h to conditionally include ImGuiTestEngine headers and manage engine initialization based on availability.
2025-09-26 13:51:02 -04:00
scawful
53787872b2 Add .clangd configuration and update CMakePresets.json for compile commands
- Introduced a new .clangd file to specify compile flags, inlay hints, hover options, and diagnostics settings for improved code analysis and development experience.
- Updated CMakePresets.json to enable export of compile commands, enhancing integration with IDEs and tools that rely on compilation information.
2025-09-26 13:14:04 -04:00
scawful
ffb88a2902 Refactor platform initialization in GetConfigDirectory function
- Simplified platform variable initialization by removing redundant declarations and ensuring a default case for macOS.
- Improved code clarity and maintainability in the GetConfigDirectory function.
2025-09-26 12:57:44 -04:00
scawful
22c960eaf3 Add code quality checks and formatting configuration
- Introduced a .clang-format file to enforce Google C++ style guidelines across the codebase.
- Updated CMakeLists.txt to include custom targets for formatting and format-checking using clang-format.
- Added a quality_check.sh script to automate code quality checks, including formatting and static analysis with cppcheck.
- Enhanced CMakePresets.json with new macOS-specific configurations for ARM64 and universal binaries, improving build flexibility and support.
2025-09-26 12:57:20 -04:00
scawful
ec207cae06 Refactor CI workflow and CMake configuration for Windows builds
- Updated the CI workflow to conditionally set up vcpkg only for non-CI Windows builds, improving build efficiency.
- Simplified CMake configuration for Windows by consolidating build type checks and ensuring proper handling of resource files based on the YAZE_MINIMAL_BUILD flag.
- Enhanced modularity in file dialog implementation by introducing wrapper methods for better maintainability and clarity in the codebase.
2025-09-26 12:47:10 -04:00
scawful
a28ca03cba Refactor main function and improve file dialog implementation
- Cleaned up formatting in main function for better readability.
- Simplified platform initialization in LoadConfigFile and GetConfigDirectory functions.
- Introduced wrapper methods for file dialog operations to enhance modularity and maintainability.
- Improved code clarity by adjusting line breaks and spacing in various functions.
2025-09-26 12:43:42 -04:00
scawful
41a5b952e4 Refactor CMake configuration for ImGuiTestEngine and feature flags
- Updated the CMake configuration to use target_compile_definitions for ImGuiTestEngine, improving clarity and maintainability.
- Introduced IMGUI_TEST_ENGINE_DEFINITIONS to streamline the definition process for targets linking to ImGuiTestEngine.
- Modified feature flags in features.h to conditionally enable the native file dialog based on the YAZE_ENABLE_NFD flag, enhancing flexibility in feature management.
2025-09-26 12:26:01 -04:00
scawful
d728ed37aa Implement conditional CRC32 calculation based on zlib availability
- Added a fallback CRC32 implementation in bps.cc when zlib is not available, ensuring compatibility across different build environments.
- Wrapped zlib inclusion and CRC32 function definition with preprocessor directives to maintain functionality based on the YAZE_LIB_PNG flag.
2025-09-26 12:08:09 -04:00
scawful
9b43c2b4e4 Enhance CMake configuration for UI tests and SDL2 linking
- Added support for UI tests in the CMake configuration by introducing the YAZE_ENABLE_UI_TESTS option, ensuring proper linking with the ImGuiTestEngine if available.
- Updated SDL2 linking in test CMakeLists to use variable targets for improved flexibility and compatibility across platforms.
- Modified sprite_position_test to check for ROM file existence using std::ifstream for better error handling.
2025-09-26 12:06:39 -04:00
scawful
6bfecb475e Update SDL2 CMake configuration to include WIN32 support
- Modified the preprocessor directive to include WIN32 in the condition for adding the SDL subdirectory, ensuring compatibility across additional Windows platforms.
2025-09-26 11:54:43 -04:00
scawful
626dbbe0d7 Enhance CMake configuration for Abseil and SDL2 dependencies
- Added new Abseil components: absl::str_format, absl::container_memory, absl::memory, and absl::utility to the CMake configuration for improved functionality.
- Updated SDL2 configuration to use static targets when bundled and adjusted the handling of system SDL to ensure proper target usage across platforms.
2025-09-26 11:51:29 -04:00
scawful
832d0b0cb7 Refactor hex formatting in utility functions for consistency
- Removed static format strings in HexByte, HexWord, HexLong, and HexLongLong functions.
- Replaced them with direct format specifiers in absl::StrFormat calls to enhance code clarity and reduce redundancy.
2025-09-26 11:47:12 -04:00
scawful
f0fa93fa2b Refactor CMake configuration and improve emulation timing calculations
- Updated CMakeLists.txt to disable additional optional components (EMU and Z3ED) in minimal builds for better build management.
- Refactored emulation timing calculations in emu.cc to use consistent method naming conventions, enhancing code readability and maintainability.
2025-09-26 11:33:15 -04:00
scawful
7c90b2b6ba Update CI workflow for Windows builds and refactor room object handling
- Modified the CI workflow to conditionally set up vcpkg and configure CMake based on the build type for Windows, enhancing build flexibility.
- Refactored the handling of staircase objects in the Room class to use initializer lists for improved clarity and consistency in object construction.
- Updated chest data handling to utilize modern C++ syntax for better readability.
2025-09-26 11:19:24 -04:00
scawful
132823701b Enhance NFD support in file dialog implementation for Linux and macOS
- Updated preprocessor directives to ensure NFD functionality is only included when YAZE_ENABLE_NFD is defined and enabled.
- Corrected the usage of NFD functions to improve resource management by replacing deprecated calls with the appropriate alternatives.
- Ensured consistent handling of file and folder dialog operations across platforms, enhancing overall user experience.
2025-09-26 11:12:41 -04:00
scawful
7e08601970 Add NFD support for file and folder dialogs on macOS
- Implemented NFD (Native File Dialog) functionality for opening files and folders when YAZE_ENABLE_NFD is defined.
- Enhanced ShowOpenFileDialogNFD and ShowOpenFolderDialogNFD methods to utilize NFD for improved user experience.
- Added necessary initialization and cleanup for NFD to ensure proper resource management.
2025-09-26 10:53:16 -04:00
scawful
f055d9ec88 housekeeping 2025-09-26 10:22:50 -04:00
scawful
f59a0b5abf Refactor CMake configuration to streamline Abseil dependencies
- Removed several internal Abseil components from the CMake configuration to simplify dependency management.
- Cleaned up the list of required Abseil libraries, enhancing clarity and maintainability of the build configuration.
2025-09-26 10:14:10 -04:00
scawful
edafa79dea Add macOS app icon and bundle properties; remove deprecated settings
- Introduced a new app icon file (yaze.icns) for the macOS bundle.
- Updated CMake configuration to set macOS bundle properties, including icon file, bundle name, executable name, and versioning information.
- Removed outdated macOS bundle settings to streamline the configuration process.
2025-09-26 10:04:29 -04:00
scawful
8d66dbc0e4 Update CI workflow and add header inclusion in bps.cc
- Modified the CI workflow to enable vcpkg installation and specify the vcpkg directory and JSON glob for better dependency management.
- Added <cstring> header inclusion in bps.cc to support string manipulation functionalities.
2025-09-26 09:32:42 -04:00
scawful
907e29a495 Update CMake configuration and CI workflows for improved compatibility and testing
- Updated minimum CMake version requirement from 3.5 to 3.16 to leverage new features and policies.
- Enhanced CI workflows to include additional build configurations for Ubuntu and macOS, improving cross-platform support.
- Added conditional linking for ImGui Test Engine in the CMakeLists, allowing for UI testing when enabled.
- Refactored CMake commands in CI to ensure consistent policy version handling and streamlined build processes.
- Introduced new constructors for MenuItem in the GUI to enhance menu item management and flexibility.
2025-09-26 09:23:53 -04:00
scawful
50f83e818c Update README and documentation for YAZE v0.3.0 release
- Revamped README to reflect the new branding and major features of YAZE, including complete Asar 65816 assembler integration and enhanced CLI tools.
- Added new documentation files for getting started, build instructions, Asar integration, and comprehensive testing guides.
- Removed outdated documentation and streamlined the structure for better navigation.
- Introduced a changelog to track version history and significant updates.
- Updated API reference and added detailed guides for dungeon and overworld editing functionalities.
2025-09-25 21:10:35 -04:00
scawful
7ca841d6a5 Refactor DungeonCanvasViewer for enhanced rendering and object management
- Introduced new rendering methods for various object types including stairs, chests, doors, walls, pots, and sprites, improving visual representation in the dungeon canvas.
- Updated the DrawDungeonCanvas method to streamline object rendering and enhance graphics handling.
- Added detailed layer information overlay to provide context on room objects and sprites.
- Implemented object dimension calculations for walls to ensure accurate rendering based on size properties.
- Improved fallback rendering for objects without valid graphics, enhancing user experience during object placement and editing.
2025-09-25 20:58:40 -04:00
scawful
e63bcf3202 Remove deprecated macOS file type handling from FileDialogWrapper for cleaner code and improved compatibility. This change simplifies the file dialog implementation by eliminating legacy checks for older macOS versions. 2025-09-25 20:15:13 -04:00
scawful
bfcf54e271 Refactor DungeonEditor and introduce new components for enhanced dungeon editing
- Integrated new components: DungeonToolset, DungeonObjectInteraction, DungeonRenderer, DungeonRoomLoader, and DungeonUsageTracker to streamline dungeon editing functionalities.
- Updated DungeonEditor to utilize the new components for room loading, object interaction, and rendering, improving code organization and maintainability.
- Enhanced object selection and placement features, including drag-and-drop functionality and improved UI interactions.
- Removed legacy methods and refactored existing code to delegate responsibilities to the new components, ensuring a cleaner architecture.
- Added support for usage tracking of blocksets, spritesets, and palettes across dungeon rooms, providing insights for optimization.
2025-09-25 19:56:39 -04:00
scawful
8389989ab3 Implement object selection rectangle functionality in DungeonEditor
- 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.
2025-09-25 19:30:12 -04:00