def clickHandler(self, event): game = self.game drag = game.drag # checks if not self.cards: return 1 card = self.cards[-1] from_stack = drag.stack if from_stack is self: # remove selection self.game.playSample("nomove") self._stopDrag() return 1 if self.basicIsBlocked(): # remove selection # self.game.playSample("nomove") return 1 # possible move if from_stack: if self.acceptsCards(from_stack, from_stack.cards): self._stopDrag() # this code actually moves the tiles from_stack.playMoveMove(1, self, frames=0, sound=True) if TOOLKIT == 'kivy': if drag.shade_img: # drag.shade_img.dtag(drag.shade_stack.group) drag.shade_img.delete() # game.canvas.delete(drag.shade_img) drag.shade_img = None return 1 drag.stack = self self.game.playSample("startdrag") # create the shade image (see stack.py, _updateShade) if drag.shade_img: # drag.shade_img.dtag(drag.shade_stack.group) drag.shade_img.delete() # game.canvas.delete(drag.shade_img) drag.shade_img = None img = game.app.images.getHighlightedCard(card.deck, card.suit, card.rank) if img is None: return 1 img = MfxCanvasImage(game.canvas, self.x, self.y, image=img, anchor=ANCHOR_NW, group=self.group) drag.shade_img = img # raise/lower the shade image to the correct stacking order img.tkraise(card.item) drag.shade_stack = self return 1
def clickHandler(self, event): game = self.game drag = game.drag # checks if not self.cards: return 1 card = self.cards[-1] from_stack = drag.stack if from_stack is self: # remove selection self.game.playSample("nomove") self._stopDrag() return 1 if self.basicIsBlocked(): # remove selection # self.game.playSample("nomove") return 1 # possible move if from_stack: if self.acceptsCards(from_stack, from_stack.cards): self._stopDrag() # this code actually moves the tiles from_stack.playMoveMove(1, self, frames=0, sound=True) if TOOLKIT == 'kivy': if drag.shade_img: # drag.shade_img.dtag(drag.shade_stack.group) drag.shade_img.delete() # game.canvas.delete(drag.shade_img) drag.shade_img = None return 1 drag.stack = self self.game.playSample("startdrag") # create the shade image (see stack.py, _updateShade) if drag.shade_img: # drag.shade_img.dtag(drag.shade_stack.group) drag.shade_img.delete() # game.canvas.delete(drag.shade_img) drag.shade_img = None img = game.app.images.getHighlightedCard( card.deck, card.suit, card.rank) if img is None: return 1 img = MfxCanvasImage(game.canvas, self.x, self.y, image=img, anchor=ANCHOR_NW, group=self.group) drag.shade_img = img # raise/lower the shade image to the correct stacking order img.tkraise(card.item) drag.shade_stack = self return 1
def _highlightCards(self, info, sleep=1.5, delta=(1, 1, 1, 1)): if not Image: delta = (-self._delta_x, 0, 0, -self._delta_y) return Game._highlightCards(self, info, sleep=sleep, delta=delta) if not info: return 0 if self.pause: return 0 self.stopWinAnimation() items = [] for s, c1, c2, color in info: assert c1 is c2 assert c1 in s.cards tkraise = False x, y = s.x, s.y img = self.app.images.getHighlightedCard(c1.deck, c1.suit, c1.rank, 'black') if img is None: continue img = MfxCanvasImage(self.canvas, x, y, image=img, anchor=ANCHOR_NW, group=s.group) if self.drag.stack and s is self.drag.stack: img.tkraise(self.drag.shade_img) else: img.tkraise(c1.item) items.append(img) if not items: return 0 self.canvas.update_idletasks() if sleep: self.sleep(sleep) items.reverse() for r in items: r.delete() self.canvas.update_idletasks() return EVENT_HANDLED else: # remove items later (find_card_dialog) return items
def _highlightCards(self, info, sleep=1.5, delta=(1,1,1,1)): if not Image: delta = (-self._delta_x, 0, 0, -self._delta_y) return Game._highlightCards(self, info, sleep=sleep, delta=delta) if not info: return 0 if self.pause: return 0 self.stopWinAnimation() items = [] for s, c1, c2, color in info: assert c1 is c2 assert c1 in s.cards tkraise = False x, y = s.x, s.y img = self.app.images.getHighlightCard(c1.deck, c1.suit, c1.rank) if img is None: continue img = MfxCanvasImage(self.canvas, x, y, image=img, anchor=ANCHOR_NW, group=s.group) if self.drag.stack and s is self.drag.stack: img.tkraise(self.drag.shade_img) else: img.tkraise(c1.item) items.append(img) if not items: return 0 self.canvas.update_idletasks() if sleep: self.sleep(sleep) items.reverse() for r in items: r.delete() self.canvas.update_idletasks() return EVENT_HANDLED else: # remove items later (find_card_dialog) return items