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
|
from typing import Any
|
||||||
|
|
||||||
import pygame
|
import pygame
|
||||||
|
from loguru import logger
|
||||||
from utils import CONFIG, Figure, GameMode
|
from utils import CONFIG, Figure, GameMode
|
||||||
|
|
||||||
from .base import BaseScreen
|
from .base import BaseScreen
|
||||||
@ -34,6 +35,7 @@ class Game(BaseScreen):
|
|||||||
self.settings = settings
|
self.settings = settings
|
||||||
self._initialize_game_components()
|
self._initialize_game_components()
|
||||||
self._start_background_music()
|
self._start_background_music()
|
||||||
|
self.paused = False
|
||||||
|
|
||||||
def draw(self) -> None:
|
def draw(self) -> None:
|
||||||
"""
|
"""
|
||||||
@ -66,7 +68,16 @@ class Game(BaseScreen):
|
|||||||
|
|
||||||
def pause(self) -> None:
|
def pause(self) -> None:
|
||||||
"""Pause the game."""
|
"""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:
|
def _initialize_game_components(self) -> None:
|
||||||
"""Initialize game-related components."""
|
"""Initialize game-related components."""
|
||||||
|
|||||||
@ -91,10 +91,11 @@ class Tetris(BaseScreen):
|
|||||||
|
|
||||||
def handle_events(self) -> None:
|
def handle_events(self) -> None:
|
||||||
"""Handle player input events."""
|
"""Handle player input events."""
|
||||||
self._handle_movement_keys()
|
if not self.paused:
|
||||||
self._handle_rotation_keys()
|
self._handle_movement_keys()
|
||||||
self._handle_down_key()
|
self._handle_rotation_keys()
|
||||||
self._handle_drop_key()
|
self._handle_down_key()
|
||||||
|
self._handle_drop_key()
|
||||||
|
|
||||||
def move_down(self) -> bool:
|
def move_down(self) -> bool:
|
||||||
"""
|
"""
|
||||||
@ -164,17 +165,15 @@ class Tetris(BaseScreen):
|
|||||||
logger.info(f"Restarting the game. Score was {self.score}")
|
logger.info(f"Restarting the game. Score was {self.score}")
|
||||||
self._reset_game_state()
|
self._reset_game_state()
|
||||||
|
|
||||||
def pause(self) -> None:
|
def freeze(self) -> None:
|
||||||
"""Pause the game."""
|
"""Freeze all timers."""
|
||||||
self.paused: bool
|
self.timers.freeze()
|
||||||
if self.paused:
|
self.paused = True
|
||||||
logger.debug("Unpause")
|
|
||||||
self.paused = False
|
def unfreeze(self) -> None:
|
||||||
self.timers.unpause()
|
"""Unfreeze all timers."""
|
||||||
else:
|
self.timers.unfreeze()
|
||||||
logger.debug("Pause")
|
self.paused = False
|
||||||
self.paused = True
|
|
||||||
self.timers.pause()
|
|
||||||
|
|
||||||
def mute(self) -> None:
|
def mute(self) -> None:
|
||||||
"""Mute the game."""
|
"""Mute the game."""
|
||||||
|
|||||||
@ -76,12 +76,12 @@ class Timers:
|
|||||||
"""Returns an iterator over the timers."""
|
"""Returns an iterator over the timers."""
|
||||||
return iter((self.vertical, self.horizontal, self.rotation, self.drop))
|
return iter((self.vertical, self.horizontal, self.rotation, self.drop))
|
||||||
|
|
||||||
def pause(self) -> None:
|
def freeze(self) -> None:
|
||||||
"""Pauses all timers."""
|
"""Freezes all timers."""
|
||||||
for timer in self:
|
for timer in self:
|
||||||
timer.deactivate()
|
timer.deactivate()
|
||||||
|
|
||||||
def unpause(self) -> None:
|
def unfreeze(self) -> None:
|
||||||
"""Unpauses all timers."""
|
"""Unfreezes all timers."""
|
||||||
for timer in self:
|
for timer in self:
|
||||||
timer.activate()
|
timer.activate()
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user