BREAKING CHANGE: major file management refactor#222
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Project Structure & Build System Refactor:
RTypetoRTypeEngineand version bumped to 2.0.0, reflecting its new role as a reusable engine. The build system is reorganized to separate generic engine code (engine/) from game-specific code (games/rtype/,games/breakout/), and asset copying is now automated. The CMake configuration is updated to build engine libraries first, then games, then network libraries, and finally tests. A new demo game (breakout) is added to showcase engine reusability.Core Engine Subsystems (New Features):
EventBusfor decoupled publish-subscribe event handling, with built-in events for entities, collisions, scenes, and input actions.InputManagerfor action/axis-based input abstraction, supporting both keyboard and mouse, with customizable bindings.ResourceManagerto centralize asset loading and caching, supporting loader registration for different resource types.SceneManagerfor scene lifecycle and transition management, allowing registration, loading, unloading, and transition between scenes.Engine API Enhancements:
Engineclass now exposes accessors for the new subsystems (GetSceneManager,GetResourceManager,GetInputManager,GetEventBus), and includes them as member variables, making them available to all engine users.Testing Improvements:
test_event_bus,test_scene_manager,test_camera_system), and test linking is updated to use the new modular engine libraries.These changes significantly modernize the codebase, improve modularity, and lay the groundwork for supporting multiple games and future engine extensions.
RTypeEngine, reorganized CMake to separate engine and games, automated asset copying, and added a new demo game (breakout).EventBusfor decoupled event handling.InputManagerfor action/axis-based input abstraction.ResourceManagerfor centralized asset loading and caching.SceneManagerfor scene lifecycle management.Engineclass interface and included them as members.