Fix knight movement behavior
This commit is contained in:
Binary file not shown.
@@ -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"
|
||||
@@ -44,7 +44,8 @@ class IsometricGame:
|
||||
self.menu = Menu(self.canvas, tearoff=0)
|
||||
self.window.bind('<KeyRelease>', self.on_key_press)
|
||||
self.canvas.bind('<Button-1>', self.on_canvas_click)
|
||||
self.canvas.bind('<Button-3>', self.on_canvas_rclick)
|
||||
self.canvas.bind('<Button-3>', self.on_canvas_right_click)
|
||||
self.canvas.bind('<Double-Button-3>', self.on_canvas_double_right_click)
|
||||
self.canvas.bind('<Motion>', 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()
|
||||
|
||||
Reference in New Issue
Block a user