Skip to content

Commit

Permalink
fix: "PreMove" text disappeared on online game; PreMove invalid after…
Browse files Browse the repository at this point in the history
… the opponent moves.
  • Loading branch information
LKL1235 committed May 22, 2024
1 parent 17d7d19 commit 39dbd04
Show file tree
Hide file tree
Showing 7 changed files with 13 additions and 27 deletions.
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,5 @@ config.ini
dist/
build/
__pycache__/
.venv/
.venv/
.vscode/
16 changes: 0 additions & 16 deletions .vscode/launch.json

This file was deleted.

4 changes: 1 addition & 3 deletions src/cli_chess/core/game/offline_game/offline_game_model.py
Original file line number Diff line number Diff line change
Expand Up @@ -65,15 +65,13 @@ def make_move(self, move: str):

def make_premove(self, move: str):
"""Verify move and Set board model premove"""
if self.game_in_progress:
if self.game_in_progress and not self.is_my_turn():
try:
if self.board_model.board.is_game_over():
self.game_in_progress = False
raise Warning("Game has already ended")
if self.board_model.get_premove() is not None:
raise Warning("You already have a premove set")
if self.is_my_turn():
raise Warning("It is your turn, cant not make a premove")
move = move.strip()
if not move:
raise Warning("No move specified")
Expand Down
5 changes: 4 additions & 1 deletion src/cli_chess/core/game/online_game/online_game_model.py
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,10 @@ def handle_game_state_dispatcher_event(self, **kwargs) -> None:
self.board_model.make_moves_from_list(event.get('moves', []).split())
# if board_model.premove is set, make the move
if self.is_my_turn() and self.board_model.get_premove() is not None:
self.make_move(self.board_model.get_premove())
try:
self.make_move(self.board_model.get_premove())
except Exception:
self.board_model.set_premove(None)

if kwargs['gameOver']:
self._report_game_over(status=event.get('status'), winner=event.get('winner', ""))
Expand Down
1 change: 1 addition & 0 deletions src/cli_chess/core/game/online_game/online_game_view.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ def _create_container(self) -> Container:
self.move_list_container,
self.material_diff_lower_container,
self.player_info_lower_container,
self.premove_container,
self.clock_lower
])
]),
Expand Down
6 changes: 3 additions & 3 deletions src/cli_chess/modules/premove/premove_presenter.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,13 +24,13 @@ class PremovePresenter:
def __init__(self, model: GameModelBase):
self.model = model

self.view = PremoveView(self, self.get_permove())
self.view = PremoveView(self, self.get_premove())

self.model.e_game_model_updated.add_listener(self.update)

def update(self, **kwargs) -> None:
"""Updates the view based on specific model updates"""
self.view.update(self.get_permove())
self.view.update(self.get_premove())

def get_permove(self) -> dict:
def get_premove(self) -> dict:
return self.model.board_model.get_premove()
5 changes: 2 additions & 3 deletions src/cli_chess/modules/premove/premove_view.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,9 @@ class PremoveView:
def __init__(self, presenter: PremovePresenter, premove: str | None = None):
self.presenter = presenter
self.premove = premove
self.update(premove)
if not self.premove:
self.premove = "None"
self._premove_control = FormattedTextControl(text=lambda: "PreMove: " + self.premove, style="class:player-info.title")
self._premove_control = FormattedTextControl(text=lambda: "PreMove: " + self.premove, style="class:pre-move")
self._container = self._create_container()

def _create_container(self) -> Container:
Expand All @@ -37,7 +36,7 @@ def _create_container(self) -> Container:
], width=D(min=1), height=D(max=1), window_too_small=ConditionalContainer(Window(), False))

def update(self, premove: str) -> None:
"""Updates the player info using the data passed in"""
"""Updates the pre-move text display with the pre-move passed in"""
if not premove:
self.premove = "None"
else:
Expand Down

0 comments on commit 39dbd04

Please sign in to comment.