Skip to content
This repository was archived by the owner on Dec 24, 2025. It is now read-only.

Comments

Add and refactor Systems, Core#15

Merged
thnhmai06 merged 3 commits intofeature/paddlefrom
feat/core-system
Oct 18, 2025
Merged

Add and refactor Systems, Core#15
thnhmai06 merged 3 commits intofeature/paddlefrom
feat/core-system

Conversation

@thnhmai06
Copy link
Member

Refactor and Add Game systems, config...

- 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
Copilot AI review requested due to automatic review settings October 18, 2025 13:22
@thnhmai06 thnhmai06 self-assigned this Oct 18, 2025
@thnhmai06 thnhmai06 changed the base branch from main to feature/paddle October 18, 2025 13:23
@thnhmai06 thnhmai06 marked this pull request as ready for review October 18, 2025 13:23
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

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 thnhmai06 changed the title Feat/core system Feat/core-system Oct 18, 2025
@thnhmai06 thnhmai06 changed the title Feat/core-system Add and refactor Systems, Core Oct 18, 2025
@thnhmai06 thnhmai06 merged commit 01a4253 into feature/paddle Oct 18, 2025
1 check passed
@thnhmai06 thnhmai06 deleted the feat/core-system branch October 18, 2025 13:37
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.
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant