refactor: improve ghost piece logic
This commit is contained in:
@@ -124,7 +124,7 @@ class Piece(Entity):
|
||||
tile_size = ConfigurationManager.get("engine", "tile-size")
|
||||
|
||||
# ghost piece
|
||||
for square in self._get_ghost_points(well, stack):
|
||||
for square in self._get_ghost_piece_points(well, stack):
|
||||
pygame.draw.polygon(surface, pygame.Color("#FFFFFF"), square, max(tile_size // 6, 1)) # TDOD change white to yaml
|
||||
|
||||
super().draw(surface)
|
||||
@@ -176,31 +176,6 @@ class Piece(Entity):
|
||||
self.points = self.previous_points
|
||||
self.center = self.previous_center
|
||||
|
||||
def _mimic_move(self, vector: Tuple) -> List:
|
||||
mimic_points = copy.deepcopy(self.points)
|
||||
|
||||
for square in mimic_points:
|
||||
for vertex in square:
|
||||
vertex[0] += vector[0]
|
||||
vertex[1] += vector[1]
|
||||
|
||||
return mimic_points
|
||||
|
||||
# TODO re work functuon
|
||||
def _mimic_move_p(self, vector: Tuple, points: Tuple) -> List:
|
||||
mimic_points = copy.deepcopy(points)
|
||||
|
||||
for square in mimic_points:
|
||||
for vertex in square:
|
||||
vertex[0] += vector[0]
|
||||
vertex[1] += vector[1]
|
||||
|
||||
return mimic_points
|
||||
|
||||
def _play_piece_set_sound(self) -> None:
|
||||
piece_set_sound_file = ConfigurationManager.get("sound", "piece-set")
|
||||
self.piece_set_sound.play(mixer.Sound(piece_set_sound_file))
|
||||
|
||||
def _get_points(self, shape: Tuple, position: Tuple) -> List:
|
||||
tile_size = ConfigurationManager.get("engine", "tile-size")
|
||||
|
||||
@@ -248,19 +223,36 @@ class Piece(Entity):
|
||||
|
||||
return True
|
||||
|
||||
def _mimic_move(self, vector: Tuple) -> List:
|
||||
mimic_points = copy.deepcopy(self.points)
|
||||
|
||||
for square in mimic_points:
|
||||
for vertex in square:
|
||||
vertex[0] += vector[0]
|
||||
vertex[1] += vector[1]
|
||||
|
||||
return mimic_points
|
||||
|
||||
def _play_piece_set_sound(self) -> None:
|
||||
piece_set_sound_file = ConfigurationManager.get("sound", "piece-set")
|
||||
self.piece_set_sound.play(mixer.Sound(piece_set_sound_file))
|
||||
|
||||
def _entity_is_below(self, entity: Entity) -> bool:
|
||||
tile_size = ConfigurationManager.get("engine", "tile-size")
|
||||
mimic_points = self._mimic_move((0, tile_size))
|
||||
return entity and entity._collide(mimic_points)
|
||||
|
||||
# TODO rework function
|
||||
def _get_ghost_points(self, well: Well, stack: "Stack") -> List:
|
||||
def _get_ghost_piece_points(self, well: Well, stack: "Stack") -> List:
|
||||
tile_size = ConfigurationManager.get("engine", "tile-size")
|
||||
prior_points = []
|
||||
current_points = self.points
|
||||
current_points = copy.deepcopy(self.points)
|
||||
|
||||
while not well._collide(current_points) and not stack._collide(current_points):
|
||||
prior_points = current_points
|
||||
current_points = self._mimic_move_p((0, tile_size), current_points)
|
||||
prior_points = copy.deepcopy(current_points)
|
||||
for square in current_points:
|
||||
for vertex in square:
|
||||
vertex[1] += 1 * tile_size
|
||||
|
||||
return prior_points
|
||||
|
||||
# shape attributes
|
||||
|
||||
Reference in New Issue
Block a user