diff --git a/cockatrice/cockatrice.qrc b/cockatrice/cockatrice.qrc
index a47b45f2..4ae5cf8e 100644
--- a/cockatrice/cockatrice.qrc
+++ b/cockatrice/cockatrice.qrc
@@ -60,6 +60,7 @@
resources/countries/br.svg
resources/countries/by.svg
resources/countries/ca.svg
+ resources/countries/cl.svg
resources/countries/cz.svg
resources/countries/ch.svg
resources/countries/cn.svg
@@ -96,6 +97,7 @@
resources/countries/ua.svg
resources/countries/uk.svg
resources/countries/us.svg
+ resources/countries/ve.svg
resources/countries/za.svg
resources/counters/w.svg
diff --git a/cockatrice/resources/countries/cl.svg b/cockatrice/resources/countries/cl.svg
new file mode 100644
index 00000000..885743eb
--- /dev/null
+++ b/cockatrice/resources/countries/cl.svg
@@ -0,0 +1,35 @@
+
+
\ No newline at end of file
diff --git a/cockatrice/resources/countries/ve.svg b/cockatrice/resources/countries/ve.svg
new file mode 100644
index 00000000..1b58073b
--- /dev/null
+++ b/cockatrice/resources/countries/ve.svg
@@ -0,0 +1,23 @@
+
+
\ No newline at end of file
diff --git a/cockatrice/src/handzone.cpp b/cockatrice/src/handzone.cpp
index 98440a07..2827f41f 100644
--- a/cockatrice/src/handzone.cpp
+++ b/cockatrice/src/handzone.cpp
@@ -39,19 +39,31 @@ void HandZone::addCardImpl(CardItem *card, int x, int /*y*/)
card->update();
}
-void HandZone::handleDropEvent(const QList &dragItems, CardZone *startZone, const QPoint &/*dropPoint*/)
+void HandZone::handleDropEvent(const QList &dragItems, CardZone *startZone, const QPoint & dropPoint)
{
+ QPoint point = dropPoint + scenePos().toPoint();
+ int x = -1;
+ if (settingsCache->getHorizontalHand()) {
+ for (x = 0; x < cards.size(); x++)
+ if (point.x() < ((CardItem *) cards.at(x))->scenePos().x())
+ break;
+ } else {
+ for (x = 0; x < cards.size(); x++)
+ if (point.y() < ((CardItem *) cards.at(x))->scenePos().y())
+ break;
+ }
+
Command_MoveCard cmd;
cmd.set_start_player_id(startZone->getPlayer()->getId());
cmd.set_start_zone(startZone->getName().toStdString());
cmd.set_target_player_id(player->getId());
cmd.set_target_zone(getName().toStdString());
- cmd.set_x(cards.size());
+ cmd.set_x(x);
cmd.set_y(-1);
for (int i = 0; i < dragItems.size(); ++i)
cmd.mutable_cards_to_move()->add_card()->set_card_id(dragItems[i]->getId());
-
+
player->sendGameCommand(cmd);
}
diff --git a/common/server.cpp b/common/server.cpp
index d9bf158c..e273bd40 100644
--- a/common/server.cpp
+++ b/common/server.cpp
@@ -191,7 +191,6 @@ void Server::addClient(Server_ProtocolHandler *client)
{
QWriteLocker locker(&clientsLock);
clients << client;
- connect(client, SIGNAL(logDebugMessage(QString, void *)), this, SIGNAL(logDebugMessage(QString, void *)));
}
void Server::removeClient(Server_ProtocolHandler *client)
diff --git a/common/server.h b/common/server.h
index 4b61b4fe..1d87dc9e 100644
--- a/common/server.h
+++ b/common/server.h
@@ -35,7 +35,6 @@ class Server : public QObject
signals:
void pingClockTimeout();
void sigSendIslMessage(const IslMessage &message, int serverId);
- void logDebugMessage(QString message, void *caller);
void endSession(qint64 sessionId);
private slots:
void broadcastRoomUpdate(const ServerInfo_Room &roomInfo, bool sendToIsl = false);
diff --git a/common/server_protocolhandler.cpp b/common/server_protocolhandler.cpp
index 9cd1d253..c4a9e00a 100644
--- a/common/server_protocolhandler.cpp
+++ b/common/server_protocolhandler.cpp
@@ -127,8 +127,14 @@ Response::ResponseCode Server_ProtocolHandler::processSessionCommandContainer(co
Response::ResponseCode resp = Response::RespInvalidCommand;
const SessionCommand &sc = cont.session_command(i);
const int num = getPbExtension(sc);
- if (num != SessionCommand::PING)
- emit logDebugMessage(QString::fromStdString(sc.ShortDebugString()), this);
+ if (num != SessionCommand::PING) { // don't log ping commands
+ if (num == SessionCommand::LOGIN) { // log login commands, but hide passwords
+ SessionCommand debugSc(sc);
+ debugSc.MutableExtension(Command_Login::ext)->clear_password();
+ logDebugMessage(QString::fromStdString(debugSc.ShortDebugString()));
+ } else
+ logDebugMessage(QString::fromStdString(sc.ShortDebugString()));
+ }
switch ((SessionCommand::SessionCommandType) num) {
case SessionCommand::PING: resp = cmdPing(sc.GetExtension(Command_Ping::ext), rc); break;
case SessionCommand::LOGIN: resp = cmdLogin(sc.GetExtension(Command_Login::ext), rc); break;
@@ -161,7 +167,7 @@ Response::ResponseCode Server_ProtocolHandler::processRoomCommandContainer(const
Response::ResponseCode resp = Response::RespInvalidCommand;
const RoomCommand &sc = cont.room_command(i);
const int num = getPbExtension(sc);
- emit logDebugMessage(QString::fromStdString(sc.ShortDebugString()), this);
+ logDebugMessage(QString::fromStdString(sc.ShortDebugString()));
switch ((RoomCommand::RoomCommandType) num) {
case RoomCommand::LEAVE_ROOM: resp = cmdLeaveRoom(sc.GetExtension(Command_LeaveRoom::ext), room, rc); break;
case RoomCommand::ROOM_SAY: resp = cmdRoomSay(sc.GetExtension(Command_RoomSay::ext), room, rc); break;
@@ -213,7 +219,7 @@ Response::ResponseCode Server_ProtocolHandler::processGameCommandContainer(const
Response::ResponseCode finalResponseCode = Response::RespOk;
for (int i = cont.game_command_size() - 1; i >= 0; --i) {
const GameCommand &sc = cont.game_command(i);
- emit logDebugMessage(QString::fromStdString(sc.ShortDebugString()), this);
+ logDebugMessage(QString("game %1 player %2: ").arg(cont.game_id()).arg(roomIdAndPlayerId.second) + QString::fromStdString(sc.ShortDebugString()));
Response::ResponseCode resp = player->processGameCommand(sc, rc, ges);
@@ -237,7 +243,7 @@ Response::ResponseCode Server_ProtocolHandler::processModeratorCommandContainer(
Response::ResponseCode resp = Response::RespInvalidCommand;
const ModeratorCommand &sc = cont.moderator_command(i);
const int num = getPbExtension(sc);
- emit logDebugMessage(QString::fromStdString(sc.ShortDebugString()), this);
+ logDebugMessage(QString::fromStdString(sc.ShortDebugString()));
resp = processExtendedModeratorCommand(num, sc, rc);
if (resp != Response::RespOk)
@@ -258,7 +264,7 @@ Response::ResponseCode Server_ProtocolHandler::processAdminCommandContainer(cons
Response::ResponseCode resp = Response::RespInvalidCommand;
const AdminCommand &sc = cont.admin_command(i);
const int num = getPbExtension(sc);
- emit logDebugMessage(QString::fromStdString(sc.ShortDebugString()), this);
+ logDebugMessage(QString::fromStdString(sc.ShortDebugString()));
resp = processExtendedAdminCommand(num, sc, rc);
if (resp != Response::RespOk)
diff --git a/common/server_protocolhandler.h b/common/server_protocolhandler.h
index 562f77ad..56165c80 100644
--- a/common/server_protocolhandler.h
+++ b/common/server_protocolhandler.h
@@ -49,6 +49,7 @@ protected:
AuthenticationResult authState;
bool acceptsUserListChanges;
bool acceptsRoomListChanges;
+ virtual void logDebugMessage(const QString &message) { }
private:
QList messageSizeOverTime, messageCountOverTime;
int timeRunning, lastDataReceived;
@@ -79,8 +80,6 @@ private:
virtual Response::ResponseCode processExtendedAdminCommand(int cmdType, const AdminCommand &cmd, ResponseContainer &rc) { return Response::RespFunctionNotAllowed; }
private slots:
void pingClockTimeout();
-signals:
- void logDebugMessage(const QString &message, void *session);
public slots:
void prepareDestroy();
public:
diff --git a/servatrice/src/main.cpp b/servatrice/src/main.cpp
index 8c969a67..c71477fe 100644
--- a/servatrice/src/main.cpp
+++ b/servatrice/src/main.cpp
@@ -163,7 +163,6 @@ int main(int argc, char *argv[])
testHash();
Servatrice *server = new Servatrice(settings);
- QObject::connect(server, SIGNAL(logDebugMessage(QString, void *)), logger, SLOT(logMessage(QString, void *)));
QObject::connect(server, SIGNAL(destroyed()), &app, SLOT(quit()), Qt::QueuedConnection);
int retval = 0;
if (server->initServer()) {
diff --git a/servatrice/src/serversocketinterface.cpp b/servatrice/src/serversocketinterface.cpp
index e223a651..03060eee 100644
--- a/servatrice/src/serversocketinterface.cpp
+++ b/servatrice/src/serversocketinterface.cpp
@@ -197,6 +197,11 @@ void ServerSocketInterface::transmitProtocolItem(const ServerMessage &item)
emit outputBufferChanged();
}
+void ServerSocketInterface::logDebugMessage(const QString &message)
+{
+ logger->logMessage(message, this);
+}
+
Response::ResponseCode ServerSocketInterface::processExtendedSessionCommand(int cmdType, const SessionCommand &cmd, ResponseContainer &rc)
{
switch ((SessionCommand::SessionCommandType) cmdType) {
diff --git a/servatrice/src/serversocketinterface.h b/servatrice/src/serversocketinterface.h
index 643ea412..184f9d76 100644
--- a/servatrice/src/serversocketinterface.h
+++ b/servatrice/src/serversocketinterface.h
@@ -57,6 +57,8 @@ private slots:
void flushOutputBuffer();
signals:
void outputBufferChanged();
+protected:
+ void logDebugMessage(const QString &message);
private:
QMutex outputBufferMutex;
Servatrice *servatrice;