1 | /* |
2 | * Copyright (C) 2003 Josh Metzler <joshdeb@metzlers.org> |
3 | * Copyright (C) 2000-2009 Stephan Kulow <coolo@kde.org> |
4 | * |
5 | * License of original code: |
6 | * ------------------------------------------------------------------------- |
7 | * Permission to use, copy, modify, and distribute this software and its |
8 | * documentation for any purpose and without fee is hereby granted, |
9 | * provided that the above copyright notice appear in all copies and that |
10 | * both that copyright notice and this permission notice appear in |
11 | * supporting documentation. |
12 | * |
13 | * This file is provided AS IS with no warranties of any kind. The author |
14 | * shall have no liability with respect to the infringement of copyrights, |
15 | * trade secrets or any patents by this file or any part thereof. In no |
16 | * event will the author be liable for any lost revenue or profits or |
17 | * other special, indirect and consequential damages. |
18 | * ------------------------------------------------------------------------- |
19 | * |
20 | * License of modifications/additions made after 2009-01-01: |
21 | * ------------------------------------------------------------------------- |
22 | * This program is free software; you can redistribute it and/or |
23 | * modify it under the terms of the GNU General Public License as |
24 | * published by the Free Software Foundation; either version 2 of |
25 | * the License, or (at your option) any later version. |
26 | * |
27 | * This program is distributed in the hope that it will be useful, |
28 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
29 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
30 | * GNU General Public License for more details. |
31 | * |
32 | * You should have received a copy of the GNU General Public License |
33 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
34 | * ------------------------------------------------------------------------- |
35 | */ |
36 | |
37 | #ifndef SPIDER_H |
38 | #define SPIDER_H |
39 | |
40 | #include "dealer.h" |
41 | |
42 | class KSelectAction; |
43 | |
44 | |
45 | class Spider : public DealerScene |
46 | { |
47 | Q_OBJECT |
48 | |
49 | public: |
50 | Spider( const DealerInfo * di ); |
51 | virtual void initialize(); |
52 | virtual void mapOldId(int id); |
53 | virtual int oldId() const; |
54 | virtual QList<QAction*> configActions() const; |
55 | |
56 | protected: |
57 | virtual QString getGameState() const; |
58 | virtual void setGameState( const QString & state ); |
59 | virtual QString getGameOptions() const; |
60 | virtual void setGameOptions( const QString & options ); |
61 | virtual bool checkAdd(const PatPile * pile, const QList<KCard*> & oldCards, const QList<KCard*> & newCards) const; |
62 | virtual bool checkRemove(const PatPile * pile, const QList<KCard*> & cards) const; |
63 | virtual void cardsMoved( const QList<KCard*> & cards, KCardPile * oldPile, KCardPile * newPile ); |
64 | virtual void restart( const QList<KCard*> & cards ); |
65 | |
66 | protected slots: |
67 | virtual bool newCards(); |
68 | virtual void animationDone(); |
69 | |
70 | private slots: |
71 | void gameTypeChanged(); |
72 | |
73 | private: |
74 | bool pileHasFullRun( KCardPile * pile ); |
75 | void moveFullRunToLeg( KCardPile * pile ); |
76 | void setSuits(int s); |
77 | void createDeck(); |
78 | QPointF randomPos(); |
79 | |
80 | PatPile *stack[10]; |
81 | PatPile *legs[8]; |
82 | int m_leg; |
83 | PatPile *redeals[5]; |
84 | int m_redeal; |
85 | int m_suits; |
86 | QList<KCardPile*> m_pilesWithRuns; |
87 | |
88 | KSelectAction *options; |
89 | |
90 | friend class SpiderSolver; |
91 | }; |
92 | |
93 | #endif |
94 | |