diff --git a/cockatrice/src/carddragitem.cpp b/cockatrice/src/carddragitem.cpp index 1fb56d96..bb4a2960 100644 --- a/cockatrice/src/carddragitem.cpp +++ b/cockatrice/src/carddragitem.cpp @@ -15,6 +15,7 @@ CardDragItem::CardDragItem(QGraphicsScene *scene, CardZone *_startZone, QPixmap setZValue(2000000000); setCacheMode(DeviceCoordinateCache); + setCursor(Qt::ClosedHandCursor); if (!parent) scene->addItem(this); diff --git a/cockatrice/src/carditem.cpp b/cockatrice/src/carditem.cpp index fd8f3805..4a5321e2 100644 --- a/cockatrice/src/carditem.cpp +++ b/cockatrice/src/carditem.cpp @@ -10,8 +10,6 @@ CardItem::CardItem(CardDatabase *_db, const QString &_name, int _cardid, QGraphicsItem *parent) : QGraphicsItem(parent), db(_db), name(_name), id(_cardid), tapped(false), attacking(false), facedown(false), counters(0), doesntUntap(false), dragItem(NULL) { - width = CARD_WIDTH; - height = CARD_HEIGHT; image = db->getCard(name)->getPixmap(); setCursor(Qt::OpenHandCursor); setFlag(ItemIsSelectable); @@ -27,13 +25,11 @@ CardItem::~CardItem() QRectF CardItem::boundingRect() const { - return QRectF(0, 0, width, height); + return QRectF(0, 0, CARD_WIDTH, CARD_HEIGHT); } -void CardItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) +void CardItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget */*widget*/) { - Q_UNUSED(widget); - painter->save(); QRectF foo = option->matrix.mapRect(boundingRect()); qDebug(QString("%1: w=%2,h=%3").arg(name).arg(foo.width()).arg(foo.height()).toLatin1()); @@ -46,7 +42,7 @@ void CardItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, painter->drawPixmap(boundingRect(), bar, bar.rect()); if (isSelected()) { painter->setPen(QPen(QColor("red"))); - painter->drawRect(QRectF(1, 1, width - 2, height - 2)); + painter->drawRect(QRectF(1, 1, CARD_WIDTH - 2, CARD_HEIGHT - 2)); } if (counters) { painter->setFont(QFont("Times", 32, QFont::Bold)); @@ -69,7 +65,7 @@ void CardItem::setTapped(bool _tapped) { tapped = _tapped; if (tapped) - setTransform(QTransform().translate((float) width / 2, (float) height / 2).rotate(90).translate((float) -width / 2, (float) -height / 2)); + setTransform(QTransform().translate((float) CARD_WIDTH / 2, (float) CARD_HEIGHT / 2).rotate(90).translate((float) -CARD_WIDTH / 2, (float) -CARD_HEIGHT / 2)); else setTransform(QTransform()); update(boundingRect()); @@ -161,19 +157,16 @@ void CardItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event) CardDragItem *drag = new CardDragItem(scene(), (CardZone *) parentItem(), c->getImage(), c->getId(), QPointF(), false, dragItem); drag->setPos(c->pos() - pos()); } - setCursor(Qt::OpenHandCursor); } -void CardItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) +void CardItem::mouseReleaseEvent(QGraphicsSceneMouseEvent */*event*/) { - Q_UNUSED(event); setCursor(Qt::OpenHandCursor); } void CardItem::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) { - Q_UNUSED(event); if (!isSelected()) { // Unselect all items, then select this one scene()->setSelectionArea(QPainterPath()); diff --git a/cockatrice/src/carditem.h b/cockatrice/src/carditem.h index dd7352da..8a1252ad 100644 --- a/cockatrice/src/carditem.h +++ b/cockatrice/src/carditem.h @@ -34,7 +34,6 @@ private: CardDatabase *db; QString name; int id; - int width, height; QPixmap *image; bool tapped; bool attacking; diff --git a/cockatrice/src/client.cpp b/cockatrice/src/client.cpp index fc903cbe..aafa0a39 100644 --- a/cockatrice/src/client.cpp +++ b/cockatrice/src/client.cpp @@ -2,13 +2,12 @@ #include "client.h" Client::Client(QObject *parent) - : QObject(parent), MsgId(0) + : QObject(parent), status(StatusDisconnected), MsgId(0) { timer = new QTimer(this); timer->setInterval(1000); connect(timer, SIGNAL(timeout()), this, SLOT(checkTimeout())); - status = StatusDisconnected; socket = new QTcpSocket(this); socket->setTextModeEnabled(true); connect(socket, SIGNAL(connected()), this, SLOT(slotConnected())); @@ -19,7 +18,6 @@ Client::Client(QObject *parent) Client::~Client() { disconnectFromServer(); - delete socket; } void Client::checkTimeout() @@ -54,11 +52,8 @@ void Client::slotConnected() void Client::readLine() { - QString line; - for (;;) { - if (!socket->canReadLine()) - break; - line = QString(socket->readLine()).trimmed(); + while (socket->canReadLine()) { + QString line = QString(socket->readLine()).trimmed(); if (line.isNull()) break; @@ -67,9 +62,9 @@ void Client::readLine() QString prefix = values.takeFirst(); // prefix is one of {welcome, private, public, resp, list_games, list_players, list_counters, list_zones, dump_zone} if (!(prefix.compare("private") && prefix.compare("public"))) { - ServerEventData *event = new ServerEventData(line); - if (event->getEventType() == eventPlayerId) { - QStringList data = event->getEventData(); + ServerEventData event(line); + if (event.getEventType() == eventPlayerId) { + QStringList data = event.getEventData(); if (data.size() != 2) { // XXX } @@ -78,7 +73,6 @@ void Client::readLine() if (!ok) { // XXX } - delete event; emit playerIdReceived(id, data[1]); } else emit gameEvent(event); diff --git a/cockatrice/src/client.h b/cockatrice/src/client.h index 4fe426f0..a591ab45 100644 --- a/cockatrice/src/client.h +++ b/cockatrice/src/client.h @@ -32,7 +32,7 @@ signals: void zoneDumpReceived(int commandId, QList cards); void responseReceived(ServerResponse *response); void playerIdReceived(int id, QString name); - void gameEvent(ServerEventData *msg); + void gameEvent(const ServerEventData &msg); void serverTimeout(); void logSocketError(const QString &errorString); @@ -57,7 +57,7 @@ private: public: Client(QObject *parent = 0); ~Client(); - ProtocolStatus getStatus() { return status; } + ProtocolStatus getStatus() const { return status; } QString peerName() const { return socket->peerName(); } void connectToServer(const QString &hostname, unsigned int port, const QString &playername, const QString &password); diff --git a/cockatrice/src/game.cpp b/cockatrice/src/game.cpp index 93c7ddf9..0ccad091 100644 --- a/cockatrice/src/game.cpp +++ b/cockatrice/src/game.cpp @@ -18,7 +18,7 @@ Game::Game(CardDatabase *_db, Client *_client, QGraphicsScene *_scene, QMenu *_a QRectF sr = scene->sceneRect(); localPlayer = addPlayer(playerId, playerName, QPointF(0, sr.y() + sr.height() / 2 + 2), true); - connect(client, SIGNAL(gameEvent(ServerEventData *)), this, SLOT(gameEvent(ServerEventData *))); + connect(client, SIGNAL(gameEvent(const ServerEventData &)), this, SLOT(gameEvent(const ServerEventData &))); connect(client, SIGNAL(playerListReceived(QList)), this, SLOT(playerListReceived(QList))); aUntapAll = new QAction(tr("&Untap all permanents"), this); @@ -154,36 +154,38 @@ void Game::restartGameDialog() dlgStartGame->show(); } -void Game::gameEvent(ServerEventData *msg) +void Game::gameEvent(const ServerEventData &msg) { - qDebug(QString("game::gameEvent: public=%1, player=%2, name=%3, type=%4, data=%5").arg(msg->getPublic()).arg(msg->getPlayerId()).arg(msg->getPlayerName()).arg(msg->getEventType()).arg(msg->getEventData().join("/")).toLatin1()); - if (!msg->getPublic()) + qDebug(QString("game::gameEvent: public=%1, player=%2, name=%3, type=%4, data=%5").arg(msg.getPublic()).arg(msg.getPlayerId()).arg(msg.getPlayerName()).arg(msg.getEventType()).arg(msg.getEventData().join("/")).toLatin1()); + if (!msg.getPublic()) localPlayer->gameEvent(msg); else { - Player *p = players.findPlayer(msg->getPlayerId()); + Player *p = players.findPlayer(msg.getPlayerId()); if (!p) { // XXX } - switch(msg->getEventType()) { + switch(msg.getEventType()) { case eventSay: - emit logSay(p->getName(), msg->getEventData()[0]); + emit logSay(p->getName(), msg.getEventData()[0]); break; case eventJoin: { - emit logJoin(msg->getPlayerName()); - addPlayer(msg->getPlayerId(), msg->getPlayerName(), QPointF(0, 0), false); + emit logJoin(msg.getPlayerName()); + addPlayer(msg.getPlayerId(), msg.getPlayerName(), QPointF(0, 0), false); break; } case eventLeave: - emit logLeave(msg->getPlayerName()); + emit logLeave(msg.getPlayerName()); // XXX Spieler natürlich noch rauswerfen break; case eventReadyStart: if (started) { started = false; emit logReadyStart(p->getName()); - if (!p->getLocal()) + if (!p->getLocal()) { + // XXX Zoneviews schließen restartGameDialog(); + } } break; case eventGameStart: @@ -194,7 +196,7 @@ void Game::gameEvent(ServerEventData *msg) emit logShuffle(p->getName()); break; case eventRollDice: { - QStringList data = msg->getEventData(); + QStringList data = msg.getEventData(); int sides = data[0].toInt(); int roll = data[1].toInt(); emit logRollDice(p->getName(), sides, roll); @@ -217,19 +219,19 @@ void Game::gameEvent(ServerEventData *msg) break; } case eventDumpZone: { - QStringList data = msg->getEventData(); + QStringList data = msg.getEventData(); emit logDumpZone(p->getName(), data[1], players.findPlayer(data[0].toInt())->getName(), data[2].toInt()); break; } case eventMoveCard: { - if (msg->getPlayerId() == localPlayer->getId()) + if (msg.getPlayerId() == localPlayer->getId()) break; p->gameEvent(msg); break; } case eventDraw: { - emit logDraw(p->getName(), msg->getEventData()[0].toInt()); - if (msg->getPlayerId() == localPlayer->getId()) + emit logDraw(p->getName(), msg.getEventData()[0].toInt()); + if (msg.getPlayerId() == localPlayer->getId()) break; p->gameEvent(msg); break; diff --git a/cockatrice/src/game.h b/cockatrice/src/game.h index 6d571873..9d85dde8 100644 --- a/cockatrice/src/game.h +++ b/cockatrice/src/game.h @@ -47,7 +47,7 @@ private slots: void actSetCounters(); void actRearrange(); - void gameEvent(ServerEventData *msg); + void gameEvent(const ServerEventData &msg); void playerListReceived(QList playerList); void readyStart(); signals: diff --git a/cockatrice/src/gravezone.cpp b/cockatrice/src/gravezone.cpp index 098cf39d..b1d79dae 100644 --- a/cockatrice/src/gravezone.cpp +++ b/cockatrice/src/gravezone.cpp @@ -10,6 +10,7 @@ GraveZone::GraveZone(Player *_p, QGraphicsItem *parent) { cards = new CardList(true); setCacheMode(DeviceCoordinateCache); // Do not move this line to the parent constructor! + setCursor(Qt::OpenHandCursor); } QRectF GraveZone::boundingRect() const @@ -19,6 +20,7 @@ QRectF GraveZone::boundingRect() const void GraveZone::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) { + qDebug("grave: paint"); if (!cards->isEmpty()) cards->at(0)->paint(painter, option, widget); @@ -46,6 +48,7 @@ void GraveZone::handleDropEvent(int cardId, CardZone *startZone, const QPoint &/ void GraveZone::reorganizeCards() { + qDebug(QString("grave: reorganize, x=%1, y=%2, w=%3, h=%4").arg(boundingRect().x()).arg(boundingRect().y()).arg(boundingRect().width()).arg(boundingRect().height()).toLatin1()); update(boundingRect()); } diff --git a/cockatrice/src/player.cpp b/cockatrice/src/player.cpp index 32c2d421..0dd50c9e 100644 --- a/cockatrice/src/player.cpp +++ b/cockatrice/src/player.cpp @@ -143,10 +143,10 @@ void Player::setCardAttrHelper(CardItem *card, const QString &aname, const QStri } } -void Player::gameEvent(ServerEventData *event) +void Player::gameEvent(const ServerEventData &event) { - QStringList data = event->getEventData(); - switch (event->getEventType()) { + QStringList data = event.getEventData(); + switch (event.getEventType()) { case eventSetupZones: { // XXX Life counter int deck_cards = data[0].toInt(); @@ -186,7 +186,7 @@ void Player::gameEvent(ServerEventData *event) case eventDraw: { CardZone *deck = zones.findZone("deck"); CardZone *hand = zones.findZone("hand"); - if (!event->getPublic()) { + if (!event.getPublic()) { hand->addCard(deck->takeCard(0, data[0].toInt(), data[1]), true, -1); } else { int number = data[0].toInt(); diff --git a/cockatrice/src/player.h b/cockatrice/src/player.h index e787515e..e319022d 100644 --- a/cockatrice/src/player.h +++ b/cockatrice/src/player.h @@ -62,7 +62,7 @@ public: QString getName() const { return name; } bool getLocal() const { return local; } const ZoneList *getZones() const { return &zones; } - void gameEvent(ServerEventData *event); + void gameEvent(const ServerEventData &event); void hoverCardEvent(CardItem *card); CardDatabase *getDb() const { return db; } void showCardMenu(const QPoint &p); diff --git a/cockatrice/src/rfgzone.cpp b/cockatrice/src/rfgzone.cpp index b2a13f20..bd21224a 100644 --- a/cockatrice/src/rfgzone.cpp +++ b/cockatrice/src/rfgzone.cpp @@ -10,6 +10,7 @@ RfgZone::RfgZone(Player *_p, QGraphicsItem *parent) { cards = new CardList(true); setCacheMode(DeviceCoordinateCache); // Do not move this line to the parent constructor! + setCursor(Qt::OpenHandCursor); } QRectF RfgZone::boundingRect() const diff --git a/cockatrice/src/servereventdata.h b/cockatrice/src/servereventdata.h index 55f12837..dd8e5267 100644 --- a/cockatrice/src/servereventdata.h +++ b/cockatrice/src/servereventdata.h @@ -45,11 +45,11 @@ private: QStringList EventData; public: ServerEventData(const QString &line); - bool getPublic() { return IsPublic; } - int getPlayerId() { return PlayerId; } - QString getPlayerName() { return PlayerName; } - ServerEventType getEventType() { return EventType; } - QStringList getEventData() { return EventData; } + bool getPublic() const { return IsPublic; } + int getPlayerId() const { return PlayerId; } + QString getPlayerName() const { return PlayerName; } + ServerEventType getEventType() const { return EventType; } + QStringList getEventData() const { return EventData; } }; #endif diff --git a/cockatrice/src/servergame.h b/cockatrice/src/servergame.h index 370e0717..530595da 100644 --- a/cockatrice/src/servergame.h +++ b/cockatrice/src/servergame.h @@ -12,12 +12,12 @@ private: public: ServerGame(int _gameId, const QString &_creator, const QString &_description, bool _hasPassword, unsigned char _playerCount, unsigned char _maxPlayers) : gameId(_gameId), creator(_creator), description(_description), hasPassword(_hasPassword), playerCount(_playerCount), maxPlayers(_maxPlayers) { } - int getGameId() { return gameId; } - QString getCreator() { return creator; } - QString getDescription() { return description; } - bool getHasPassword() { return hasPassword; } - unsigned char getPlayerCount() { return playerCount; } - unsigned char getMaxPlayers() { return maxPlayers; } + int getGameId() const { return gameId; } + QString getCreator() const { return creator; } + QString getDescription() const { return description; } + bool getHasPassword() const { return hasPassword; } + unsigned char getPlayerCount() const { return playerCount; } + unsigned char getMaxPlayers() const { return maxPlayers; } }; #endif diff --git a/cockatrice/src/serverplayer.h b/cockatrice/src/serverplayer.h index 47d35ebe..99cd8714 100644 --- a/cockatrice/src/serverplayer.h +++ b/cockatrice/src/serverplayer.h @@ -10,8 +10,8 @@ private: public: ServerPlayer(int _PlayerId, const QString &_name) : PlayerId(_PlayerId), name(_name) { } - int getPlayerId() { return PlayerId; } - QString getName() { return name; } + int getPlayerId() const { return PlayerId; } + QString getName() const { return name; } }; #endif diff --git a/cockatrice/src/serverresponse.h b/cockatrice/src/serverresponse.h index e3b446a9..486fffa6 100644 --- a/cockatrice/src/serverresponse.h +++ b/cockatrice/src/serverresponse.h @@ -14,9 +14,9 @@ private: public: ServerResponse(int _msgId, bool _ok, ServerErrorMessage _message) : msgId(_msgId), ok(_ok), message(_message) { } - int getMsgId() { return msgId; } - bool getOk() { return ok; } - ServerErrorMessage getMessage() { return message; } + int getMsgId() const { return msgId; } + bool getOk() const { return ok; } + ServerErrorMessage getMessage() const { return message; } }; #endif