mirror of
https://github.com/kristoferssolo/Tetris.git
synced 2025-10-21 20:00:35 +00:00
feat(game): disable movement while paused
This commit is contained in:
parent
36edbacbbc
commit
a136a6ebf7
@ -1,6 +1,7 @@
|
||||
from typing import Any
|
||||
|
||||
import pygame
|
||||
from loguru import logger
|
||||
from utils import CONFIG, Figure, GameMode
|
||||
|
||||
from .base import BaseScreen
|
||||
@ -34,6 +35,7 @@ class Game(BaseScreen):
|
||||
self.settings = settings
|
||||
self._initialize_game_components()
|
||||
self._start_background_music()
|
||||
self.paused = False
|
||||
|
||||
def draw(self) -> None:
|
||||
"""
|
||||
@ -66,7 +68,16 @@ class Game(BaseScreen):
|
||||
|
||||
def pause(self) -> None:
|
||||
"""Pause the game."""
|
||||
self.tetris.pause()
|
||||
if self.paused:
|
||||
logger.debug("Unpause")
|
||||
self.paused = False
|
||||
self.tetris.unfreeze()
|
||||
self.music.play(-1, fade_ms=100)
|
||||
else:
|
||||
logger.debug("Pause")
|
||||
self.paused = True
|
||||
self.tetris.freeze()
|
||||
self.music.fadeout(100)
|
||||
|
||||
def _initialize_game_components(self) -> None:
|
||||
"""Initialize game-related components."""
|
||||
|
||||
@ -91,10 +91,11 @@ class Tetris(BaseScreen):
|
||||
|
||||
def handle_events(self) -> None:
|
||||
"""Handle player input events."""
|
||||
self._handle_movement_keys()
|
||||
self._handle_rotation_keys()
|
||||
self._handle_down_key()
|
||||
self._handle_drop_key()
|
||||
if not self.paused:
|
||||
self._handle_movement_keys()
|
||||
self._handle_rotation_keys()
|
||||
self._handle_down_key()
|
||||
self._handle_drop_key()
|
||||
|
||||
def move_down(self) -> bool:
|
||||
"""
|
||||
@ -164,17 +165,15 @@ class Tetris(BaseScreen):
|
||||
logger.info(f"Restarting the game. Score was {self.score}")
|
||||
self._reset_game_state()
|
||||
|
||||
def pause(self) -> None:
|
||||
"""Pause the game."""
|
||||
self.paused: bool
|
||||
if self.paused:
|
||||
logger.debug("Unpause")
|
||||
self.paused = False
|
||||
self.timers.unpause()
|
||||
else:
|
||||
logger.debug("Pause")
|
||||
self.paused = True
|
||||
self.timers.pause()
|
||||
def freeze(self) -> None:
|
||||
"""Freeze all timers."""
|
||||
self.timers.freeze()
|
||||
self.paused = True
|
||||
|
||||
def unfreeze(self) -> None:
|
||||
"""Unfreeze all timers."""
|
||||
self.timers.unfreeze()
|
||||
self.paused = False
|
||||
|
||||
def mute(self) -> None:
|
||||
"""Mute the game."""
|
||||
|
||||
@ -76,12 +76,12 @@ class Timers:
|
||||
"""Returns an iterator over the timers."""
|
||||
return iter((self.vertical, self.horizontal, self.rotation, self.drop))
|
||||
|
||||
def pause(self) -> None:
|
||||
"""Pauses all timers."""
|
||||
def freeze(self) -> None:
|
||||
"""Freezes all timers."""
|
||||
for timer in self:
|
||||
timer.deactivate()
|
||||
|
||||
def unpause(self) -> None:
|
||||
"""Unpauses all timers."""
|
||||
def unfreeze(self) -> None:
|
||||
"""Unfreezes all timers."""
|
||||
for timer in self:
|
||||
timer.activate()
|
||||
|
||||
Loading…
Reference in New Issue
Block a user