Fix false lock display, improve refresh

This commit is contained in:
adrienmalin 2019-05-13 20:03:17 +02:00
parent 575472af8b
commit b51ba2cc4e

View File

@ -79,11 +79,7 @@ class Scheduler(sched.scheduler, dict):
def cancel(self, name): def cancel(self, name):
if name in self: if name in self:
try: sched.scheduler.cancel(self, self.pop(name))
sched.scheduler.cancel(self, self.pop(name))
except:
sys.exit(name)
scheduler = Scheduler() scheduler = Scheduler()
@ -134,9 +130,11 @@ class Tetromino:
else: else:
return False return False
def move(self, movement, lock=True): def move(self, movement, lock=True, refresh=True):
if self.move_rotate(movement, self.minoes_positions): if self.move_rotate(movement, self.minoes_positions):
self.rotated_last = False self.rotated_last = False
if refresh:
self.matrix.refresh()
return True return True
else: else:
if ( if (
@ -145,6 +143,7 @@ class Tetromino:
and "lock" not in scheduler and "lock" not in scheduler
): ):
scheduler.single_shot("lock", self.lock_delay, self.matrix.lock) scheduler.single_shot("lock", self.lock_delay, self.matrix.lock)
self.matrix.refresh()
return False return False
def rotate(self, direction): def rotate(self, direction):
@ -159,6 +158,7 @@ class Tetromino:
self.rotated_last = False self.rotated_last = False
if rotation_point == 5: if rotation_point == 5:
self.rotation_point_5_used = True self.rotation_point_5_used = True
self.matrix.refresh()
return True return True
else: else:
return False return False
@ -169,14 +169,14 @@ class Tetromino:
def hard_drop(self): def hard_drop(self):
lines = 0 lines = 0
while self.move(Movement.DOWN, lock=False): while self.move(Movement.DOWN, lock=False, refresh=False):
lines += 2 lines += 2
self.matrix.refresh()
self.matrix.game.stats.piece_dropped(lines) self.matrix.game.stats.piece_dropped(lines)
self.matrix.lock() self.matrix.lock()
def fall(self): def fall(self):
if self.move(Movement.DOWN): self.move(Movement.DOWN)
self.matrix.refresh()
def t_spin(self): def t_spin(self):
return "" return ""
@ -317,7 +317,6 @@ class Matrix(Window):
def lock(self): def lock(self):
if not self.piece.move(Movement.DOWN): if not self.piece.move(Movement.DOWN):
scheduler.cancel("fall") scheduler.cancel("fall")
scheduler.cancel("lock")
t_spin = self.piece.t_spin() t_spin = self.piece.t_spin()
@ -651,6 +650,7 @@ class Game:
return self.random_bag.pop()(self.matrix, Next.PIECE_POSITION) return self.random_bag.pop()(self.matrix, Next.PIECE_POSITION)
def new_piece(self): def new_piece(self):
scheduler.cancel("lock")
if not self.matrix.piece: if not self.matrix.piece:
self.matrix.piece, self.next.piece = self.next.piece, self.random_piece() self.matrix.piece, self.next.piece = self.next.piece, self.random_piece()
self.next.refresh() self.next.refresh()
@ -668,7 +668,6 @@ class Game:
pass pass
else: else:
action() action()
self.matrix.refresh()
def pause(self): def pause(self):
self.stats.time = time.time() - self.stats.time self.stats.time = time.time() - self.stats.time