refactor: improve ghost piece logic

This commit is contained in:
2021-06-14 10:14:04 -04:00
parent cbebb81693
commit 7d54c0eb91

View File

@@ -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