00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #include <klocale.h>
00025 #include <kdebug.h>
00026
00027
00028 #include "player.h"
00029 #include "abstractinput.h"
00030 #include "deck.h"
00031
00032
00033
00034
00035 Player::Player(int id, QObject* parent)
00036 : QObject(parent)
00037 {
00038 mId = id;
00039 mCards.clear();
00040 mPoints = 0;
00041 mDeck = 0;
00042 mInput = 0;
00043 mTrump = Club;
00044
00045
00046 setName("");
00047 mScore = 0;
00048 mNumberOfGames = 0;
00049 mGamesWon = 0;
00050 }
00051
00052
00053
00054 Player::~Player()
00055 {
00056 if (mInput) delete mInput;
00057 }
00058
00059
00060
00061 void Player::save(KConfigGroup& config)
00062 {
00063 config.writeEntry("name", mName);
00064 config.writeEntry("gameswon", mGamesWon);
00065 config.writeEntry("score", mScore);
00066 config.writeEntry("noofgames", mNumberOfGames);
00067 }
00068
00069
00070
00071 void Player::load(KConfigGroup& config)
00072 {
00073 mName = config.readEntry("name", mName);
00074 mGamesWon = config.readEntry("gameswon", mGamesWon);
00075 mScore = config.readEntry("score", mScore);
00076 mNumberOfGames = config.readEntry("noofgames", mNumberOfGames);
00077
00078
00079 refresh();
00080
00081 }
00082
00083
00084
00085 void Player::setDeck(Deck* deck)
00086 {
00087 mDeck = deck;
00088 }
00089
00090
00091
00092 void Player::clear()
00093 {
00094 mNumberOfGames = 0;
00095 mScore = 0;
00096 mGamesWon = 0;
00097 refresh();
00098 }
00099
00100
00101
00102 void Player::deal(int amount)
00103 {
00104 if (!mDeck)
00105 {
00106 kFatal() << "No deck set to player." << endl;
00107 return;
00108 }
00109 mCards.clear();
00110 mCards.resize(amount);
00111 for (int i=0; i<amount; i++)
00112 {
00113 int card = mDeck->drawCard();
00114 mCards[i] = card;
00115 }
00116
00117
00118 mMovesWon = 0;
00119 setPoints(0);
00120 mWonCards.clear();
00121
00122 refresh();
00123 }
00124
00125
00126
00127 AbstractInput* Player::input()
00128 {
00129 return mInput;
00130 }
00131
00132
00133
00134 void Player::setInput(AbstractInput* input)
00135 {
00136
00137 bool oldTurnAllowed = false;
00138
00139 if (mInput)
00140 {
00141 oldTurnAllowed = mInput->inputAllowed();
00142 mInput->setInputAllowed(false);
00143 delete mInput;
00144 }
00145
00146 mInput = input;
00147
00148 mInput->setId(mId);
00149
00150 mInput->setInputAllowed(oldTurnAllowed);
00151
00152 refresh();
00153 }
00154
00155
00156
00157 void Player::startTurn()
00158 {
00159 mInput->setInputAllowed(true);
00160 }
00161
00162
00163
00164 void Player::stopTurn()
00165 {
00166 mInput->setInputAllowed(false);
00167 }
00168
00169
00170
00171 void Player::deleteCard(int cardPosition)
00172 {
00173 if (cardPosition >= mCards.size())
00174 {
00175 kFatal() << "Player " << mId << " tries to delete non esxisting card position "
00176 << cardPosition <<" >= " << mCards.size() << endl;
00177 }
00178 mCards[cardPosition] = -1;
00179 }
00180
00181
00182
00183 void Player::addCard(int cardPosition, int card)
00184 {
00185 if (cardPosition >= mCards.size())
00186 {
00187 kFatal() << "Player " << mId << " tries to add to esxisting card position "
00188 << cardPosition <<" >= " << mCards.size() << endl;
00189 }
00190 mCards[cardPosition] = card;
00191 }
00192
00193
00194
00195 int Player::getCard(int playerNumber)
00196 {
00197 if (playerNumber >= mCards.size())
00198 {
00199 kFatal() << "Player " << mId << " tries to get non esxisting card "
00200 << playerNumber <<" >= " << mCards.size() << endl;
00201 }
00202
00203 int card = mCards[playerNumber];
00204 return card;
00205 }
00206
00207
00208
00209 void Player::increaseMovesWon(int amount)
00210 {
00211 mMovesWon += amount;
00212 }
00213
00214
00215
00216 int Player::noOfMovesWon()
00217 {
00218 return mMovesWon;
00219 }
00220
00221
00222
00223 void Player::addWonCard(int card)
00224 {
00225
00226 mWonCards.append(card);
00227
00228
00229 int value = mDeck->getCardValue(card);
00230 setPoints(points() + value);
00231 }
00232
00233
00234
00235 int Player::getWonCard(int no)
00236 {
00237 if (no>=mWonCards.size())
00238 {
00239 kFatal() << "Player::getWonCard This card " << no << " is not available. "
00240 << "Only " << mWonCards.size() << " cards stored." << endl;
00241 return -1;
00242 }
00243 return mWonCards[no];
00244 }
00245
00246
00247
00248 int Player::points()
00249 {
00250 return mPoints;
00251 }
00252
00253
00254
00255 void Player::setPoints(int points)
00256 {
00257 mPoints = points;
00258 refresh();
00259 }
00260
00261
00262
00263 QString Player::name()
00264 {
00265 return mName;
00266 }
00267
00268
00269
00270 void Player::setName(QString name)
00271 {
00272 mName = name;
00273 refresh();
00274 }
00275
00276
00277
00278 void Player::addWonGame(int amount)
00279 {
00280 mGamesWon += amount;
00281 refresh();
00282 }
00283
00284
00285
00286 int Player::wonGames()
00287 {
00288 return mGamesWon;
00289 }
00290
00291
00292
00293 void Player::addGame(int amount)
00294 {
00295 mNumberOfGames += amount;
00296 refresh();
00297 }
00298
00299
00300
00301 int Player::games()
00302 {
00303 return mNumberOfGames;
00304 }
00305
00306
00307
00308 void Player::addScore(int amount)
00309 {
00310 mScore += amount;
00311 refresh();
00312 }
00313
00314
00315 int Player::score()
00316 {
00317 return mScore;
00318 }
00319
00320
00321
00322 void Player::setTrump(Suite trump)
00323 {
00324 mTrump = trump;
00325 refresh();
00326 }
00327
00328
00329
00330 Suite Player::trump()
00331 {
00332 return mTrump;
00333 }
00334
00335
00336
00337 void Player::refresh()
00338 {
00339 emit signalUpdate(this);
00340 }
00341
00342 #include "player.moc"