This repository was archived by the owner on Dec 24, 2025. It is now read-only.
Add and refactor Systems, Core#15
Merged
thnhmai06 merged 3 commits intofeature/paddlefrom Oct 18, 2025
Merged
Conversation
- Introduced GameSystem, InputSystem, PhysicSystem, and UISystem for better organization and modularity (applies game logic, input handling, physics, and UI settings). - Refactored Bounceverse to utilize new systems for initialization and configuration management. - Updated credits and settings files for improved user experience.
- Rename linting.yml to spotlessCheck.yml for clarity - Add concurrency settings to optimize CI runs - Modify job conditions to skip CI based on commit messages - Implement automatic code formatting application on failure
Contributor
There was a problem hiding this comment.
Pull Request Overview
Refactors the game core to introduce modular systems (Game, Input, Physics, UI), overhauls settings management (centralized resources + per-user TOML), and adds factories and components to support new entities (walls, paddle, bullets) and behaviors.
- Introduces core systems package and migrates initialization logic from Bounceverse into systems
- Adds per-user TOML settings and central SettingsManager; consolidates app properties
- Adds/updates entity factories, components, and tags; renames tag interfaces
Reviewed Changes
Copilot reviewed 18 out of 20 changed files in this pull request and generated 15 comments.
Show a summary per file
| File | Description |
|---|---|
| system/Readme.txt | Adds description for FXGL system data directory |
| src/main/resources/settings.properties | Centralized general app settings |
| src/main/resources/credits.txt | Updates credits text |
| src/main/resources/configs/system/settings.properties | Removes old system settings (moved to root) |
| src/main/java/com/github/codestorm/bounceverse/systems/physics/CollisionSystem.java | Removes legacy collision system |
| src/main/java/com/github/codestorm/bounceverse/systems/System.java | Removes old systems base class (replaced by core.systems.System) |
| src/main/java/com/github/codestorm/bounceverse/systems/LaunchOption.java | Removes old launch options (replaced by core.LaunchOptions) |
| src/main/java/com/github/codestorm/bounceverse/factory/WallFactory.java | Adds spawnable walls on all sides |
| src/main/java/com/github/codestorm/bounceverse/factory/PaddleFactory.java | Adds paddle entity factory |
| src/main/java/com/github/codestorm/bounceverse/factory/BulletFactory.java | Adds bullet entity factory |
| src/main/java/com/github/codestorm/bounceverse/factory/BrickFactory.java | Updates optional tag type and generics |
| src/main/java/com/github/codestorm/bounceverse/data/types/UnitVelocity.java | Adds unit-direction enum for movement |
| src/main/java/com/github/codestorm/bounceverse/data/types/Side.java | Removes custom Side enum (moving to javafx.geometry.Side) |
| src/main/java/com/github/codestorm/bounceverse/data/types/EntityType.java | Adds BULLET and WALL types |
| src/main/java/com/github/codestorm/bounceverse/data/tags/requirements/RequiredTag.java | Removes old RequiredTag |
| src/main/java/com/github/codestorm/bounceverse/data/tags/requirements/Required.java | Adds new Required tag |
| src/main/java/com/github/codestorm/bounceverse/data/tags/requirements/OptionalTag.java | Removes old OptionalTag |
| src/main/java/com/github/codestorm/bounceverse/data/tags/requirements/Optional.java | Adds new Optional tag |
| src/main/java/com/github/codestorm/bounceverse/data/tags/entities/ForPowerUp.java | Doc updates, import EntityType |
| src/main/java/com/github/codestorm/bounceverse/data/tags/entities/ForPaddle.java | Doc updates, import EntityType |
| src/main/java/com/github/codestorm/bounceverse/data/tags/entities/ForBullet.java | Adds ForBullet tag |
| src/main/java/com/github/codestorm/bounceverse/data/tags/entities/ForBrick.java | Doc updates, import EntityType |
| src/main/java/com/github/codestorm/bounceverse/data/tags/entities/ForBall.java | Doc updates, import EntityType |
| src/main/java/com/github/codestorm/bounceverse/data/tags/components/Property.java | Renames PropertyComponent to Property |
| src/main/java/com/github/codestorm/bounceverse/data/tags/components/Behavior.java | Renames BehaviorComponent to Behavior |
| src/main/java/com/github/codestorm/bounceverse/core/systems/UISystem.java | Adds UI system (background color) |
| src/main/java/com/github/codestorm/bounceverse/core/systems/System.java | Adds new systems base class |
| src/main/java/com/github/codestorm/bounceverse/core/systems/PhysicSystem.java | Adds physics/collision handlers |
| src/main/java/com/github/codestorm/bounceverse/core/systems/InputSystem.java | Adds left/right input handling |
| src/main/java/com/github/codestorm/bounceverse/core/systems/GameSystem.java | Registers factories and spawns entities |
| src/main/java/com/github/codestorm/bounceverse/core/UserSetting.java | Adds per-user TOML settings with Video section |
| src/main/java/com/github/codestorm/bounceverse/core/SettingsManager.java | Loads settings and applies to GameSettings |
| src/main/java/com/github/codestorm/bounceverse/core/LaunchOptions.java | Adds static launch options loader |
| src/main/java/com/github/codestorm/bounceverse/components/properties/bullet/BulletVelocity.java | Adds bullet velocity behavior and auto-despawn |
| src/main/java/com/github/codestorm/bounceverse/components/properties/brick/BrickShield.java | Updates Optional tag and Side usage |
| src/main/java/com/github/codestorm/bounceverse/components/properties/brick/BrickHealth.java | Adds convenience methods and Required tag |
| src/main/java/com/github/codestorm/bounceverse/components/properties/Width.java | Adds width scaling for paddle |
| src/main/java/com/github/codestorm/bounceverse/components/properties/Velocity.java | Adds generic velocity component |
| src/main/java/com/github/codestorm/bounceverse/components/properties/Shield.java | Switches to javafx.geometry.Side; adds API |
| src/main/java/com/github/codestorm/bounceverse/components/properties/Health.java | Switches to Property tag |
| src/main/java/com/github/codestorm/bounceverse/components/behaviors/paddle/ShrinkPaddle.java | Adds temporary shrink behavior |
| src/main/java/com/github/codestorm/bounceverse/components/behaviors/paddle/PaddleExpand.java | Adds temporary expand behavior |
| src/main/java/com/github/codestorm/bounceverse/components/behaviors/brick/BrickExplode.java | Implements explosion damage logic |
| src/main/java/com/github/codestorm/bounceverse/components/behaviors/brick/BrickDrop.java | Updates tags; marks WIP |
| src/main/java/com/github/codestorm/bounceverse/components/behaviors/CanShoot.java | Adds shooting with cooldown |
| src/main/java/com/github/codestorm/bounceverse/components/_old/brick/ProtectedBrick.java | Adds legacy protected brick |
| src/main/java/com/github/codestorm/bounceverse/components/_old/brick/PowerBrick.java | Adds legacy power brick |
| src/main/java/com/github/codestorm/bounceverse/components/_old/brick/ExplodeBrick.java | Adds legacy explode brick |
| src/main/java/com/github/codestorm/bounceverse/components/_old/brick/BrickFactory.java | Adds legacy brick factory |
| src/main/java/com/github/codestorm/bounceverse/components/_old/brick/BrickComponent.java | Adds legacy base brick component |
| src/main/java/com/github/codestorm/bounceverse/components/_old/base/EntityComponent.java | Updates tag import |
| src/main/java/com/github/codestorm/bounceverse/Utils.java | Adds Cooldown helper; minor IO fix |
| src/main/java/com/github/codestorm/bounceverse/Bounceverse.java | Refactors to use new systems and settings |
| .github/workflows/spotlessCheck.yml | Adds Spotless CI with auto-apply on failure |
| .github/workflows/linting.yml | Removes old lint workflow |
| .github/workflows/build.yml | Adds PR event types and skip condition on [skip ci] |
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
src/main/java/com/github/codestorm/bounceverse/core/systems/PhysicSystem.java
Show resolved
Hide resolved
src/main/java/com/github/codestorm/bounceverse/core/systems/InputSystem.java
Show resolved
Hide resolved
src/main/java/com/github/codestorm/bounceverse/core/systems/InputSystem.java
Show resolved
Hide resolved
src/main/java/com/github/codestorm/bounceverse/core/SettingsManager.java
Show resolved
Hide resolved
src/main/java/com/github/codestorm/bounceverse/core/UserSetting.java
Outdated
Show resolved
Hide resolved
Add a new Video instance to the UserSetting class to ensure proper initialization and avoid null references. This change enhances the reliability of video settings management.
thnhmai06
added a commit
that referenced
this pull request
Oct 21, 2025
* feat: Brick * feat(brick): add PowerBrick and update Brick, ExoplodeBrick, ProtectedBrick * docs(brick): add Javadoc for Brick, ExoplodeBrick, PowerBrick, ProtectedBrick * refactor(brick): remove NormalBrick and StrongBrick * feat(paddle): add ExpendPaddle, LaserPaddle, ShrinkPaddle and update Paddle * feat(paddle): add ExpendPaddle, LaserPaddle, ShrinkPaddle and update Paddle * refactor: remove brick and gameManager packages * feat(brick): refactor and document brick module (Factory, Component, Protected, Explode) * feat(game): add GameManager and BounceVerseApp for game initialization * feat(paddle): add PaddleComponent and variants (Expand, Shrink, Laser, Bullet) with factory integration * feat(brick): implement explosion logic and health management refactor * feat(components): add new paddle behaviors and properties (Bullet, Width); refactor brick to components structure * refactor: migrate paddle and bullet systems to new structure * refactor(paddle): adjust PaddleFactory, Shoot and Width property for move and scaling * feat(wall): add WallFactory and Wall components with Move property for paddle collision * feat(physics): handle paddle-wall collision in CollisionSystem * feat(data): add WALL entity type for collision system * feat(behavior): update BrickExplode logic for new collision handling * feat(paddle-wall): add Move component update and WallFactory with correct sides and spawn registration * (skip ci) refactor: rename components and update imports for consistency Refactored various components by renaming `BehaviorComponent` to `Behavior`, `OptionalTag` to `Optional`, and `PropertyComponent` to `Property`. Updated imports accordingly to maintain consistency across the codebase. * [skip ci] Add and refactor Systems, Core (#15) * [skip ci] feat(core): implement game systems and refactor initialization - Introduced GameSystem, InputSystem, PhysicSystem, and UISystem for better organization and modularity (applies game logic, input handling, physics, and UI settings). - Refactored Bounceverse to utilize new systems for initialization and configuration management. - Updated credits and settings files for improved user experience. * [skip ci] ci: update CI configuration for Spotless checks and builds - Rename linting.yml to spotlessCheck.yml for clarity - Add concurrency settings to optimize CI runs - Modify job conditions to skip CI based on commit messages - Implement automatic code formatting application on failure * [skip ci] feat(core): initialize Video instance in UserSetting Add a new Video instance to the UserSetting class to ensure proper initialization and avoid null references. This change enhances the reliability of video settings management. * [skip ci] refactor: rename spotlessCheck.yml to spotless.yml for consistency * [skip ci] chore: Remove log files * Replace `For*` interface tag by annotation (#16) * [skip ci] refactor: replace `For*` interface with `Suitable*` annotation (remove `Tag` system) * [skip ci] chore: reformat code and optimize import * [skip ci] chore: update JAVA_LANGUAGE to 24_PREVIEW * [skip ci] refactor: Assign new `For*` annotation for components * [skip ci] fix: fix null ref on `Utils.Time.Cooldown#current` * feat: add Attack and Attributes components for entity interactions Introduce Attack and Attributes classes to manage damage and defense mechanics for entities. The Attack class allows entities to inflict damage based on their attributes, while the Attributes class holds general property values like defense. This enhances gameplay dynamics by enabling combat interactions. * fix(paddle): fix freeze paddle * ci: update CI conditions to use startsWith for skip ci Modified CI configuration to use startsWith instead of contains for detecting '[skip ci]' in commit messages, improving clarity and functionality. * chore: correct spelling and rename classes for consistency Renamed `HeathDeath` to `HealthDeath` and fixed spelling in `CanExecute` documentation. These changes improve code readability and maintainability. --------- Co-authored-by: Mai Thành <62001770+thnhmai06@users.noreply.github.com> Co-authored-by: ManhTanTran <199453990+tunpogaz@users.noreply.github.com>
thnhmai06
added a commit
that referenced
this pull request
Oct 21, 2025
* feat: Brick * feat(brick): add PowerBrick and update Brick, ExoplodeBrick, ProtectedBrick * docs(brick): add Javadoc for Brick, ExoplodeBrick, PowerBrick, ProtectedBrick * refactor(brick): remove NormalBrick and StrongBrick * feat(paddle): add ExpendPaddle, LaserPaddle, ShrinkPaddle and update Paddle * feat(paddle): add ExpendPaddle, LaserPaddle, ShrinkPaddle and update Paddle * refactor: remove brick and gameManager packages * feat(brick): refactor and document brick module (Factory, Component, Protected, Explode) * feat(game): add GameManager and BounceVerseApp for game initialization * feat(paddle): add PaddleComponent and variants (Expand, Shrink, Laser, Bullet) with factory integration * feat(brick): implement explosion logic and health management refactor * feat(components): add new paddle behaviors and properties (Bullet, Width); refactor brick to components structure * refactor: migrate paddle and bullet systems to new structure * refactor(paddle): adjust PaddleFactory, Shoot and Width property for move and scaling * feat(wall): add WallFactory and Wall components with Move property for paddle collision * feat(physics): handle paddle-wall collision in CollisionSystem * feat(data): add WALL entity type for collision system * feat(behavior): update BrickExplode logic for new collision handling * feat(paddle-wall): add Move component update and WallFactory with correct sides and spawn registration * (skip ci) refactor: rename components and update imports for consistency Refactored various components by renaming `BehaviorComponent` to `Behavior`, `OptionalTag` to `Optional`, and `PropertyComponent` to `Property`. Updated imports accordingly to maintain consistency across the codebase. * [skip ci] Add and refactor Systems, Core (#15) * [skip ci] feat(core): implement game systems and refactor initialization - Introduced GameSystem, InputSystem, PhysicSystem, and UISystem for better organization and modularity (applies game logic, input handling, physics, and UI settings). - Refactored Bounceverse to utilize new systems for initialization and configuration management. - Updated credits and settings files for improved user experience. * [skip ci] ci: update CI configuration for Spotless checks and builds - Rename linting.yml to spotlessCheck.yml for clarity - Add concurrency settings to optimize CI runs - Modify job conditions to skip CI based on commit messages - Implement automatic code formatting application on failure * [skip ci] feat(core): initialize Video instance in UserSetting Add a new Video instance to the UserSetting class to ensure proper initialization and avoid null references. This change enhances the reliability of video settings management. * [skip ci] refactor: rename spotlessCheck.yml to spotless.yml for consistency * [skip ci] chore: Remove log files * Replace `For*` interface tag by annotation (#16) * [skip ci] refactor: replace `For*` interface with `Suitable*` annotation (remove `Tag` system) * [skip ci] chore: reformat code and optimize import * [skip ci] chore: update JAVA_LANGUAGE to 24_PREVIEW * [skip ci] refactor: Assign new `For*` annotation for components * [skip ci] fix: fix null ref on `Utils.Time.Cooldown#current` * feat: add Attack and Attributes components for entity interactions Introduce Attack and Attributes classes to manage damage and defense mechanics for entities. The Attack class allows entities to inflict damage based on their attributes, while the Attributes class holds general property values like defense. This enhances gameplay dynamics by enabling combat interactions. * fix(paddle): fix freeze paddle * ci: update CI conditions to use startsWith for skip ci Modified CI configuration to use startsWith instead of contains for detecting '[skip ci]' in commit messages, improving clarity and functionality. * chore: correct spelling and rename classes for consistency Renamed `HeathDeath` to `HealthDeath` and fixed spelling in `CanExecute` documentation. These changes improve code readability and maintainability. --------- Co-authored-by: Mai Thành <62001770+thnhmai06@users.noreply.github.com>
ManhTanTran
added a commit
that referenced
this pull request
Oct 22, 2025
* feat: Brick * feat(brick): add PowerBrick and update Brick, ExoplodeBrick, ProtectedBrick * docs(brick): add Javadoc for Brick, ExoplodeBrick, PowerBrick, ProtectedBrick * refactor(brick): remove NormalBrick and StrongBrick * feat(paddle): add ExpendPaddle, LaserPaddle, ShrinkPaddle and update Paddle * feat(paddle): add ExpendPaddle, LaserPaddle, ShrinkPaddle and update Paddle * refactor: remove brick and gameManager packages * feat(brick): refactor and document brick module (Factory, Component, Protected, Explode) * feat(game): add GameManager and BounceVerseApp for game initialization * feat(paddle): add PaddleComponent and variants (Expand, Shrink, Laser, Bullet) with factory integration * feat(brick): implement explosion logic and health management refactor * feat(components): add new paddle behaviors and properties (Bullet, Width); refactor brick to components structure * refactor: migrate paddle and bullet systems to new structure * refactor(paddle): adjust PaddleFactory, Shoot and Width property for move and scaling * feat(wall): add WallFactory and Wall components with Move property for paddle collision * feat(physics): handle paddle-wall collision in CollisionSystem * feat(data): add WALL entity type for collision system * feat(behavior): update BrickExplode logic for new collision handling * feat(paddle-wall): add Move component update and WallFactory with correct sides and spawn registration * (skip ci) refactor: rename components and update imports for consistency Refactored various components by renaming `BehaviorComponent` to `Behavior`, `OptionalTag` to `Optional`, and `PropertyComponent` to `Property`. Updated imports accordingly to maintain consistency across the codebase. * [skip ci] Add and refactor Systems, Core (#15) * [skip ci] feat(core): implement game systems and refactor initialization - Introduced GameSystem, InputSystem, PhysicSystem, and UISystem for better organization and modularity (applies game logic, input handling, physics, and UI settings). - Refactored Bounceverse to utilize new systems for initialization and configuration management. - Updated credits and settings files for improved user experience. * [skip ci] ci: update CI configuration for Spotless checks and builds - Rename linting.yml to spotlessCheck.yml for clarity - Add concurrency settings to optimize CI runs - Modify job conditions to skip CI based on commit messages - Implement automatic code formatting application on failure * [skip ci] feat(core): initialize Video instance in UserSetting Add a new Video instance to the UserSetting class to ensure proper initialization and avoid null references. This change enhances the reliability of video settings management. * [skip ci] refactor: rename spotlessCheck.yml to spotless.yml for consistency * [skip ci] chore: Remove log files * Replace `For*` interface tag by annotation (#16) * [skip ci] refactor: replace `For*` interface with `Suitable*` annotation (remove `Tag` system) * [skip ci] chore: reformat code and optimize import * [skip ci] chore: update JAVA_LANGUAGE to 24_PREVIEW * [skip ci] refactor: Assign new `For*` annotation for components * [skip ci] fix: fix null ref on `Utils.Time.Cooldown#current` * feat: add Attack and Attributes components for entity interactions Introduce Attack and Attributes classes to manage damage and defense mechanics for entities. The Attack class allows entities to inflict damage based on their attributes, while the Attributes class holds general property values like defense. This enhances gameplay dynamics by enabling combat interactions. * fix(paddle): fix freeze paddle * ci: update CI conditions to use startsWith for skip ci Modified CI configuration to use startsWith instead of contains for detecting '[skip ci]' in commit messages, improving clarity and functionality. * chore: correct spelling and rename classes for consistency Renamed `HeathDeath` to `HealthDeath` and fixed spelling in `CanExecute` documentation. These changes improve code readability and maintainability. --------- Co-authored-by: Mai Thành <62001770+thnhmai06@users.noreply.github.com>
thnhmai06
added a commit
that referenced
this pull request
Oct 27, 2025
* [skip ci] feat(core): implement game systems and refactor initialization - Introduced GameSystem, InputSystem, PhysicSystem, and UISystem for better organization and modularity (applies game logic, input handling, physics, and UI settings). - Refactored Bounceverse to utilize new systems for initialization and configuration management. - Updated credits and settings files for improved user experience. * [skip ci] ci: update CI configuration for Spotless checks and builds - Rename linting.yml to spotlessCheck.yml for clarity - Add concurrency settings to optimize CI runs - Modify job conditions to skip CI based on commit messages - Implement automatic code formatting application on failure * [skip ci] feat(core): initialize Video instance in UserSetting Add a new Video instance to the UserSetting class to ensure proper initialization and avoid null references. This change enhances the reliability of video settings management.
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 subscribe to this conversation on GitHub.
Already have an account?
Sign in.
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.
Refactor and Add Game systems, config...