From 105e48c23b32b6f022a569a315d4a348fd8536b2 Mon Sep 17 00:00:00 2001 From: enne2 Date: Fri, 16 Feb 2024 20:58:22 +0100 Subject: [PATCH] Fix knight movement behavior --- Units/__pycache__/knight.cpython-311.pyc | Bin 6421 -> 4181 bytes Units/knight.py | 4 ++++ main.py | 27 ++++++++++++++--------- 3 files changed, 20 insertions(+), 11 deletions(-) diff --git a/Units/__pycache__/knight.cpython-311.pyc b/Units/__pycache__/knight.cpython-311.pyc index 68c4f914c3b1f9964cbce119128df4f0c81c188a..cbeee0ff720f5306fe56eb89e228c570044622dc 100644 GIT binary patch delta 1827 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 diff --git a/Units/knight.py b/Units/knight.py index 58a6fea..9c6420c 100644 --- a/Units/knight.py +++ b/Units/knight.py @@ -52,11 +52,15 @@ class Knight: return gif, screen_x, screen_y def move_to(self, target): + if self.target == target and self.state == "Walk": + return self.speed = .05 self.target = target self.state = "Walk" def run_to(self, target): + if self.target == target and self.state == "Run": + return self.speed = .15 self.target = target self.state = "Run" \ No newline at end of file diff --git a/main.py b/main.py index b801d5c..97b29bd 100644 --- a/main.py +++ b/main.py @@ -44,7 +44,8 @@ class IsometricGame: self.menu = Menu(self.canvas, tearoff=0) self.window.bind('', self.on_key_press) self.canvas.bind('', self.on_canvas_click) - self.canvas.bind('', self.on_canvas_rclick) + self.canvas.bind('', self.on_canvas_right_click) + self.canvas.bind('', self.on_canvas_double_right_click) self.canvas.bind('', self.calculate_coordinates) @@ -237,8 +238,21 @@ class IsometricGame: self.battlefield[cell_y][cell_x].walkable ^= True self.draw_battlefield() self.draw_units() + + def on_canvas_right_click(self, event): + # calculate the clicked cell's coordinates + cell_x, cell_y = self.inv_iso_transform(event.x, event.y) + self.effects.append(OrderClick(self.iso_transform(cell_x, cell_y),color="lightblue")) - + if 0 <= cell_x < self.width and 0 <= cell_y < self.height: + self.knight.move_to((cell_x, cell_y)) + + def on_canvas_double_right_click(self, event): + # calculate the clicked cell's coordinates + cell_x, cell_y = self.inv_iso_transform(event.x, event.y) + self.effects.append(OrderClick(self.iso_transform(cell_x, cell_y),color="darkblue")) + if 0 <= cell_x < self.width and 0 <= cell_y < self.height: + self.knight.run_to((cell_x, cell_y)) def set_tile(self, name, pos): # Handle option 1 selection @@ -249,15 +263,6 @@ class IsometricGame: self.battlefield[cell_y][cell_x].tile = self.tiles[name] self.draw_battlefield() - - def on_canvas_rclick(self, event): - # calculate the clicked cell's coordinates - cell_x, cell_y = self.inv_iso_transform(event.x, event.y) - self.effects.append(OrderClick(self.iso_transform(cell_x, cell_y),color="lightblue")) - if self.knight.target == (cell_x, cell_y): - return - if 0 <= cell_x < self.width and 0 <= cell_y < self.height: - self.knight.run_to((cell_x, cell_y)) def run(self): self.draw_battlefield()