summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--noncore/games/solitaire/patiencecardgame.cpp66
1 files changed, 44 insertions, 22 deletions
diff --git a/noncore/games/solitaire/patiencecardgame.cpp b/noncore/games/solitaire/patiencecardgame.cpp
index 1b38072..96a599c 100644
--- a/noncore/games/solitaire/patiencecardgame.cpp
+++ b/noncore/games/solitaire/patiencecardgame.cpp
@@ -29,29 +29,36 @@ PatienceCardGame::PatienceCardGame(QCanvas *c, bool snap, QWidget *parent) : Can
29 numberOfTimesThroughDeck = 0; 29 numberOfTimesThroughDeck = 0;
30 highestZ = 0; 30 highestZ = 0;
31 31
32 if ( qt_screen->deviceWidth() < 200 ) { 32 if ( qt_screen->deviceWidth() < 200 )
33 {
33 circleCross = new CanvasCircleOrCross( 7, 16, canvas() ); 34 circleCross = new CanvasCircleOrCross( 7, 16, canvas() );
34 rectangle = new CanvasRoundRect( 30, 10, canvas() ); 35 rectangle = new CanvasRoundRect( 30, 10, canvas() );
35 36
36 for (int i = 0; i < 4; i++) { 37 for (int i = 0; i < 4; i++)
38 {
37 discardPiles[i] = new PatienceDiscardPile( 78 + i * 23, 10, canvas() ); 39 discardPiles[i] = new PatienceDiscardPile( 78 + i * 23, 10, canvas() );
38 addCardPile(discardPiles[i]); 40 addCardPile(discardPiles[i]);
39 } 41 }
40 for (int i = 0; i < 7; i++) { 42 for (int i = 0; i < 7; i++)
43 {
41 workingPiles[i] = new PatienceWorkingPile( 5 + i * 23, 50, canvas() ); 44 workingPiles[i] = new PatienceWorkingPile( 5 + i * 23, 50, canvas() );
42 addCardPile(workingPiles[i]); 45 addCardPile(workingPiles[i]);
43 } 46 }
44 faceDownDealingPile = new PatienceFaceDownDeck( 5, 10, canvas() ); 47 faceDownDealingPile = new PatienceFaceDownDeck( 5, 10, canvas() );
45 faceUpDealingPile = new PatienceFaceUpDeck( 30, 10, canvas() ); 48 faceUpDealingPile = new PatienceFaceUpDeck( 30, 10, canvas() );
46 } else { 49 }
50 else
51 {
47 circleCross = new CanvasCircleOrCross( 7, 18, canvas() ); 52 circleCross = new CanvasCircleOrCross( 7, 18, canvas() );
48 rectangle = new CanvasRoundRect( 35, 10, canvas() ); 53 rectangle = new CanvasRoundRect( 35, 10, canvas() );
49 54
50 for (int i = 0; i < 4; i++) { 55 for (int i = 0; i < 4; i++)
56 {
51 discardPiles[i] = new PatienceDiscardPile( 110 + i * 30, 10, canvas() ); 57 discardPiles[i] = new PatienceDiscardPile( 110 + i * 30, 10, canvas() );
52 addCardPile(discardPiles[i]); 58 addCardPile(discardPiles[i]);
53 } 59 }
54 for (int i = 0; i < 7; i++) { 60 for (int i = 0; i < 7; i++)
61 {
55 workingPiles[i] = new PatienceWorkingPile( 10 + i * 30, 50, canvas() ); 62 workingPiles[i] = new PatienceWorkingPile( 10 + i * 30, 50, canvas() );
56 addCardPile(workingPiles[i]); 63 addCardPile(workingPiles[i]);
57 } 64 }
@@ -77,9 +84,11 @@ void PatienceCardGame::deal(void)
77 84
78 beginDealing(); 85 beginDealing();
79 86
80 for (int i = 0; i < 7; i++) { 87 for (int i = 0; i < 7; i++)
88 {
81 cards[t]->setFace(TRUE); 89 cards[t]->setFace(TRUE);
82 for (int k = i; k < 7; k++, t++) { 90 for (int k = i; k < 7; k++, t++)
91 {
83 Card *card = cards[t]; 92 Card *card = cards[t];
84 workingPiles[k]->addCardToTop(card); 93 workingPiles[k]->addCardToTop(card);
85 card->setCardPile( workingPiles[k] ); 94 card->setCardPile( workingPiles[k] );
@@ -90,7 +99,8 @@ void PatienceCardGame::deal(void)
90 } 99 }
91 } 100 }
92 101
93 for ( ; t < 52; t++) { 102 for ( ; t < 52; t++)
103 {
94 Card *card = cards[t]; 104 Card *card = cards[t];
95 faceDownDealingPile->addCardToTop(card); 105 faceDownDealingPile->addCardToTop(card);
96 card->setCardPile( faceDownDealingPile ); 106 card->setCardPile( faceDownDealingPile );
@@ -109,7 +119,8 @@ void PatienceCardGame::readConfig( Config& cfg )
109 cfg.setGroup("GameState"); 119 cfg.setGroup("GameState");
110 120
111 // Do we have a config file to read in? 121 // Do we have a config file to read in?
112 if ( !cfg.hasKey("numberOfTimesThroughDeck") ) { 122 if ( !cfg.hasKey("numberOfTimesThroughDeck") )
123 {
113 // if not, create a new game 124 // if not, create a new game
114 newGame(); 125 newGame();
115 return; 126 return;
@@ -120,7 +131,7 @@ void PatienceCardGame::readConfig( Config& cfg )
120 createDeck(); 131 createDeck();
121 132
122 // How many times through the deck have we been 133 // How many times through the deck have we been
123 numberOfTimesThroughDeck = cfg.readNumEntry("NumberOfTimesThroughDeck"); 134 numberOfTimesThroughDeck = cfg.readNumEntry("numberOfTimesThroughDeck");
124 135
125 // restore state to the circle/cross under the dealing pile 136 // restore state to the circle/cross under the dealing pile
126 if ( canTurnOverDeck() ) 137 if ( canTurnOverDeck() )
@@ -133,13 +144,15 @@ void PatienceCardGame::readConfig( Config& cfg )
133 144
134 highestZ = 1; 145 highestZ = 1;
135 146
136 for (int k = 0; k < 7; k++) { 147 for (int k = 0; k < 7; k++)
148 {
137 QString pile; 149 QString pile;
138 pile.sprintf( "WorkingPile%i", k ); 150 pile.sprintf( "WorkingPile%i", k );
139 readPile( cfg, workingPiles[k], pile, highestZ ); 151 readPile( cfg, workingPiles[k], pile, highestZ );
140 } 152 }
141 153
142 for (int k = 0; k < 4; k++) { 154 for (int k = 0; k < 4; k++)
155 {
143 QString pile; 156 QString pile;
144 pile.sprintf( "DiscardPile%i", k ); 157 pile.sprintf( "DiscardPile%i", k );
145 readPile( cfg, discardPiles[k], pile, highestZ ); 158 readPile( cfg, discardPiles[k], pile, highestZ );
@@ -159,12 +172,14 @@ void PatienceCardGame::writeConfig( Config& cfg )
159 cfg.setGroup("GameState"); 172 cfg.setGroup("GameState");
160 cfg.writeEntry("numberOfTimesThroughDeck", numberOfTimesThroughDeck); 173 cfg.writeEntry("numberOfTimesThroughDeck", numberOfTimesThroughDeck);
161 174
162 for ( int i = 0; i < 7; i++ ) { 175 for ( int i = 0; i < 7; i++ )
176 {
163 QString pile; 177 QString pile;
164 pile.sprintf( "WorkingPile%i", i ); 178 pile.sprintf( "WorkingPile%i", i );
165 workingPiles[i]->writeConfig( cfg, pile ); 179 workingPiles[i]->writeConfig( cfg, pile );
166 } 180 }
167 for ( int i = 0; i < 4; i++ ) { 181 for ( int i = 0; i < 4; i++ )
182 {
168 QString pile; 183 QString pile;
169 pile.sprintf( "DiscardPile%i", i ); 184 pile.sprintf( "DiscardPile%i", i );
170 discardPiles[i]->writeConfig( cfg, pile ); 185 discardPiles[i]->writeConfig( cfg, pile );
@@ -179,9 +194,11 @@ bool PatienceCardGame::mousePressCard( Card *card, QPoint p )
179 Q_UNUSED(p); 194 Q_UNUSED(p);
180 195
181 CanvasCard *item = (CanvasCard *)card; 196 CanvasCard *item = (CanvasCard *)card;
182 if (item->isFacing() != TRUE) { 197 if (item->isFacing() != TRUE)
198 {
183 // From facedown stack 199 // From facedown stack
184 if ((item->x() == 5) && ((int)item->y() == 10)) { 200 if ((item->x() == 5) && ((int)item->y() == 10))
201 {
185 item->setZ(highestZ); 202 item->setZ(highestZ);
186 highestZ++; 203 highestZ++;
187 204
@@ -194,7 +211,8 @@ bool PatienceCardGame::mousePressCard( Card *card, QPoint p )
194 item->flipTo( 30, (int)item->y() ); 211 item->flipTo( 30, (int)item->y() );
195 else 212 else
196 item->flipTo( 35, (int)item->y() ); 213 item->flipTo( 35, (int)item->y() );
197 } else return FALSE; // <- was missing, caused facedown card to react 214 }
215 else return FALSE; // <- was missing, caused facedown card to react
198 // to clicking, which is wrong 216 // to clicking, which is wrong
199 moving = NULL; 217 moving = NULL;
200 moved = FALSE; 218 moved = FALSE;
@@ -202,8 +220,10 @@ bool PatienceCardGame::mousePressCard( Card *card, QPoint p )
202 // move two other cards if we flip three at a time 220 // move two other cards if we flip three at a time
203 int flipped = 1; 221 int flipped = 1;
204 QCanvasItemList l = canvas()->collisions( p ); 222 QCanvasItemList l = canvas()->collisions( p );
205 for (QCanvasItemList::Iterator it = l.begin(); (it != l.end()) && (flipped != cardsDrawn()); ++it) { 223 for (QCanvasItemList::Iterator it = l.begin(); (it != l.end()) && (flipped != cardsDrawn()); ++it)
206 if ( (*it)->rtti() == canvasCardId ) { 224 {
225 if ( (*it)->rtti() == canvasCardId )
226 {
207 CanvasCard *item = (CanvasCard *)*it; 227 CanvasCard *item = (CanvasCard *)*it;
208 if (item->animated()) 228 if (item->animated())
209 continue; 229 continue;
@@ -234,11 +254,13 @@ void PatienceCardGame::mousePress(QPoint p)
234{ 254{
235 if ( canTurnOverDeck() && 255 if ( canTurnOverDeck() &&
236 (p.x() > 5) && (p.x() < 28) && 256 (p.x() > 5) && (p.x() < 28) &&
237 (p.y() > 10) && (p.y() < 46) ) { 257 (p.y() > 10) && (p.y() < 46) )
258 {
238 259
239 beginDealing(); 260 beginDealing();
240 Card *card = faceUpDealingPile->cardOnTop(); 261 Card *card = faceUpDealingPile->cardOnTop();
241 while ( card ) { 262 while ( card )
263 {
242 card->setPos( 5, 10, highestZ ); 264 card->setPos( 5, 10, highestZ );
243 card->setFace( FALSE ); 265 card->setFace( FALSE );
244 faceUpDealingPile->removeCard( card ); 266 faceUpDealingPile->removeCard( card );