From 146403419190032842d23b3b5ce0884a6ae1b44d Mon Sep 17 00:00:00 2001 From: skomoroh Date: Tue, 28 Aug 2007 21:18:37 +0000 Subject: [PATCH] * improved mahjongg tile highlighting git-svn-id: https://pysolfc.svn.sourceforge.net/svnroot/pysolfc/PySolFC/trunk@201 39dd0a4e-7c14-0410-91b3-c4f2d318f732 --- pysollib/games/bakersdozen.py | 6 ++--- pysollib/games/mahjongg/mahjongg.py | 39 ++++++++++++++++++++++++++--- pysollib/stack.py | 4 +-- 3 files changed, 41 insertions(+), 8 deletions(-) diff --git a/pysollib/games/bakersdozen.py b/pysollib/games/bakersdozen.py index dadaee11..9b4512e2 100644 --- a/pysollib/games/bakersdozen.py +++ b/pysollib/games/bakersdozen.py @@ -158,15 +158,15 @@ class SpanishPatience(BakersDozen): class PortugueseSolitaire(BakersDozen): - RowStack_Class = StackWrapper(RK_RowStack, base_rank=KING) + RowStack_Class = StackWrapper(RK_RowStack, base_rank=KING, max_move=1) Solver_Class = FreeCellSolverWrapper(sbb='rank', esf='kings') def _shuffleHook(self, cards): return cards class SpanishPatienceII(PortugueseSolitaire): - RowStack_Class = RK_RowStack - Solver_Class = FreeCellSolverWrapper(sbb='rank', sm='unlimited') + RowStack_Class = StackWrapper(RK_RowStack, max_move=1) + Solver_Class = FreeCellSolverWrapper(sbb='rank') # /*********************************************************************** diff --git a/pysollib/games/mahjongg/mahjongg.py b/pysollib/games/mahjongg/mahjongg.py index 176652dc..90c6fdd6 100644 --- a/pysollib/games/mahjongg/mahjongg.py +++ b/pysollib/games/mahjongg/mahjongg.py @@ -35,7 +35,7 @@ from gettext import ungettext # PySol imports from pysollib.gamedb import registerGame, GameInfo, GI from pysollib.util import * -from pysollib.mfxutil import kwdefault, Struct +from pysollib.mfxutil import kwdefault, Struct, Image from pysollib.stack import * from pysollib.game import Game from pysollib.layout import Layout @@ -884,8 +884,41 @@ a solvable configuration.'''), return ((self.s.rows, 1),) def _highlightCards(self, info, sleep=1.5, delta=(1,1,1,1)): - delta = (-self._delta_x, 0, 0, -self._delta_y) - Game._highlightCards(self, info, sleep=sleep, delta=delta) + 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.getShadowCard(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) + 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 getCardFaceImage(self, deck, suit, rank): if suit == 3: diff --git a/pysollib/stack.py b/pysollib/stack.py index f390b60f..3c12218c 100644 --- a/pysollib/stack.py +++ b/pysollib/stack.py @@ -229,8 +229,8 @@ class Stack: # moving a subpile around. # constants - MIN_VISIBLE_XOFFSET = 5 - MIN_VISIBLE_YOFFSET = 5 + MIN_VISIBLE_XOFFSET = 3 + MIN_VISIBLE_YOFFSET = 3 SHRINK_FACTOR = 2. def __init__(self, x, y, game, cap={}):