fixed packet length calculation bug, re-enabled deck selection
This commit is contained in:
parent
314f17091d
commit
38e4781624
7 changed files with 30 additions and 11 deletions
|
@ -5,7 +5,6 @@
|
||||||
#include "pending_command.h"
|
#include "pending_command.h"
|
||||||
#include "pb/commands.pb.h"
|
#include "pb/commands.pb.h"
|
||||||
#include <google/protobuf/descriptor.h>
|
#include <google/protobuf/descriptor.h>
|
||||||
#include <QDebug>
|
|
||||||
|
|
||||||
AbstractClient::AbstractClient(QObject *parent)
|
AbstractClient::AbstractClient(QObject *parent)
|
||||||
: QObject(parent), nextCmdId(0), status(StatusDisconnected)
|
: QObject(parent), nextCmdId(0), status(StatusDisconnected)
|
||||||
|
|
|
@ -3,7 +3,6 @@
|
||||||
|
|
||||||
void PendingCommand::processResponse(ProtocolResponse *response)
|
void PendingCommand::processResponse(ProtocolResponse *response)
|
||||||
{
|
{
|
||||||
qDebug("processResponse");
|
|
||||||
emit finished(response);
|
emit finished(response);
|
||||||
emit finished(response->getResponseCode());
|
emit finished(response->getResponseCode());
|
||||||
}
|
}
|
||||||
|
|
|
@ -123,7 +123,7 @@ void DeckViewContainer::loadLocalDeck()
|
||||||
}
|
}
|
||||||
|
|
||||||
Command_DeckSelect cmd;
|
Command_DeckSelect cmd;
|
||||||
cmd.set_deck(""); // XXX
|
cmd.set_deck(deck->writeToString_Native().toStdString());
|
||||||
PendingCommand *pend = static_cast<TabGame *>(parent())->prepareGameCommand(cmd);
|
PendingCommand *pend = static_cast<TabGame *>(parent())->prepareGameCommand(cmd);
|
||||||
connect(pend, SIGNAL(finished(ProtocolResponse *)), this, SLOT(deckSelectFinished(ProtocolResponse *)));
|
connect(pend, SIGNAL(finished(ProtocolResponse *)), this, SLOT(deckSelectFinished(ProtocolResponse *)));
|
||||||
static_cast<TabGame *>(parent())->sendGameCommand(pend, playerId);
|
static_cast<TabGame *>(parent())->sendGameCommand(pend, playerId);
|
||||||
|
|
|
@ -267,6 +267,15 @@ DeckList::DeckList(DeckList *other)
|
||||||
updateDeckHash();
|
updateDeckHash();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DeckList::DeckList(const QString &nativeString)
|
||||||
|
: SerializableItem("cockatrice_deck"), currentZone(0), currentSideboardPlan(0)
|
||||||
|
{
|
||||||
|
root = new InnerDecklistNode;
|
||||||
|
|
||||||
|
QXmlStreamReader xml(nativeString);
|
||||||
|
loadFromXml(&xml);
|
||||||
|
}
|
||||||
|
|
||||||
DeckList::~DeckList()
|
DeckList::~DeckList()
|
||||||
{
|
{
|
||||||
delete root;
|
delete root;
|
||||||
|
@ -360,6 +369,16 @@ void DeckList::loadFromXml(QXmlStreamReader *xml)
|
||||||
updateDeckHash();
|
updateDeckHash();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString DeckList::writeToString_Native()
|
||||||
|
{
|
||||||
|
QString result;
|
||||||
|
QXmlStreamWriter xml(&result);
|
||||||
|
xml.writeStartDocument();
|
||||||
|
write(&xml);
|
||||||
|
xml.writeEndDocument();
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
bool DeckList::loadFromFile_Native(QIODevice *device)
|
bool DeckList::loadFromFile_Native(QIODevice *device)
|
||||||
{
|
{
|
||||||
QXmlStreamReader xml(device);
|
QXmlStreamReader xml(device);
|
||||||
|
|
|
@ -139,6 +139,7 @@ public:
|
||||||
static const QStringList fileNameFilters;
|
static const QStringList fileNameFilters;
|
||||||
DeckList();
|
DeckList();
|
||||||
DeckList(DeckList *other);
|
DeckList(DeckList *other);
|
||||||
|
DeckList(const QString &nativeString);
|
||||||
~DeckList();
|
~DeckList();
|
||||||
QString getName() const { return name; }
|
QString getName() const { return name; }
|
||||||
QString getComments() const { return comments; }
|
QString getComments() const { return comments; }
|
||||||
|
@ -151,7 +152,7 @@ public:
|
||||||
bool readElement(QXmlStreamReader *xml);
|
bool readElement(QXmlStreamReader *xml);
|
||||||
void writeElement(QXmlStreamWriter *xml);
|
void writeElement(QXmlStreamWriter *xml);
|
||||||
void loadFromXml(QXmlStreamReader *xml);
|
void loadFromXml(QXmlStreamReader *xml);
|
||||||
|
QString writeToString_Native();
|
||||||
bool loadFromFile_Native(QIODevice *device);
|
bool loadFromFile_Native(QIODevice *device);
|
||||||
bool saveToFile_Native(QIODevice *device);
|
bool saveToFile_Native(QIODevice *device);
|
||||||
bool loadFromStream_Plain(QTextStream &stream);
|
bool loadFromStream_Plain(QTextStream &stream);
|
||||||
|
|
|
@ -708,17 +708,15 @@ ResponseCode Server_ProtocolHandler::cmdDeckSelect(const Command_DeckSelect &cmd
|
||||||
return RespFunctionNotAllowed;
|
return RespFunctionNotAllowed;
|
||||||
|
|
||||||
DeckList *deck;
|
DeckList *deck;
|
||||||
if (cmd.deck_id() == -1) {
|
if (cmd.has_deck_id()) {
|
||||||
// if (!cmd->getDeck())
|
|
||||||
// return RespInvalidData;
|
|
||||||
// deck = new DeckList(cmd->getDeck());
|
|
||||||
} else {
|
|
||||||
try {
|
try {
|
||||||
deck = getDeckFromDatabase(cmd.deck_id());
|
deck = getDeckFromDatabase(cmd.deck_id());
|
||||||
} catch(ResponseCode r) {
|
} catch(ResponseCode r) {
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
}
|
} else
|
||||||
|
deck = new DeckList(QString::fromStdString(cmd.deck()));
|
||||||
|
|
||||||
player->setDeck(deck);
|
player->setDeck(deck);
|
||||||
|
|
||||||
game->sendGameEvent(new Event_PlayerPropertiesChanged(player->getPlayerId(), player->getProperties()), new Context_DeckSelect(deck->getDeckHash()));
|
game->sendGameEvent(new Event_PlayerPropertiesChanged(player->getPlayerId(), player->getProperties()), new Context_DeckSelect(deck->getDeckHash()));
|
||||||
|
|
|
@ -102,7 +102,10 @@ void ServerSocketInterface::readClient()
|
||||||
do {
|
do {
|
||||||
if (!messageInProgress) {
|
if (!messageInProgress) {
|
||||||
if (inputBuffer.size() >= 4) {
|
if (inputBuffer.size() >= 4) {
|
||||||
messageLength = (int) (((quint32) inputBuffer[0]) << 24) + (((quint32) inputBuffer[1]) << 16) + (((quint32) inputBuffer[2]) << 8) + ((quint32) inputBuffer[3]);
|
messageLength = (((quint32) (unsigned char) inputBuffer[0]) << 24)
|
||||||
|
+ (((quint32) (unsigned char) inputBuffer[1]) << 16)
|
||||||
|
+ (((quint32) (unsigned char) inputBuffer[2]) << 8)
|
||||||
|
+ ((quint32) (unsigned char) inputBuffer[3]);
|
||||||
inputBuffer.remove(0, 4);
|
inputBuffer.remove(0, 4);
|
||||||
messageInProgress = true;
|
messageInProgress = true;
|
||||||
} else
|
} else
|
||||||
|
|
Loading…
Reference in a new issue