void NativeClientSocket::getMessage(){ while(socket->canReadLine()){ buffer_t msg; socket->readLine(msg, sizeof(msg)); emit message_got(msg); } }
void NativeClientSocket::getMessage() { while (socket->canReadLine()) { QByteArray msg = socket->readLine(); #ifndef QT_NO_DEBUG printf("recv: %s", msg.constData()); #endif emit message_got(msg); } }
void NativeClientSocket::getMessage() { while (socket->canReadLine()) { buffer_t msg; socket->readLine(msg, sizeof(msg)); #ifndef QT_NO_DEBUG printf("recv: %s", msg); #endif emit message_got(msg); } }
void NativeClientSocket::getMessage() { QList<QByteArray> bufferList; while (socket->canReadLine()) { buffer_t msg; socket->readLine(msg, sizeof(msg)); //qDebug() << "RX: " << msg; bufferList << QByteArray(msg); } foreach (const QByteArray &arr, bufferList) emit message_got(arr.constData()); }
Client::Client(QObject *parent, const QString &filename) :QObject(parent), is_discard_action_refusable(true), status(NotActive), alive_count(1), swap_pile(0) { ClientInstance = this; is_game_over = false; callbacks[BP::CheckVersion] = &Client::checkVersion; /*oldcallbacks["roomBegin"] = &Client::roomBegin; oldcallbacks["room"] = &Client::room; oldcallbacks["roomEnd"] = &Client::roomEnd; oldcallbacks["roomCreated"] = &Client::roomCreated; oldcallbacks["roomError"] = &Client::roomError; oldcallbacks["hallEntered"] = &Client::hallEntered;*/ callbacks[BP::Setup] = &Client::setup; callbacks[BP::NetworkDelayTest] = &Client::networkDelayTest; callbacks[BP::AddPlayer] = &Client::addPlayer; callbacks[BP::RemovePlayer] = &Client::removePlayer; callbacks[BP::StartInXSeconds] = &Client::startInXSeconds; callbacks[BP::ArrangeSeats] = &Client::arrangeSeats; callbacks[BP::Warn] = &Client::warn; callbacks[BP::StartGame] = &Client::startGame; callbacks[BP::GameOver] = &Client::gameOver; callbacks[BP::HpChange] = &Client::hpChange; callbacks[BP::KillPlayer] = &Client::killPlayer; callbacks[BP::RevivePlayer] = &Client::revivePlayer; callbacks[BP::AskForCardShow] = &Client::showCard; callbacks[BP::SetMark] = &Client::setMark; callbacks[BP::DoFilter] = &Client::doFilter;//deprecated? callbacks[BP::Log] = &Client::log; callbacks[BP::Speak] = &Client::speak; callbacks[BP::AcquireSkill] = &Client::acquireSkill; callbacks[BP::AttachSkill] = &Client::attachSkill; callbacks[BP::DetachSkill] = &Client::detachSkill; callbacks[BP::MoveFocus] = &Client::moveFocus; callbacks[BP::SetEmotion] = &Client::setEmotion; callbacks[BP::SkillInvoke] = &Client::skillInvoked; callbacks[BP::ShowAllCards] = &Client::askForGongxin; callbacks[BP::AskForGongxin] = &Client::askForGongxin; callbacks[BP::AddHistory] = &Client::addHistory; callbacks[BP::Animate] = &Client::animate; callbacks[BP::JudgeResult] = &Client::judgeResult; callbacks[BP::SetScreenName] = &Client::setScreenName; callbacks[BP::SetFixedDistance] = &Client::setFixedDistance; callbacks[BP::Transfigure] = &Client::transfigure; //callbacks[BP::Jilei] = &Client::jilei; callbacks[BP::CardLock] = &Client::cardLock; callbacks[BP::Pile] = &Client::pile; callbacks[BP::UpdateStateItem] = &Client::updateStateItem; callbacks[BP::PlaySkillEffect] = &Client::playSkillEffect; callbacks[BP::PlayCardEffect] = &Client::playCardEffect; callbacks[BP::PlayAudio] = &Client::playAudio; callbacks[BP::GetCard] = &Client::getCards; callbacks[BP::LoseCard] = &Client::loseCards; callbacks[BP::ClearPile] = &Client::resetPiles; callbacks[BP::SetPileNumber] = &Client::setPileNumber; callbacks[BP::SetStatistics] = &Client::setStatistics; callbacks[BP::SetCardFlag] = &Client::setCardFlag; callbacks[BP::SetPlayerProperty] = &Client::setPlayerProperty; // interactive methods interactions[BP::AskForGeneral] = &Client::askForGeneral; interactions[BP::AskForPlayerChosen] = &Client::askForPlayerChosen; interactions[BP::AskForAssign] = &Client::askForAssign; interactions[BP::AskForDirection] = &Client::askForDirection; interactions[BP::AskForExchange] = &Client::askForExchange; interactions[BP::AskForSingleWine] = &Client::askForSingleWine; interactions[BP::AskForGuanxing] = &Client::askForGuanxing; interactions[BP::AskForGongxin] = &Client::askForGongxin; interactions[BP::AskForYiji] = &Client::askForYiji; interactions[BP::Activate] = &Client::activate; interactions[BP::AskForDiscard] = &Client::askForDiscard; interactions[BP::AskForSuit] = &Client::askForSuit; interactions[BP::AskForKingdom] = &Client::askForKingdom; interactions[BP::AskForCard] = &Client::askForCard; interactions[BP::AskForUseCard] = &Client::askForUseCard; interactions[BP::SkillInvoke] = &Client::askForSkillInvoke; interactions[BP::AskForChoice] = &Client::askForChoice; interactions[BP::AskForNullification] = &Client::askForNullification; interactions[BP::AskForCardShow] = &Client::askForCardShow; interactions[BP::AskForAG] = &Client::askForAG; interactions[BP::AskForPindian] = &Client::askForPindian; interactions[BP::AskForCardChosen] = &Client::askForCardChosen; interactions[BP::AskForOrder] = &Client::askForOrder; interactions[BP::AskForRole3v3] = &Client::askForRole3v3; interactions[BP::AskForSurrender] = &Client::askForSurrender; callbacks[BP::FillAG] = &Client::fillAG; callbacks[BP::TakeAG] = &Client::takeAG; callbacks[BP::ClearAG] = &Client::clearAG; // 3v3 mode & 1v1 mode callbacks[BP::FillGenerals] = &Client::fillGenerals; callbacks[BP::AskForGeneral3v3] = &Client::askForGeneral3v3; callbacks[BP::AskForGeneral1v1] = &Client::askForGeneral3v3; callbacks[BP::TakeGeneral] = &Client::takeGeneral; callbacks[BP::StartArrange] = &Client::startArrange; callbacks[BP::RecoverGeneral] = &Client::recoverGeneral; callbacks[BP::RevealGeneral] = &Client::revealGeneral; m_isUseCard = false; Self = new ClientPlayer(this); Self->setScreenName(Config.UserName); Self->setProperty("avatar", Config.UserAvatar); connect(Self, SIGNAL(phase_changed()), this, SLOT(clearTurnTag())); connect(Self, SIGNAL(role_changed(QString)), this, SLOT(notifyRoleChange(QString))); players << Self; if(!filename.isEmpty()){ socket = NULL; recorder = NULL; replayer = new Replayer(this, filename); connect(replayer, SIGNAL(command_parsed(QString)), this, SLOT(processServerPacket(QString))); }else{ socket = new ClientSocket; socket->setParent(this); socket->listen(); recorder = new Recorder(this); connect(socket, SIGNAL(message_got(QByteArray)), recorder, SLOT(record(QByteArray))); connect(socket, SIGNAL(message_got(QByteArray)), this, SLOT(processServerPacket(QByteArray))); connect(socket, SIGNAL(error_message(QString)), this, SIGNAL(error_message(QString))); socket->connectToHost(); replayer = NULL; } lines_doc = new QTextDocument(this); prompt_doc = new QTextDocument(this); prompt_doc->setTextWidth(350); prompt_doc->setDefaultFont(QFont("SimHei")); }