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