Commit Graph

14 Commits

Author SHA1 Message Date
Kieran Kihn
8a00b66047 refactor(game): return drawn cards in updateStateByDraw
- Updated `updateStateByDraw` to return a `std::vector<Card>` instead of `void`.
- Adjusted `ServerGameState`, `GameState`, and `ClientGameState` implementations to reflect the change.
2025-12-02 12:06:06 +08:00
Kieran Kihn
e5304b8c6c refactor(game): simplify GameState construction and initialization
- Removed `GameStatus` dependency from `GameState` constructors.
- Adjusted `ClientGameState` and `ServerGameState` constructors accordingly.
- Simplified `ServerGameState::init()` to handle card initialization and player actions.
- Updated tests to reflect these changes.
2025-12-02 11:08:42 +08:00
Kieran Kihn
e78741bd9d refactor(game): encapsulate Player and ClientGameState state management
- Replaced public `Player::handCard` pointer with private `HandCard` member.
- Introduced `draw`, `play`, and `getCards` methods in `Player` and `ClientGameState`.
- Modified `ClientGameState` constructor to accept player name instead of `Player` object.
- Updated tests to reflect new `Player` and `ClientGameState` structure.
2025-11-18 17:15:07 +08:00
Kieran Kihn
423c237a39 fix(game): remove redundant PlayerState::play call in GameState::play
- Eliminated unnecessary `PlayerState::play` method invocation to streamline card play logic.
2025-11-17 22:10:16 +08:00
Kieran Kihn
ebac6291b0 refactor(game): introduce draw and play methods in PlayerState and subclasses
- Replaced `setRemainingCardCount` with `draw` and `play` methods.
- Added virtual overrides for player-specific behaviors in `ClientPlayerState` and `ServerPlayerState`.
- Refactored `ServerGameState::init` to centralize deck and discard pile setup.
- Updated `updateStateByDraw` to leverage `PlayerState::draw` for consistency.
2025-11-17 21:16:50 +08:00
Kieran Kihn
d5e1d7f03d fix(game): add validation for card existence in GameState::play
- Throw exception if card is not found in player's hand.
- Ensure loop exits correctly after playing the card.
2025-11-17 15:49:45 +08:00
Kieran Kihn
cbb49343bc fix(game): refactor GameState::onDraw logic
- Replaced direct draw and player update logic with `updateStateByDraw`.
- Simplified card drawing implementation with `handCard->draw`.
2025-11-17 15:24:40 +08:00
Kieran Kihn
b8761d1809 fix(game): refactor ServerPlayerState and update ServerGameState::updateStateByCard logic
- Replaced `handCard_` with `handCard` in `ServerPlayerState`.
- Updated `updateStateByCard` in `ServerGameState` to handle card validation and player actions.
- Made `updateStateByCard` virtual in `GameState`.
2025-11-17 15:24:21 +08:00
Kieran Kihn
2c312343d7 fix(game): ensure updateStateByDraw correctly increments player's card count and advances to the next player 2025-11-17 14:55:38 +08:00
Kieran Kihn
6003cadc88 fix(game): use std::move for name in ClientPlayerState constructor 2025-11-17 13:58:55 +08:00
Kieran Kihn
a025461be8 fix(game): move GameState implementation from .cpp to .h to resolve linkage issues 2025-11-17 12:32:39 +08:00
Kieran Kihn
7740759f33 fix(game): add construct function of ClientGameState 2025-11-16 22:05:36 +08:00
Kieran Kihn
6b2cb78628 fix(game): add setIsUno for PlayerState 2025-11-16 21:47:23 +08:00
Kieran Kihn
8dbdbb395c feat(game): add PlayerState and GameState 2025-11-16 20:22:19 +08:00