diff --git a/cockatrice/src/carditem.h b/cockatrice/src/carditem.h index 4a2a8331..dd7352da 100644 --- a/cockatrice/src/carditem.h +++ b/cockatrice/src/carditem.h @@ -46,7 +46,7 @@ private: public: enum { Type = typeCard }; int type() const { return Type; } - CardItem(CardDatabase *_db, const QString &_name, int _cardid, QGraphicsItem *parent = 0); + CardItem(CardDatabase *_db, const QString &_name = QString(), int _cardid = -1, QGraphicsItem *parent = 0); ~CardItem(); QRectF boundingRect() const; void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget); diff --git a/cockatrice/src/cardzone.cpp b/cockatrice/src/cardzone.cpp index 87514e72..b4afd50d 100644 --- a/cockatrice/src/cardzone.cpp +++ b/cockatrice/src/cardzone.cpp @@ -6,7 +6,7 @@ #include "zoneviewzone.h" CardZone::CardZone(Player *_p, const QString &_name, bool _hasCardAttr, bool _isShufflable, QGraphicsItem *parent, bool isView) - : QGraphicsItem(parent), player(_p), name(_name), cards(NULL), menu(NULL), hasCardAttr(_hasCardAttr), isShufflable(_isShufflable) + : QGraphicsItem(parent), player(_p), name(_name), cards(NULL), view(NULL), menu(NULL), hasCardAttr(_hasCardAttr), isShufflable(_isShufflable) { if (!isView) player->addZone(this); @@ -15,9 +15,7 @@ CardZone::CardZone(Player *_p, const QString &_name, bool _hasCardAttr, bool _is CardZone::~CardZone() { qDebug(QString("CardZone destructor: %1").arg(name).toLatin1()); - while (!views.empty()) - delete views.at(0); - + delete view; clearContents(); delete cards; } @@ -41,6 +39,17 @@ void CardZone::mousePressEvent(QGraphicsSceneMouseEvent *event) event->ignore(); } +void CardZone::addCard(CardItem *card, bool reorganize, int x, int y) +{ + if (view) + view->addCard(new CardItem(player->getDb(), card->getName(), card->getId()), reorganize, x, y); + + addCardImpl(card, x, y); + + if (reorganize) + reorganizeCards(); +} + CardItem *CardZone::getCard(int cardId, const QString &cardName) { CardItem *c = cards->findCard(cardId, false); @@ -60,13 +69,13 @@ CardItem *CardZone::takeCard(int position, int cardId, const QString &cardName) return NULL; CardItem *c = cards->takeAt(position); - for (int i = 0; i < views.size(); i++) - views[i]->removeCard(position); + + if (view) + view->removeCard(position); + + c->setId(cardId); + c->setName(cardName); -// if (c->getId() == -1) { - c->setId(cardId); - c->setName(cardName); -// } reorganizeCards(); return c; } @@ -82,14 +91,9 @@ void CardZone::hoverCardEvent(CardItem *card) player->hoverCardEvent(card); } -void CardZone::addView(ZoneViewZone *view) +void CardZone::setView(ZoneViewZone *_view) { - views.append(view); -} - -void CardZone::removeView(ZoneViewZone *view) -{ - views.removeAt(views.indexOf(view)); + view = _view; } void CardZone::moveAllToZone(const QString &targetZone, int targetX) diff --git a/cockatrice/src/cardzone.h b/cockatrice/src/cardzone.h index 3ff6df6d..8d7e90a8 100644 --- a/cockatrice/src/cardzone.h +++ b/cockatrice/src/cardzone.h @@ -14,11 +14,12 @@ protected: Player *player; QString name; CardList *cards; - QList views; + ZoneViewZone *view; QMenu *menu; bool hasCardAttr; bool isShufflable; void mousePressEvent(QGraphicsSceneMouseEvent *event); + virtual void addCardImpl(CardItem *card, int x, int y) = 0; public: enum { Type = typeZone }; int type() const { return Type; } @@ -33,16 +34,15 @@ public: QString getName() const { return name; } Player *getPlayer() const { return player; } bool contentsKnown() const { return cards->getContentsKnown(); } - CardList *const getCards() const { return cards; } - virtual void addCard(CardItem *card, bool reorganize = true, int x = -1, int y = -1) = 0; + CardList *getCards() const { return cards; } + void addCard(CardItem *card, bool reorganize, int x, int y = -1); // getCard() finds a card by id. CardItem *getCard(int cardId, const QString &cardName); // takeCard() finds a card by position and removes it from the zone and from all of its views. CardItem *takeCard(int position, int cardId, const QString &cardName); void setCardAttr(int cardId, const QString &aname, const QString &avalue); void hoverCardEvent(CardItem *card); - void addView(ZoneViewZone *view); - void removeView(ZoneViewZone *view); + void setView(ZoneViewZone *_view); virtual void reorganizeCards() = 0; void moveAllToZone(const QString &targetZone, int targetX); }; diff --git a/cockatrice/src/game.cpp b/cockatrice/src/game.cpp index ed5258c5..2c00603d 100644 --- a/cockatrice/src/game.cpp +++ b/cockatrice/src/game.cpp @@ -95,7 +95,7 @@ Game::Game(CardDatabase *_db, Client *_client, QGraphicsScene *_scene, QMenu *_a dlgStartGame = new DlgStartGame(db); connect(dlgStartGame, SIGNAL(newDeckLoaded(const QStringList &)), client, SLOT(submitDeck(const QStringList &))); - connect(dlgStartGame, SIGNAL(finished(int)), this, SLOT(readyStart(int))); + connect(dlgStartGame, SIGNAL(finished(int)), this, SLOT(readyStart())); } Game::~Game() @@ -144,10 +144,8 @@ void Game::playerListReceived(QList playerList) restartGameDialog(); } -void Game::readyStart(int foo) +void Game::readyStart() { - Q_UNUSED(foo); - client->readyStart(); } diff --git a/cockatrice/src/game.h b/cockatrice/src/game.h index b67fed67..6d571873 100644 --- a/cockatrice/src/game.h +++ b/cockatrice/src/game.h @@ -49,7 +49,7 @@ private slots: void gameEvent(ServerEventData *msg); void playerListReceived(QList playerList); - void readyStart(int foo); + void readyStart(); signals: void submitDecklist(); void hoverCard(QString name); diff --git a/cockatrice/src/gamesmodel.cpp b/cockatrice/src/gamesmodel.cpp index 65419cba..45779945 100644 --- a/cockatrice/src/gamesmodel.cpp +++ b/cockatrice/src/gamesmodel.cpp @@ -6,12 +6,12 @@ GamesModel::~GamesModel() cleanList(); } -int GamesModel::rowCount(const QModelIndex &parent) const +int GamesModel::rowCount(const QModelIndex &/*parent*/) const { return gameList.size(); } -int GamesModel::columnCount(const QModelIndex &parent) const +int GamesModel::columnCount(const QModelIndex &/*parent*/) const { return 5; } diff --git a/cockatrice/src/gravezone.cpp b/cockatrice/src/gravezone.cpp index 9289b7ee..c69b9613 100644 --- a/cockatrice/src/gravezone.cpp +++ b/cockatrice/src/gravezone.cpp @@ -16,10 +16,8 @@ QRectF GraveZone::boundingRect() const return QRectF(0, 0, CARD_WIDTH, CARD_HEIGHT); } -void GraveZone::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) +void GraveZone::paint(QPainter *painter, const QStyleOptionGraphicsItem */*option*/, QWidget */*widget*/) { - Q_UNUSED(option); - Q_UNUSED(widget); painter->save(); painter->fillRect(boundingRect(), QColor("yellow")); @@ -33,22 +31,16 @@ void GraveZone::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, painter->restore(); } -void GraveZone::addCard(CardItem *card, bool reorganize, int x, int y) +void GraveZone::addCardImpl(CardItem *card, int x, int /*y*/) { - for (int i = 0; i < views.size(); i++) - views[i]->addCard(new CardItem(player->getDb(), card->getName(), card->getId()), reorganize, x, y); - cards->insert(x, card); card->setPos(0, 0); card->setVisible(false); card->resetState(); card->setParentItem(this); - - if (reorganize) - reorganizeCards(); } -void GraveZone::handleDropEvent(int cardId, CardZone *startZone, const QPoint &dropPoint, bool faceDown) +void GraveZone::handleDropEvent(int cardId, CardZone *startZone, const QPoint &/*dropPoint*/, bool /*faceDown*/) { player->client->moveCard(cardId, startZone->getName(), getName(), 0, 0); } diff --git a/cockatrice/src/gravezone.h b/cockatrice/src/gravezone.h index b64b9c86..42efdfba 100644 --- a/cockatrice/src/gravezone.h +++ b/cockatrice/src/gravezone.h @@ -9,13 +9,13 @@ public: GraveZone(Player *_p, QGraphicsItem *parent = 0); QRectF boundingRect() const; void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget); - void addCard(CardItem *card, bool reorganize = true, int x = 0, int y = -1); void reorganizeCards(); void handleDropEvent(int cardId, CardZone *startZone, const QPoint &dropPoint, bool faceDown); protected: void mousePressEvent(QGraphicsSceneMouseEvent *event); void mouseMoveEvent(QGraphicsSceneMouseEvent *event); void mouseReleaseEvent(QGraphicsSceneMouseEvent *event); + void addCardImpl(CardItem *card, int x, int y); }; #endif diff --git a/cockatrice/src/handzone.cpp b/cockatrice/src/handzone.cpp index 5e15e4ad..c153d1ba 100644 --- a/cockatrice/src/handzone.cpp +++ b/cockatrice/src/handzone.cpp @@ -45,10 +45,8 @@ void HandZone::reorganizeCards() } } -void HandZone::addCard(CardItem *card, bool reorganize, int x, int y) +void HandZone::addCardImpl(CardItem *card, int x, int /*y*/) { - Q_UNUSED(y); - if (x == -1) x = cards->size(); cards->insert(x, card); @@ -61,13 +59,9 @@ void HandZone::addCard(CardItem *card, bool reorganize, int x, int y) card->resetState(); card->setVisible(true); card->update(card->boundingRect()); - - if (reorganize) - reorganizeCards(); } -void HandZone::handleDropEvent(int cardId, CardZone *startZone, const QPoint &dropPoint, bool faceDown) +void HandZone::handleDropEvent(int cardId, CardZone *startZone, const QPoint &/*dropPoint*/, bool /*faceDown*/) { - Q_UNUSED(dropPoint); player->client->moveCard(cardId, startZone->getName(), getName(), cards->size(), 0); } diff --git a/cockatrice/src/handzone.h b/cockatrice/src/handzone.h index a09574a2..dabad0bd 100644 --- a/cockatrice/src/handzone.h +++ b/cockatrice/src/handzone.h @@ -9,9 +9,10 @@ public: HandZone(Player *_p, QGraphicsItem *parent = 0); QRectF boundingRect() const; void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget); - void addCard(CardItem *card, bool reorganize = true, int x = -1, int y = -1); void reorganizeCards(); void handleDropEvent(int cardId, CardZone *startZone, const QPoint &dropPoint, bool faceDown); +protected: + void addCardImpl(CardItem *card, int x, int y); }; #endif diff --git a/cockatrice/src/libraryzone.cpp b/cockatrice/src/libraryzone.cpp index 288a0e43..6a98f921 100644 --- a/cockatrice/src/libraryzone.cpp +++ b/cockatrice/src/libraryzone.cpp @@ -40,11 +40,8 @@ void LibraryZone::paint(QPainter *painter, const QStyleOptionGraphicsItem *optio painter->restore(); } -void LibraryZone::addCard(CardItem *card, bool reorganize, int x, int y) +void LibraryZone::addCardImpl(CardItem *card, int x, int /*y*/) { - for (int i = 0; i < views.size(); i++) - views[i]->addCard(new CardItem(player->getDb(), card->getName(), card->getId()), reorganize, x, y); - cards->insert(x, card); card->setId(-1); card->setName(QString()); @@ -52,12 +49,9 @@ void LibraryZone::addCard(CardItem *card, bool reorganize, int x, int y) card->setVisible(false); card->resetState(); card->setParentItem(this); - - if (reorganize) - reorganizeCards(); } -void LibraryZone::handleDropEvent(int cardId, CardZone *startZone, const QPoint &dropPoint, bool faceDown) +void LibraryZone::handleDropEvent(int cardId, CardZone *startZone, const QPoint &/*dropPoint*/, bool /*faceDown*/) { player->client->moveCard(cardId, startZone->getName(), getName(), 0, 0); } diff --git a/cockatrice/src/libraryzone.h b/cockatrice/src/libraryzone.h index 89e0ff1c..d82929d0 100644 --- a/cockatrice/src/libraryzone.h +++ b/cockatrice/src/libraryzone.h @@ -9,13 +9,13 @@ public: LibraryZone(Player *_p, QGraphicsItem *parent = 0); QRectF boundingRect() const; void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget); - void addCard(CardItem *card, bool reorganize = true, int x = 0, int y = -1); void reorganizeCards(); void handleDropEvent(int cardId, CardZone *startZone, const QPoint &dropPoint, bool faceDown); protected: void mousePressEvent(QGraphicsSceneMouseEvent *event); void mouseMoveEvent(QGraphicsSceneMouseEvent *event); void mouseReleaseEvent(QGraphicsSceneMouseEvent *event); + void addCardImpl(CardItem *card, int x, int y); }; #endif diff --git a/cockatrice/src/player.cpp b/cockatrice/src/player.cpp index 7af08374..5265fa2e 100644 --- a/cockatrice/src/player.cpp +++ b/cockatrice/src/player.cpp @@ -161,12 +161,12 @@ void Player::gameEvent(ServerEventData *event) CardZone *deck = zones.findZone("deck"); for (; deck_cards; deck_cards--) - deck->addCard(new CardItem(db, QString(), -1)); + deck->addCard(new CardItem(db), false, -1); deck->reorganizeCards(); CardZone *sb = zones.findZone("sb"); for (; sb_cards; sb_cards--) - sb->addCard(new CardItem(db, QString(), -1)); + sb->addCard(new CardItem(db), false, -1); sb->reorganizeCards(); if (local) { @@ -186,11 +186,12 @@ void Player::gameEvent(ServerEventData *event) CardZone *deck = zones.findZone("deck"); CardZone *hand = zones.findZone("hand"); if (!event->getPublic()) { - hand->addCard(deck->takeCard(0, data[0].toInt(), data[1])); + hand->addCard(deck->takeCard(0, data[0].toInt(), data[1]), true, -1); } else { int number = data[0].toInt(); for (; number; number--) - hand->addCard(deck->takeCard(0, -1, QString())); + hand->addCard(deck->takeCard(0, -1, QString()), false, -1); + hand->reorganizeCards(); } break; } diff --git a/cockatrice/src/player.h b/cockatrice/src/player.h index f886113c..e787515e 100644 --- a/cockatrice/src/player.h +++ b/cockatrice/src/player.h @@ -61,7 +61,7 @@ public: int getId() const { return id; } QString getName() const { return name; } bool getLocal() const { return local; } - const ZoneList *const getZones() const { return &zones; } + const ZoneList *getZones() const { return &zones; } void gameEvent(ServerEventData *event); void hoverCardEvent(CardItem *card); CardDatabase *getDb() const { return db; } diff --git a/cockatrice/src/rfgzone.cpp b/cockatrice/src/rfgzone.cpp index b50ba2e0..f3ae89d3 100644 --- a/cockatrice/src/rfgzone.cpp +++ b/cockatrice/src/rfgzone.cpp @@ -33,22 +33,16 @@ void RfgZone::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, Q painter->restore(); } -void RfgZone::addCard(CardItem *card, bool reorganize, int x, int y) +void RfgZone::addCardImpl(CardItem *card, int x, int /*y*/) { - for (int i = 0; i < views.size(); i++) - views[i]->addCard(new CardItem(player->getDb(), card->getName(), card->getId()), reorganize, x, y); - cards->insert(x, card); card->setPos(0, 0); card->setVisible(false); card->resetState(); card->setParentItem(this); - - if (reorganize) - reorganizeCards(); } -void RfgZone::handleDropEvent(int cardId, CardZone *startZone, const QPoint &dropPoint, bool faceDown) +void RfgZone::handleDropEvent(int cardId, CardZone *startZone, const QPoint &/*dropPoint*/, bool /*faceDown*/) { player->client->moveCard(cardId, startZone->getName(), getName(), 0, 0); } diff --git a/cockatrice/src/rfgzone.h b/cockatrice/src/rfgzone.h index 96433fed..60692ebc 100644 --- a/cockatrice/src/rfgzone.h +++ b/cockatrice/src/rfgzone.h @@ -9,13 +9,13 @@ public: RfgZone(Player *_p, QGraphicsItem *parent = 0); QRectF boundingRect() const; void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget); - void addCard(CardItem *card, bool reorganize = true, int x = 0, int y = -1); void reorganizeCards(); void handleDropEvent(int cardId, CardZone *startZone, const QPoint &dropPoint, bool faceDown); protected: void mousePressEvent(QGraphicsSceneMouseEvent *event); void mouseMoveEvent(QGraphicsSceneMouseEvent *event); void mouseReleaseEvent(QGraphicsSceneMouseEvent *event); + void addCardImpl(CardItem *card, int x, int y); }; #endif diff --git a/cockatrice/src/sideboardzone.cpp b/cockatrice/src/sideboardzone.cpp index 2523507f..464a6c75 100644 --- a/cockatrice/src/sideboardzone.cpp +++ b/cockatrice/src/sideboardzone.cpp @@ -15,10 +15,8 @@ QRectF SideboardZone::boundingRect() const return QRectF(0, 0, 50, 50); } -void SideboardZone::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) +void SideboardZone::paint(QPainter *painter, const QStyleOptionGraphicsItem */*option*/, QWidget */*widget*/) { - Q_UNUSED(option); - Q_UNUSED(widget); painter->save(); painter->fillRect(boundingRect(), QColor("blue")); painter->setFont(QFont("Times", 20, QFont::Bold)); @@ -27,22 +25,16 @@ void SideboardZone::paint(QPainter *painter, const QStyleOptionGraphicsItem *opt painter->restore(); } -void SideboardZone::addCard(CardItem *card, bool reorganize, int x, int y) +void SideboardZone::addCardImpl(CardItem *card, int x, int /*y*/) { - for (int i = 0; i < views.size(); i++) - views[i]->addCard(new CardItem(player->getDb(), card->getName(), card->getId()), reorganize, x, y); - cards->insert(x, card); card->setPos(0, 0); card->setVisible(false); card->resetState(); card->setParentItem(this); - - if (reorganize) - reorganizeCards(); } -void SideboardZone::handleDropEvent(int cardId, CardZone *startZone, const QPoint &dropPoint, bool faceDown) +void SideboardZone::handleDropEvent(int cardId, CardZone *startZone, const QPoint &/*dropPoint*/, bool /*faceDown*/) { player->client->moveCard(cardId, startZone->getName(), getName(), 0, 0); } @@ -51,4 +43,3 @@ void SideboardZone::reorganizeCards() { update(boundingRect()); } - diff --git a/cockatrice/src/sideboardzone.h b/cockatrice/src/sideboardzone.h index f7983532..b1113ed3 100644 --- a/cockatrice/src/sideboardzone.h +++ b/cockatrice/src/sideboardzone.h @@ -9,9 +9,10 @@ public: SideboardZone(Player *_p, QGraphicsItem *parent = 0); QRectF boundingRect() const; void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget); - void addCard(CardItem *card, bool reorganize = true, int x = 0, int y = -1); void reorganizeCards(); void handleDropEvent(int cardId, CardZone *startZone, const QPoint &dropPoint, bool faceDown); +protected: + void addCardImpl(CardItem *card, int x, int y); }; #endif diff --git a/cockatrice/src/tablezone.cpp b/cockatrice/src/tablezone.cpp index 2d8dee25..4875e596 100644 --- a/cockatrice/src/tablezone.cpp +++ b/cockatrice/src/tablezone.cpp @@ -21,9 +21,8 @@ void TableZone::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, painter->fillRect(boundingRect(), QColor(0, 0, 100)); } -void TableZone::addCard(CardItem *card, bool reorganize, int x, int y) +void TableZone::addCardImpl(CardItem *card, int x, int y) { - Q_UNUSED(reorganize); cards->append(card); if ((x != -1) && (y != -1)) { if (!player->getLocal()) diff --git a/cockatrice/src/tablezone.h b/cockatrice/src/tablezone.h index e610f0da..f8a212ac 100644 --- a/cockatrice/src/tablezone.h +++ b/cockatrice/src/tablezone.h @@ -13,10 +13,11 @@ public: TableZone(Player *_p, QGraphicsItem *parent = 0); QRectF boundingRect() const; void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget); - void addCard(CardItem *card, bool reorganize = true, int x = -1, int y = -1); void reorganizeCards(); void toggleTapped(); void handleDropEvent(int cardId, CardZone *startZone, const QPoint &dropPoint, bool faceDown); +protected: + void addCardImpl(CardItem *card, int x, int y); }; #endif diff --git a/cockatrice/src/window_main.cpp b/cockatrice/src/window_main.cpp index a1803643..2de1de6c 100644 --- a/cockatrice/src/window_main.cpp +++ b/cockatrice/src/window_main.cpp @@ -277,11 +277,8 @@ MainWindow::MainWindow(QWidget *parent) createMenus(); } -void MainWindow::closeEvent(QCloseEvent *event) +void MainWindow::closeEvent(QCloseEvent */*event*/) { delete game; - -// db->importOracle(); -// db->saveToFile("../cards.dat"); delete db; } diff --git a/cockatrice/src/zoneviewzone.cpp b/cockatrice/src/zoneviewzone.cpp index 1c6d692e..e797814c 100644 --- a/cockatrice/src/zoneviewzone.cpp +++ b/cockatrice/src/zoneviewzone.cpp @@ -7,13 +7,13 @@ ZoneViewZone::ZoneViewZone(Player *_p, CardZone *_origZone, int _numberCards, QG : CardZone(_p, _origZone->getName(), false, false, parent, true), height(0), numberCards(_numberCards), origZone(_origZone) { cards = new CardList(true); - origZone->addView(this); + origZone->setView(this); } ZoneViewZone::~ZoneViewZone() { qDebug("ZoneViewZone destructor"); - origZone->removeView(this); + origZone->setView(NULL); } QRectF ZoneViewZone::boundingRect() const @@ -74,20 +74,15 @@ void ZoneViewZone::reorganizeCards() } } -void ZoneViewZone::addCard(CardItem *card, bool reorganize, int x, int y) +void ZoneViewZone::addCardImpl(CardItem *card, int x, int /*y*/) { - Q_UNUSED(y); - qDebug(QString("ZoneViewZone: inserting '%1' at x=%2").arg(card->getName()).arg(x).toLatin1()); cards->insert(x, card); card->setParentItem(this); card->update(card->boundingRect()); - if (reorganize) - reorganizeCards(); } -void ZoneViewZone::handleDropEvent(int cardId, CardZone *startZone, const QPoint &dropPoint, bool faceDown) +void ZoneViewZone::handleDropEvent(int cardId, CardZone *startZone, const QPoint &/*dropPoint*/, bool /*faceDown*/) { - Q_UNUSED(dropPoint); qDebug(QString("handleDropEvent id=%1").arg(cardId).toLatin1()); player->client->moveCard(cardId, startZone->getName(), getName(), 0, 0); } diff --git a/cockatrice/src/zoneviewzone.h b/cockatrice/src/zoneviewzone.h index 48a31052..aa407ad1 100644 --- a/cockatrice/src/zoneviewzone.h +++ b/cockatrice/src/zoneviewzone.h @@ -19,11 +19,12 @@ public: ~ZoneViewZone(); QRectF boundingRect() const; void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget); - void addCard(CardItem *card, bool reorganize = true, int x = 0, int y = -1); void reorganizeCards(); bool initializeCards(); void removeCard(int position); void setHeight(int _height) { height = _height; } +protected: + void addCardImpl(CardItem *card, int x, int y); }; #endif diff --git a/servatrice/servatrice.ini.example b/servatrice/servatrice.ini.example index bdf46d19..260d83f5 100644 --- a/servatrice/servatrice.ini.example +++ b/servatrice/servatrice.ini.example @@ -1,3 +1,6 @@ +[authentication] +method=none + [database] hostname=localhost database=servatrice diff --git a/servatrice/servatrice.pro b/servatrice/servatrice.pro index 086cc7e2..5353c9d5 100755 --- a/servatrice/servatrice.pro +++ b/servatrice/servatrice.pro @@ -6,6 +6,8 @@ TEMPLATE = app TARGET = DEPENDPATH += . src INCLUDEPATH += . src +MOC_DIR = build +OBJECTS_DIR = build CONFIG += qt thread QT += network sql diff --git a/servatrice/src/main.cpp b/servatrice/src/main.cpp index 0c0b9b11..bb649d6f 100644 --- a/servatrice/src/main.cpp +++ b/servatrice/src/main.cpp @@ -32,10 +32,6 @@ int main(int argc, char *argv[]) QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8")); Server server; - if (!server.openDatabase()) { - qCritical("Database error"); - return -1; - } server.listen(QHostAddress::Any, 4747); return app.exec(); diff --git a/servatrice/src/random.cpp b/servatrice/src/random.cpp index 0d9068ae..57007769 100644 --- a/servatrice/src/random.cpp +++ b/servatrice/src/random.cpp @@ -1,14 +1,13 @@ #include "random.h" -#include +#include +#include -void Random::init() +Random::Random(QObject *parent) + : QObject(parent) { - if (initialized) - return; int seed = QDateTime::currentDateTime().toTime_t(); - qDebug(QString("%1: qsrand(%2)").arg(thread()->metaObject()->className()).arg(seed).toLatin1()); + qDebug(QString("qsrand(%1)").arg(seed).toLatin1()); qsrand(seed); - initialized = true; } unsigned int Random::getNumber(unsigned int min, unsigned int max) diff --git a/servatrice/src/random.h b/servatrice/src/random.h index a5e60143..e1129181 100644 --- a/servatrice/src/random.h +++ b/servatrice/src/random.h @@ -2,16 +2,11 @@ #define RANDOM_H #include -#include -#include class Random : public QObject { Q_OBJECT -private: - bool initialized; public: - Random(QObject *parent) : QObject(parent), initialized(false) { } - void init(); + Random(QObject *parent = 0); unsigned int getNumber(unsigned int min, unsigned int max); }; diff --git a/servatrice/src/server.cpp b/servatrice/src/server.cpp index 047c4a60..80eab93c 100644 --- a/servatrice/src/server.cpp +++ b/servatrice/src/server.cpp @@ -28,6 +28,10 @@ Server::Server(QObject *parent) : QTcpServer(parent), nextGameId(0) { settings = new QSettings("servatrice.ini", QSettings::IniFormat, this); + + QString dbType = settings->value("database/type").toString(); + if (dbType == "mysql") + openDatabase(); } Server::~Server() @@ -81,21 +85,27 @@ void Server::incomingConnection(int socketId) AuthenticationResult Server::checkUserPassword(const QString &user, const QString &password) { - if (!QSqlDatabase::database().exec("select 1").isActive()) - openDatabase(); - - QSqlQuery query; - query.prepare("select password from players where name = :name"); - query.bindValue(":name", user); - if (!query.exec()) { - qCritical(QString("Database error: %1").arg(query.lastError().text()).toLatin1()); - return PasswordWrong; - } - if (query.next()) { - if (query.value(0).toString() == password) - return PasswordRight; - else + const QString method = settings->value("authentication/method").toString(); + if (method == "none") + return UnknownUser; + else if (method == "sql") { + if (!QSqlDatabase::database().exec("select 1").isActive()) + openDatabase(); + + QSqlQuery query; + query.prepare("select password from players where name = :name"); + query.bindValue(":name", user); + if (!query.exec()) { + qCritical(QString("Database error: %1").arg(query.lastError().text()).toLatin1()); return PasswordWrong; + } + if (query.next()) { + if (query.value(0).toString() == password) + return PasswordRight; + else + return PasswordWrong; + } else + return UnknownUser; } else return UnknownUser; }