-rw-r--r-- | noncore/games/solitaire/patiencecardgame.cpp | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/noncore/games/solitaire/patiencecardgame.cpp b/noncore/games/solitaire/patiencecardgame.cpp index 1501d2f..fc91b26 100644 --- a/noncore/games/solitaire/patiencecardgame.cpp +++ b/noncore/games/solitaire/patiencecardgame.cpp | |||
@@ -101,157 +101,160 @@ void PatienceCardGame::deal(void) | |||
101 | } | 101 | } |
102 | 102 | ||
103 | endDealing(); | 103 | endDealing(); |
104 | } | 104 | } |
105 | 105 | ||
106 | 106 | ||
107 | void PatienceCardGame::readConfig( Config& cfg ) | 107 | void PatienceCardGame::readConfig( Config& cfg ) |
108 | { | 108 | { |
109 | cfg.setGroup("GameState"); | 109 | cfg.setGroup("GameState"); |
110 | 110 | ||
111 | // Do we have a config file to read in? | 111 | // Do we have a config file to read in? |
112 | if ( !cfg.hasKey("numberOfTimesThroughDeck") ) { | 112 | if ( !cfg.hasKey("numberOfTimesThroughDeck") ) { |
113 | // if not, create a new game | 113 | // if not, create a new game |
114 | newGame(); | 114 | newGame(); |
115 | return; | 115 | return; |
116 | } | 116 | } |
117 | // We have a config file, lets read it in and use it | 117 | // We have a config file, lets read it in and use it |
118 | 118 | ||
119 | // Create Cards, but don't shuffle or deal them yet | 119 | // Create Cards, but don't shuffle or deal them yet |
120 | createDeck(); | 120 | createDeck(); |
121 | 121 | ||
122 | // How many times through the deck have we been | 122 | // How many times through the deck have we been |
123 | numberOfTimesThroughDeck = cfg.readNumEntry("NumberOfTimesThroughDeck"); | 123 | numberOfTimesThroughDeck = cfg.readNumEntry("NumberOfTimesThroughDeck"); |
124 | 124 | ||
125 | // restore state to the circle/cross under the dealing pile | 125 | // restore state to the circle/cross under the dealing pile |
126 | if ( canTurnOverDeck() ) | 126 | if ( canTurnOverDeck() ) |
127 | circleCross->setCircle(); | 127 | circleCross->setCircle(); |
128 | else | 128 | else |
129 | circleCross->setCross(); | 129 | circleCross->setCross(); |
130 | 130 | ||
131 | // Move the cards to their piles (deal them to their previous places) | 131 | // Move the cards to their piles (deal them to their previous places) |
132 | beginDealing(); | 132 | beginDealing(); |
133 | 133 | ||
134 | highestZ = 1; | 134 | highestZ = 1; |
135 | 135 | ||
136 | for (int k = 0; k < 7; k++) { | 136 | for (int k = 0; k < 7; k++) { |
137 | QString pile; | 137 | QString pile; |
138 | pile.sprintf( "WorkingPile%i", k ); | 138 | pile.sprintf( "WorkingPile%i", k ); |
139 | readPile( cfg, workingPiles[k], pile, highestZ ); | 139 | readPile( cfg, workingPiles[k], pile, highestZ ); |
140 | } | 140 | } |
141 | 141 | ||
142 | for (int k = 0; k < 4; k++) { | 142 | for (int k = 0; k < 4; k++) { |
143 | QString pile; | 143 | QString pile; |
144 | pile.sprintf( "DiscardPile%i", k ); | 144 | pile.sprintf( "DiscardPile%i", k ); |
145 | readPile( cfg, discardPiles[k], pile, highestZ ); | 145 | readPile( cfg, discardPiles[k], pile, highestZ ); |
146 | } | 146 | } |
147 | 147 | ||
148 | readPile( cfg, faceDownDealingPile, "FaceDownDealingPile", highestZ ); | 148 | readPile( cfg, faceDownDealingPile, "FaceDownDealingPile", highestZ ); |
149 | readPile( cfg, faceUpDealingPile, "FaceUpDealingPile", highestZ ); | 149 | readPile( cfg, faceUpDealingPile, "FaceUpDealingPile", highestZ ); |
150 | 150 | ||
151 | highestZ++; | 151 | highestZ++; |
152 | 152 | ||
153 | endDealing(); | 153 | endDealing(); |
154 | } | 154 | } |
155 | 155 | ||
156 | 156 | ||
157 | void PatienceCardGame::writeConfig( Config& cfg ) | 157 | void PatienceCardGame::writeConfig( Config& cfg ) |
158 | { | 158 | { |
159 | cfg.setGroup("GameState"); | 159 | cfg.setGroup("GameState"); |
160 | cfg.writeEntry("numberOfTimesThroughDeck", numberOfTimesThroughDeck); | 160 | cfg.writeEntry("numberOfTimesThroughDeck", numberOfTimesThroughDeck); |
161 | 161 | ||
162 | for ( int i = 0; i < 7; i++ ) { | 162 | for ( int i = 0; i < 7; i++ ) { |
163 | QString pile; | 163 | QString pile; |
164 | pile.sprintf( "WorkingPile%i", i ); | 164 | pile.sprintf( "WorkingPile%i", i ); |
165 | workingPiles[i]->writeConfig( cfg, pile ); | 165 | workingPiles[i]->writeConfig( cfg, pile ); |
166 | } | 166 | } |
167 | for ( int i = 0; i < 4; i++ ) { | 167 | for ( int i = 0; i < 4; i++ ) { |
168 | QString pile; | 168 | QString pile; |
169 | pile.sprintf( "DiscardPile%i", i ); | 169 | pile.sprintf( "DiscardPile%i", i ); |
170 | discardPiles[i]->writeConfig( cfg, pile ); | 170 | discardPiles[i]->writeConfig( cfg, pile ); |
171 | } | 171 | } |
172 | faceDownDealingPile->writeConfig( cfg, "FaceDownDealingPile" ); | 172 | faceDownDealingPile->writeConfig( cfg, "FaceDownDealingPile" ); |
173 | faceUpDealingPile->writeConfig( cfg, "FaceUpDealingPile" ); | 173 | faceUpDealingPile->writeConfig( cfg, "FaceUpDealingPile" ); |
174 | } | 174 | } |
175 | 175 | ||
176 | 176 | ||
177 | bool PatienceCardGame::mousePressCard( Card *card, QPoint p ) | 177 | bool PatienceCardGame::mousePressCard( Card *card, QPoint p ) |
178 | { | 178 | { |
179 | Q_UNUSED(p); | 179 | Q_UNUSED(p); |
180 | 180 | ||
181 | CanvasCard *item = (CanvasCard *)card; | 181 | CanvasCard *item = (CanvasCard *)card; |
182 | if (item->isFacing() != TRUE) { | 182 | if (item->isFacing() != TRUE) { |
183 | // From facedown stack | 183 | // From facedown stack |
184 | if ((item->x() == 5) && ((int)item->y() == 10)) { | 184 | if ((item->x() == 5) && ((int)item->y() == 10)) { |
185 | item->setZ(highestZ); | 185 | item->setZ(highestZ); |
186 | highestZ++; | 186 | highestZ++; |
187 | 187 | ||
188 | // Added Code | 188 | // Added Code |
189 | faceDownDealingPile->removeCard(item); | 189 | faceDownDealingPile->removeCard(item); |
190 | faceUpDealingPile->addCardToTop(item); | 190 | faceUpDealingPile->addCardToTop(item); |
191 | item->setCardPile( faceUpDealingPile ); | 191 | item->setCardPile( faceUpDealingPile ); |
192 | 192 | ||
193 | if ( qt_screen->deviceWidth() < 200 ) | 193 | if ( qt_screen->deviceWidth() < 200 ) |
194 | item->flipTo( 30, (int)item->y() ); | 194 | item->flipTo( 30, (int)item->y() ); |
195 | else | 195 | else |
196 | item->flipTo( 35, (int)item->y() ); | 196 | item->flipTo( 35, (int)item->y() ); |
197 | } else { | ||
198 | // fix from cmader by tille | ||
199 | return false; | ||
197 | } | 200 | } |
198 | moving = NULL; | 201 | moving = NULL; |
199 | moved = FALSE; | 202 | moved = FALSE; |
200 | 203 | ||
201 | // move two other cards if we flip three at a time | 204 | // move two other cards if we flip three at a time |
202 | int flipped = 1; | 205 | int flipped = 1; |
203 | QCanvasItemList l = canvas()->collisions( p ); | 206 | QCanvasItemList l = canvas()->collisions( p ); |
204 | for (QCanvasItemList::Iterator it = l.begin(); (it != l.end()) && (flipped != cardsDrawn()); ++it) { | 207 | for (QCanvasItemList::Iterator it = l.begin(); (it != l.end()) && (flipped != cardsDrawn()); ++it) { |
205 | if ( (*it)->rtti() == canvasCardId ) { | 208 | if ( (*it)->rtti() == canvasCardId ) { |
206 | CanvasCard *item = (CanvasCard *)*it; | 209 | CanvasCard *item = (CanvasCard *)*it; |
207 | if (item->animated()) | 210 | if (item->animated()) |
208 | continue; | 211 | continue; |
209 | item->setZ(highestZ); | 212 | item->setZ(highestZ); |
210 | highestZ++; | 213 | highestZ++; |
211 | flipped++; | 214 | flipped++; |
212 | 215 | ||
213 | // Added Code | 216 | // Added Code |
214 | faceDownDealingPile->removeCard(item); | 217 | faceDownDealingPile->removeCard(item); |
215 | faceUpDealingPile->addCardToTop(item); | 218 | faceUpDealingPile->addCardToTop(item); |
216 | item->setCardPile( faceUpDealingPile ); | 219 | item->setCardPile( faceUpDealingPile ); |
217 | 220 | ||
218 | if ( qt_screen->deviceWidth() < 200 ) | 221 | if ( qt_screen->deviceWidth() < 200 ) |
219 | item->flipTo( 30, (int)item->y(), 8 * flipped ); | 222 | item->flipTo( 30, (int)item->y(), 8 * flipped ); |
220 | else | 223 | else |
221 | item->flipTo( 35, (int)item->y(), 8 * flipped ); | 224 | item->flipTo( 35, (int)item->y(), 8 * flipped ); |
222 | } | 225 | } |
223 | } | 226 | } |
224 | 227 | ||
225 | return TRUE; | 228 | return TRUE; |
226 | } | 229 | } |
227 | 230 | ||
228 | return FALSE; | 231 | return FALSE; |
229 | } | 232 | } |
230 | 233 | ||
231 | 234 | ||
232 | void PatienceCardGame::mousePress(QPoint p) | 235 | void PatienceCardGame::mousePress(QPoint p) |
233 | { | 236 | { |
234 | if ( canTurnOverDeck() && | 237 | if ( canTurnOverDeck() && |
235 | (p.x() > 5) && (p.x() < 28) && | 238 | (p.x() > 5) && (p.x() < 28) && |
236 | (p.y() > 10) && (p.y() < 46) ) { | 239 | (p.y() > 10) && (p.y() < 46) ) { |
237 | 240 | ||
238 | beginDealing(); | 241 | beginDealing(); |
239 | Card *card = faceUpDealingPile->cardOnTop(); | 242 | Card *card = faceUpDealingPile->cardOnTop(); |
240 | while ( card ) { | 243 | while ( card ) { |
241 | card->setPos( 5, 10, highestZ ); | 244 | card->setPos( 5, 10, highestZ ); |
242 | card->setFace( FALSE ); | 245 | card->setFace( FALSE ); |
243 | faceUpDealingPile->removeCard( card ); | 246 | faceUpDealingPile->removeCard( card ); |
244 | faceDownDealingPile->addCardToTop( card ); | 247 | faceDownDealingPile->addCardToTop( card ); |
245 | card->setCardPile( faceDownDealingPile ); | 248 | card->setCardPile( faceDownDealingPile ); |
246 | card = faceUpDealingPile->cardOnTop(); | 249 | card = faceUpDealingPile->cardOnTop(); |
247 | highestZ++; | 250 | highestZ++; |
248 | } | 251 | } |
249 | endDealing(); | 252 | endDealing(); |
250 | 253 | ||
251 | throughDeck(); | 254 | throughDeck(); |
252 | 255 | ||
253 | moved = TRUE; | 256 | moved = TRUE; |
254 | } | 257 | } |
255 | } | 258 | } |
256 | 259 | ||
257 | 260 | ||