From 53948779548748e84ff6ded37ad0fc9f76b25024 Mon Sep 17 00:00:00 2001 From: Simon Cross Date: Sun, 18 May 2014 00:33:58 +0200 Subject: [PATCH] Allow shift location action to move the whole row. --- naja/actions.py | 4 +++- naja/gameboard.py | 18 +++++++++++------- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/naja/actions.py b/naja/actions.py index 0baba3a..431b126 100644 --- a/naja/actions.py +++ b/naja/actions.py @@ -293,7 +293,9 @@ class ShiftLocations(LocationAction): def perform_action(self, board, location): sound.play_sound('grind.ogg') - board.shift_locations(self.data['direction']) + board.shift_locations( + self.data['direction'], + self.data.get('skip_player', False)) class RotateLocations(LocationAction): diff --git a/naja/gameboard.py b/naja/gameboard.py index 66c6519..f17a129 100644 --- a/naja/gameboard.py +++ b/naja/gameboard.py @@ -206,13 +206,13 @@ class GameBoard(object): del choices[key] return choice(choices.values()) - def shift_location_row(self, change, is_vertical): + def shift_location_row(self, change, is_vertical, skip_player=True): px, py = self.player.position shifted_locations = {} mkpos = lambda i: (px, i) if is_vertical else (i, py) for i in range(5): - if (px, py) == mkpos(i): + if skip_player and (px, py) == mkpos(i): continue new_i = (i + change) % 5 if (px, py) == mkpos(new_i): @@ -221,15 +221,19 @@ class GameBoard(object): self.board_locations.update(shifted_locations) - def shift_locations(self, direction): + def shift_locations(self, direction, skip_player=True): if BITS[direction] == BITS.NORTH: - self.shift_location_row(-1, is_vertical=True) + self.shift_location_row(-1, is_vertical=True, + skip_player=skip_player) elif BITS[direction] == BITS.SOUTH: - self.shift_location_row(1, is_vertical=True) + self.shift_location_row(1, is_vertical=True, + skip_player=skip_player) elif BITS[direction] == BITS.EAST: - self.shift_location_row(1, is_vertical=False) + self.shift_location_row(1, is_vertical=False, + skip_player=skip_player) elif BITS[direction] == BITS.WEST: - self.shift_location_row(-1, is_vertical=False) + self.shift_location_row(-1, is_vertical=False, + skip_player=skip_player) def rotate_locations(self, direction): px, py = self.player.position -- 2.34.1