Skip to content

v0.2.1 - Refactors and improves game functionality#145

Merged
fboucher merged 42 commits intomainfrom
v-next
Dec 25, 2025
Merged

v0.2.1 - Refactors and improves game functionality#145
fboucher merged 42 commits intomainfrom
v-next

Conversation

@fboucher
Copy link
Copy Markdown
Owner

Refactors the game, focusing on usability, code quality, and deployment. This includes renaming classes for clarity, improving adventurer creation, enabling Docker deployment, and adding combat features.

  • Renames Preview classes to DTO for better clarity and consistency
  • Improves adventurer creation flow, allowing for a smoother start to the game
  • Enables local Docker deployment, improving the game's accessibility and ease of setup
  • Removes seed adventurers from database, ensuring a clean slate for new players
  • Adds damage dice rolling functionality, enhancing combat mechanics
  • Implements game over and victory conditions, creating a more complete gameplay experience
  • Implements combat turn management, providing a structured combat system
  • Implements door type drawing functions with lock/unlock feature for dungeon map

Updates dependencies and fixes minor issues:

  • Upgrades .NET and Aspire dependencies to the latest versions
  • Addresses combobox selection and map debug issues

Enhancements to the dungeon map:

  • Adds a complete Dungeon theme with custom backgrounds, text, and accent colors
  • Corrects door placement on the map
  • Improves map menu placement
  • Enables moving exits in the room editor
  • Adds a room editing dialog

Addresses issue:

Improves adventure management:

  • Adds adventure name property and use adventurer ID reference
  • Adds adventurer deletion functionality
  • Refactors adventure preview loading, adding adventure deletion functionality
  • Updates save game count to use adventure previews

UX improvements:

  • Disables room buttons when no room exists
  • When dialogue cancelled, nextRoom should be set to null
  • Implements maps-menu enable/disable based on nextRoom draft state

fboucher and others added 30 commits June 6, 2025 09:37
Adds a dialog to edit room properties, specifically the position of doors.

This allows users to adjust room layouts and door placements after a room has been created.
Implements functionality to move door positions within the room editor dialog.

This allows users to fine-tune door placement within a room, enhancing the level design process.
It dynamically shows the correct axes of movement by looking at door direction and only displaying the perpendicular movement axes.
Allows adjusting the position of exits on walls within the room editor.

This change introduces functionality to dynamically update exit positions, providing a more intuitive and interactive editing experience.
The "Modal" property of the dialog was set to false to allow background interaction.
Replaces directional buttons with a slider for precise
door positioning on walls.

This change allows users to visually adjust the door's
location within the room editor dialog, enhancing the
user experience.
Enables door repositioning in room editor

fix #77
Makes the map menu stick to the top of the screen to prevent it from scrolling off-screen during gameplay.
Co-authored-by: FBoucher <2404846+FBoucher@users.noreply.github.com>
Enable/disable maps-menu controls based on room draft state
Disables the "Add Room" and "Edit Room" buttons when there isn't a room to add or edit. This prevents the user from interacting with those features when they are not available and improves the user experience.
Disables room buttons when no room exists
Adjusts the positioning of doors on the map to ensure they are placed outside the adjacent room's boundary.

Simplifies door drawing logic, ensuring doors are consistently drawn as full squares.
Corrects a typo in the new room dialog where "gameTurn" should be "get".

This improves the readability of the generated room description for the user.
Adjusts the door coordinate calculation to ensure
doors are placed correctly relative to rooms.

The canvas drawing logic was also reviewed, and
unnecessary offset code for vertical doors was removed.
fixes #119
Changes the implementation of GetSaveGameCount to utilize the GetAdventurePreviews method, providing a more accurate count of saved games.

Adds .gitignore file for Rider IDE to ignore IDE specific files.
Implements the ability to delete saved adventures.

This change introduces a delete endpoint in the service and a corresponding button in the adventure picker component.
When a user clicks the delete button, the selected adventure is removed and the adventure list is refreshed.
Stops event propagation on the adventure deletion button to prevent unintended row selection when deleting an adventure.
Also, adds project-level IDE configuration files.
Improves the adventure picker component by extracting the adventure preview loading logic into a separate method.

This change enhances code readability and maintainability.
Also, this fixes a potential UI update issue by explicitly calling StateHasChanged after loading previews when deleting an adventure.
Enables adventure deletion and fixes save count
Enables the deletion of adventurers, ensuring that an adventurer can only be deleted if it is not currently associated with any existing adventures.

This prevents data integrity issues and provides a safeguard against accidentally deleting adventurers that are actively used in a game.
Adds adventurer deletion functionality
)

* Initial analysis of issue #116 - combat screen reset functionality

Co-authored-by: FBoucher <2404846+FBoucher@users.noreply.github.com>

* Implement "Start a new fight" button to reset combat screen - fixes #116

Co-authored-by: FBoucher <2404846+FBoucher@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: FBoucher <2404846+FBoucher@users.noreply.github.com>
* Initial plan

* Add adventure name feature - update domain models and services

Co-authored-by: FBoucher <2404846+FBoucher@users.noreply.github.com>

* Remove foreign key constraint from adventures table

Co-authored-by: FBoucher <2404846+FBoucher@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: FBoucher <2404846+FBoucher@users.noreply.github.com>
Copilot AI and others added 12 commits November 8, 2025 08:23
…colors (#128)

* Initial plan

* Add Dungeon theme option to Settings page

Co-authored-by: fboucher <2404846+fboucher@users.noreply.github.com>

* Address code review feedback - improve theme persistence

Co-authored-by: fboucher <2404846+fboucher@users.noreply.github.com>

* Updates Aspire SDK and package versions

Updates the Aspire.AppHost.Sdk version in the AppHost project file.

Adds a Directory.Packages.props file to manage package versions centrally,
and updates various Aspire and related package versions to their latest releases,
ensuring consistency and compatibility across the solution.

* Implement full Dungeon theme with custom backgrounds and text colors

Co-authored-by: fboucher <2404846+fboucher@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: fboucher <2404846+fboucher@users.noreply.github.com>
Co-authored-by: fboucher <fboucher@outlook.com>
…ngeon map (#129)

* Implement door details with different door types (Archway, Wooden, Metal, Reinforced, Curtain, Portcullis, Stone Slab)
Co-authored-by: fboucher <2404846+fboucher@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: fboucher <2404846+fboucher@users.noreply.github.com>
Addresses an issue where combobox selections were not handled correctly.
Now correctly passes the selected object instead of just the ID.

Also adds debug logging to help resolve an intermittent map drawing issue.
* upgrade in progress

* feat(dab): Configure connection string via environment variable

Configures the Data API Builder (DAB) connection string using an environment variable.

This change ensures that the connection string for the database is properly set within the DAB configuration, especially during upgrade scenarios.
It removes the port from the DAB template and constructs the connection string dynamically in code, referencing the MySQL resource's properties.

* Replaces bind mount with file copy

Replaces the bind mount approach for database initialization with a simpler file copy mechanism.

This change simplifies the setup process, especially during upgrades, by ensuring that database scripts are copied directly into the container.
Adds logic to manage combat turns, including identifying the current fighter and alternating turns between adventurer and creature.

Introduces a dialog to select the first fighter and displays the current turn information.

Fixes: #133
Adds logic to handle adventurer and creature defeats, displaying appropriate messages.
Disables user interaction after combat ends to prevent further actions.
Resets health depletion flags and UI elements on new fight start.

Fixes #135
Implements the ability to roll damage dice within the combat page.
This allows players to simulate damage rolls using 1D6 or 2D6 dice.

Issue #137
* Removes demo adventurers from seed data

Removes the demo adventurers from the database seed data.

This prevents the creation of unnecessary or test adventurers
when the database is initialized, ensuring a cleaner and more
realistic initial state.

* Removes demo adventurers from seed data

The demo adventurers are no longer needed in the
database seed data. This commit removes them.
* Adds Docker configuration for local development

Sets up Docker Compose to orchestrate the application, database, and data api builder services for local development.

Includes Dockerfile for the web client.

Ensures database creation if it doesn't exist.

Includes `.dockerignore` to exclude unnecessary files during image builds.

Sets up `.env.example` with required environment variables

* Enables running the app locally with Docker

Provides a `docker-compose.yml` file for easy local deployment using Docker.

Adds Dockerfiles for the database, Data API Builder (DAB), and web app components.

Includes an `.env.example` file with configurable environment variables.

Publishes images to Docker Hub upon tagging a commit.

Fixes #91
* Improves adventurer creation experience

Enhances the adventurer creation page by:

- Removing unnecessary conditional rendering for weapons, streamlining the weapon selection process.
- Updates the manoeuvre selection to provide more guidance to the user, including a dynamic placeholder text and label displaying the current weapon.
- Sets default values to avoid null reference exceptions, improving robustness.
- Sets default row size on the AdventurerPicker component to medium for better UI consistency

Fixes #142

* Navigates to adventure page after character creation

Updates the character creation process to navigate to the
adventure page with the newly created adventurer's ID.
This enables a smoother transition to gameplay.

Adds auto-selection of the created adventurer.

Fixes #142
Renames the `*Preview` classes to `*DTO` to better reflect their purpose as Data Transfer Objects.

This change improves clarity and consistency in the codebase.
@fboucher fboucher changed the title Refactors and improves game functionality v0.2.1 v0.2.1 - Refactors and improves game functionality Dec 25, 2025
@fboucher fboucher merged commit b9b39bb into main Dec 25, 2025
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants