-
Notifications
You must be signed in to change notification settings - Fork 0
Conversation
- Deleted the 'ratchetFrom' line from the spotless configuration (to simplify the build.gradle file).
* feat: implement abstract class Ball * refactor: update Ball class package and documentation - Renamed package from `com.github.codestorm.ball` to `com.github.codestorm.bounceverse.ball` (to reflect project structure) - Enhanced class documentation to clarify the purpose and functionality of the Ball class --------- Co-authored-by: Mai Thành <62001770+thnhmai06@users.noreply.github.com>
* 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 * refactor(brick): rename packages and update formatting settings - Renamed package from `com.github.codestorm.brick` to `com.github.codestorm.bounceverse.brick` for consistency. - Updated Google Java Format settings to use AOSP style. --------- Co-authored-by: Mai Thành <62001770+thnhmai06@users.noreply.github.com>
* feat: add PowerUp class - Introduced PowerUp class to manage special effects and abilities for game objects (provides lazy-update functionality). - Updated build.gradle to include JavaFX plugin and specified version. - Modified project configuration files for compatibility with new features. * docs: update PowerUp class documentation - Corrected the description of PowerUps to use plural form for consistency. - Improved clarity in the apply and unapply method descriptions (automatically used when power up becomes active/ends).
- Added 'target/' to .gitignore to exclude build artifacts. - Updated .gitignore to simplify IntelliJ IDEA configuration exclusions. - Created git-commit-instructions.md for standardized commit message guidelines.
* feat: Brick * feat(brick): add PowerBrick and update Brick, ExoplodeBrick, Protecte… * docs(brick): add Javadoc for Brick, ExoplodeBrick, PowerBrick, Protec… * refactor(brick): remove NormalBrick and StrongBrick * feat(paddle): add ExpendPaddle, LaserPaddle, ShrinkPaddle and update … * feat(paddle): add ExpendPaddle, LaserPaddle, ShrinkPaddle and update … * feat(paddle): add ExpendPaddle, LaserPaddle, ShrinkPaddle and update … * refactor: remove brick and gameManager packages * refactor(paddle): enhance documentation for Paddle and its variants
* 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(brick): Introduce brick components and behaviors - Added Brick, BrickHealth, BrickDrop, BrickExplode, and BrickFactory classes to manage brick entities and their behaviors (enhances gameplay mechanics). - Refactored existing classes to align with new component structure. * docs(brick): Corrected spelling of 'nheritance' to 'inheritance' Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * refactor(brick): remove multiple Spawns annotation from newBrick methods Removed the @spawns annotation from the newBrick methods in BrickFactory to streamline the code and eliminate unnecessary complexity (no functional changes). --------- Co-authored-by: Mai Thành <62001770+thnhmai06@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* 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 * refactor: Refactor GameManager, build/run scripts and update ci/cd - Renamed `BounceVerseApp` to `Bounceverse` for consistency. - Set the game title to the new class name. - Integrated `BrickFactory` for spawning bricks in the game. - Updated `build.gradle` for application configuration and added release tasks. * ci: add specific workflow permission - Added permissions to `buildRelease.yml`, `build.yml`, and `setup.yml` (to manage content access). - Created new log files for debugging (to assist in troubleshooting). - Updated `Readme.txt` to clarify the purpose of the directory. * docs: update git commit instructions to align with Conventional Commits Expanded the guidelines for writing commit messages, detailing structure, types, and examples to ensure clarity and consistency in commit history. --------- Co-authored-by: Mai Thành <62001770+thnhmai06@users.noreply.github.com>
Refactor the setup steps in build.yml, buildRelease.yml, and linting.yml to include a name for the setup action, improving readability and maintainability.
Cleared the `scriptParameters` option in `bytecode.run.xml` and `release.run.xml` to avoid unnecessary debug flags during execution.
) * refactor: reorganize component structure and improve entity tagging - Added new classes for Ball, BrickDrop, BrickExplode, and BrickHealth to enhance gameplay mechanics (introducing new behaviors and properties). - Updated .gitignore to include additional files and directories for better project management. - Adjusted BrickFactory to streamline brick creation process. * refactor: enhance BrickFactory to include entity type for bricks Added EntityType.BRICK to the newBrick method for better entity classification. Updated documentation for OptionalTag to correct a typo.
Eliminated SLF4J and Logback dependencies as they are no longer required for the project.
Changed the output directory from `release` to `out` in build.gradle and updated the artifact upload path in buildRelease.yml to reflect this change.
* feat: add configuration loading and game settings management Implement configuration loading from properties files to manage game settings dynamically. This includes setting the game title, version, and application mode based on the loaded configurations. Additionally, update the .gitignore to include new configuration files. * feat: implement game configuration loading and management Add structured loading of game configurations with separate classes for default options and system settings. This enhances the game's configurability and prepares for future expansion of settings management. * feat: add collision handling and launch options management Implement collision handling system and launch options for game configuration. This includes a new Collision class for managing collision logic and a LaunchOption class for parsing launch arguments (e.g., debug mode). * feat: enhance configuration loading with error handling Improve the loadConfigs method to throw an IOException when properties files cannot be opened (replaces assertion with exception handling). This ensures better error management during configuration loading. * feat: implement scene management and enhance collision handling - Added SceneFactory for managing game scenes (facilitates scene transitions). - Renamed Collision to CollisionSystem for clarity and improved structure. - Integrated credits loading into game settings (enhances user experience).
Modified the ProjectRootManager component in misc.xml to set the language level to JDK_24_PREVIEW for better compatibility with preview features.
* 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>
* feat: add game context and ball entity * feat: generate brick and ball, add simple collision * feat: apply FXGL physic * feat: spotlessApply * chore: delete empty file `CollisionSystem.java` * refactor: update branch with new project structures Introduce AnchorPoint enum for common anchor points on Rectangle2D. Refactor BallFactory to use default values for ball properties and improve entity spawning logic. Update collision handling in PhysicSystem for better interaction between entities. --------- Co-authored-by: Mai Thành <62001770+thnhmai06@users.noreply.github.com>
Update JDK setup to use Eclipse Temurin 24
Renamed several classes and updated their package paths to improve organization (e.g., moved `AnchorPoint`, `EntityType`, and `CanExecute` to `typing.enums` and `typing.interfaces`). Updated import statements accordingly to reflect these changes.
…ling Replace RuntimeException with BounceverseException in Bounceverse.java to provide more context on errors. The new exception class allows for additional details to be passed, enhancing error reporting.
# Conflicts: # .github/workflows/build.yml # .github/workflows/buildRelease.yml # .github/workflows/spotless.yml # .gitignore # .idea/misc.xml # build.gradle # docs/dev/guide.md # settings.gradle # src/main/java/com/github/codestorm/bounceverse/Bounceverse.java # src/main/java/com/github/codestorm/bounceverse/components/behaviors/Attack.java # src/main/java/com/github/codestorm/bounceverse/components/behaviors/Behavior.java # src/main/java/com/github/codestorm/bounceverse/components/behaviors/CooldownBehavior.java # src/main/java/com/github/codestorm/bounceverse/components/behaviors/Explosion.java # src/main/java/com/github/codestorm/bounceverse/components/behaviors/HealthDeath.java # src/main/java/com/github/codestorm/bounceverse/components/behaviors/ScaleChange.java # src/main/java/com/github/codestorm/bounceverse/components/behaviors/UndoableBehavior.java # src/main/java/com/github/codestorm/bounceverse/components/behaviors/paddle/PaddleShooting.java # src/main/java/com/github/codestorm/bounceverse/components/properties/Attributes.java # src/main/java/com/github/codestorm/bounceverse/components/properties/Shield.java # src/main/java/com/github/codestorm/bounceverse/core/LaunchOptions.java # src/main/java/com/github/codestorm/bounceverse/core/SettingsManager.java # src/main/java/com/github/codestorm/bounceverse/core/systems/GameSystem.java # src/main/java/com/github/codestorm/bounceverse/core/systems/InputSystem.java # src/main/java/com/github/codestorm/bounceverse/core/systems/PhysicSystem.java # src/main/java/com/github/codestorm/bounceverse/factory/SceneFactory.java # src/main/java/com/github/codestorm/bounceverse/factory/entities/BallFactory.java # src/main/java/com/github/codestorm/bounceverse/factory/entities/BrickFactory.java # src/main/java/com/github/codestorm/bounceverse/factory/entities/BulletFactory.java # src/main/java/com/github/codestorm/bounceverse/factory/entities/PaddleFactory.java # src/main/java/com/github/codestorm/bounceverse/factory/entities/WallFactory.java # src/main/resources/settings.properties
# Conflicts: # src/main/java/com/github/codestorm/bounceverse/typing/records/BlitzScore.java
feat: leaderboard
Refactor the package structure by moving UI-related classes into a new 'elements' subpackage for better organization and clarity. This includes the Hearts and HorizontalPositiveInteger classes, as well as updates to their import statements in related files.
…dd level display - Introduced a new method for assigning colors to bricks based on noise, ensuring each color appears at least once. - Added a level display to the game UI, showing the current level dynamically.
…ve ShieldSafetyNetComponent update(PaddlePowerComponent, PowerUpManager): refine paddle power handling and cooldown logic fix(UISystem, PhysicSystem, GameSystem): ensure proper initialization and shield visuals chore: minor improvements in Bounceverse.java and cooldown timing
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR updates the application from version 1.0.0 to 1.1.0, introducing new game assets and features. The update includes:
- Version bump to 1.1.0 in both configuration files
- Addition of video resolution settings (1280x720)
- New game assets: number textures (0-9), heart icon, brick textures, and sound effects
- Updated credits file with team member changes (removed Minh Ngoc, kept other members)
- New Hearts UI component for displaying player lives
Reviewed Changes
Copilot reviewed 77 out of 148 changed files in this pull request and generated 9 comments.
Show a summary per file
| File | Description |
|---|---|
| src/main/resources/settings.properties | Updated version to 1.1.0 and added video resolution config |
| gradle.properties | Updated version to 1.1.0-dev |
| src/main/resources/assets/credits.txt | Replaced old credits with updated team information |
| src/main/resources/assets/textures/* | Added number textures, heart icon, and brick variants |
| src/main/resources/assets/sounds/sfx/* | Added game sound effects |
| src/main/java/.../Hearts.java | New UI component for displaying player lives |
Files not reviewed (1)
- .idea/misc.xml: Language not supported
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| @@ -0,0 +1,7 @@ | |||
| CodeStorm Team | |||
Copilot
AI
Nov 12, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The title 'CodeStorm Team' is inconsistent with the old credits file which had 'CodeStorm' as the title. The new file also differs in formatting (e.g., '- Mai Thanh' vs 'Mai Thành').
| return; | ||
| } | ||
| while (container.getChildren().size() > lives) { | ||
| container.getChildren().removeLast(); |
Copilot
AI
Nov 12, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Using removeLast() method which may not be available in older Java versions. Consider using remove(container.getChildren().size() - 1) for better compatibility, or ensure the project targets Java 21+ where this method is available.
| public void reload() { | ||
| final var file = new File(FILENAME); | ||
| try { | ||
| final var ois = new ObjectInputStream(new FileInputStream(file)); |
Copilot
AI
Nov 12, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This FileInputStream is not always closed on method exit.
|
|
||
| try { | ||
| final var file = new File(FILENAME); | ||
| final var oos = new ObjectOutputStream(new FileOutputStream(file)); |
Copilot
AI
Nov 12, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This FileOutputStream is not always closed on method exit.
| } | ||
| } | ||
|
|
||
| private class PressAnyKeyState extends SubScene { |
Copilot
AI
Nov 12, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
PressAnyKeyState could be made static, since the enclosing instance is used only in its constructor.
| : ApplicationMode.RELEASE); | ||
|
|
||
| // ? Display | ||
| settings.setWidth(Integer.parseInt(gameSettings.getProperty("video.width"))); |
Copilot
AI
Nov 12, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Potential uncaught 'java.lang.NumberFormatException'.
|
|
||
| // ? Display | ||
| settings.setWidth(Integer.parseInt(gameSettings.getProperty("video.width"))); | ||
| settings.setHeight(Integer.parseInt(gameSettings.getProperty("video.height"))); |
Copilot
AI
Nov 12, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Potential uncaught 'java.lang.NumberFormatException'.
| * <h1>{@link Component}</h1> | ||
| * | ||
| * Một thành phần lưu trữ trên Entity trong game {@link Bounceverse}.<br> | ||
| * Giống như phiên bản class của {@link com.almasb.fxgl.entity.component.Component}. | ||
| * | ||
| * @see com.almasb.fxgl.entity.component.Component | ||
| */ | ||
| public abstract sealed class Component extends com.almasb.fxgl.entity.component.Component |
Copilot
AI
Nov 12, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Component has the same name as its supertype com.almasb.fxgl.entity.component.Component.
| * <h1>{@link Component}</h1> | |
| * | |
| * Một thành phần lưu trữ trên Entity trong game {@link Bounceverse}.<br> | |
| * Giống như phiên bản class của {@link com.almasb.fxgl.entity.component.Component}. | |
| * | |
| * @see com.almasb.fxgl.entity.component.Component | |
| */ | |
| public abstract sealed class Component extends com.almasb.fxgl.entity.component.Component | |
| * <h1>{@link GameComponent}</h1> | |
| * | |
| * Một thành phần lưu trữ trên Entity trong game {@link Bounceverse}.<br> | |
| * Giống như phiên bản class của {@link com.almasb.fxgl.entity.component.Component}. | |
| * | |
| * @see com.almasb.fxgl.entity.component.Component | |
| */ | |
| public abstract sealed class GameComponent extends com.almasb.fxgl.entity.component.Component |
| * | ||
| * @see com.almasb.fxgl.entity.EntityFactory | ||
| */ | ||
| abstract class EntityFactory implements com.almasb.fxgl.entity.EntityFactory { |
Copilot
AI
Nov 12, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
EntityFactory has the same name as its supertype com.almasb.fxgl.entity.EntityFactory.
Refactor the color assignment process by replacing the loop with System.arraycopy for improved performance. Clear world properties before setting new values to ensure a clean state.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
Copilot reviewed 78 out of 149 changed files in this pull request and generated 3 comments.
Files not reviewed (1)
- .idea/misc.xml: Language not supported
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| /** | ||
| * | ||
| * | ||
| * <h1>%{@link ViewElement}</h1> |
Copilot
AI
Nov 12, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| /** | ||
| * | ||
| * | ||
| * <h1>${@link LaunchOptions}</h1> |
Copilot
AI
Nov 12, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| CodeStorm Team | ||
| Leader: | ||
| - Mai Thanh (@thnhmai06) | ||
| Members: | ||
| - Manh Tan (@ManhTanTran) | ||
| - Anh Tuan (@huynhtuan372) |
Copilot
AI
Nov 12, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Team member 'Minh Ngọc (@minngoc1213)' was removed from the credits without explanation. If this person is no longer part of the team, consider documenting this change in the commit message or PR description for transparency.
…, GameSystem, InputSystem)
Implemented various Power-Up classes (ExpandPaddle, ShrinkPaddle, ReversePaddle, etc.) to enhance gameplay. Updated PaddleViewManager to manage clones effectively and adjusted related components for better performance.
feat(core): centralized asset manager, improved settings system, and build workflow updates
|
insane update |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
Copilot reviewed 102 out of 233 changed files in this pull request and generated 3 comments.
Files not reviewed (1)
- .idea/misc.xml: Language not supported
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| /** | ||
| * | ||
| * | ||
| * <h1>%{@link ScoreLike}</h1> |
Copilot
AI
Nov 12, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| /** | ||
| * | ||
| * | ||
| * <h1>${@link EndlessScore}</h1> |
Copilot
AI
Nov 12, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| } | ||
| } | ||
|
|
||
| private class PressAnyKeyState extends SubScene { |
Copilot
AI
Nov 12, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
PressAnyKeyState could be made static, since the enclosing instance is used only in its constructor.
This pull request introduces several significant updates to the project, including a comprehensive new Vietnamese README, major improvements to asset management, refactoring of the main game application class, and updates to build and IDE configuration files. The most important changes are summarized below:
Documentation and Project Info:
README.md) that describes the game's features, architecture (ECS & OOP), team members, and instructions for running and playing the game.Asset Management:
AssetsPathclass to centralize and organize all asset paths (textures, sounds, videos, etc.), including color-coded brick textures and sound effect groupings. This improves maintainability and consistency when accessing assets throughout the codebase.Core Game Initialization and Structure:
Bounceverse.javato:AppEventSystem,GameSystem,InputSystem,UISystem, etc.) for improved modularity.Build and Versioning:
releasetask instead ofbuildReleasefor both the GitHub Actions workflow and local run configurations. [1] [2]1.0.0-devto1.1.0-devingradle.properties.IDE and Run Configuration:
.run/build.run.xml) and removed obsolete bytecode run configuration (.run/bytecode.run.xml). [1] [2].idea/misc.xmlfile, likely to clean up outdated or unnecessary IDE settings.