📄 gamedialog.cpp
字号:
/* * gamedialog.cpp *///#include "setting.h"#include "gamedialog.h"#include "newgame_gui.h"#include "config.h"#include "misc.h"#include "defines.h"#include "komispinbox.h"#include <qlineedit.h>#include <qpushbutton.h>#include <qspinbox.h>#include <qvariant.h>#include <qtooltip.h>#include <qwhatsthis.h>#include <qcheckbox.h>#include <qcombobox.h>#include <qradiobutton.h>GameDialog::GameDialog(QWidget* parent, const char* name, bool modal, WFlags fl) : NewGameDialog(parent, name, modal, fl){ have_suggestdata = false; gsname = GS_UNKNOWN;// komiSpin->setValue(55);// buttonOffer->setFocus(); komi_request = false; is_nmatch = false; // boardSizeSpin->setValue(setting->readIntEntry("DEFAULT_SIZE"));// timeSpin->setValue(setting->readIntEntry("DEFAULT_TIME"));// byoTimeSpin->setValue(setting->readIntEntry("DEFAULT_BY"));// cb_free->setChecked(true);}GameDialog::~GameDialog(){}void GameDialog::slot_stats_opponent(){/* if (playerWhiteEdit->isReadOnly()) { // ok, I am white emit signal_sendcommand("stats " + playerBlackEdit->text(), false); } else { // ok, I am black emit signal_sendcommand("stats " + playerWhiteEdit->text(), false); }*/ emit signal_sendcommand("stats " + playerOpponentEdit->text(), false);}void GameDialog::slot_swapcolors(){qDebug("#### GameDialog::slot_swapcolors()");/* QString save = playerWhiteEdit->text(); playerWhiteEdit->setText(playerBlackEdit->text()); playerBlackEdit->setText(save); save = playerWhiteRkEdit->text(); playerWhiteRkEdit->setText(playerBlackRkEdit->text()); playerBlackRkEdit->setText(save); // swap ReadOnly field if (playerWhiteEdit->isReadOnly()) { playerBlackEdit->setReadOnly(true); playerWhiteEdit->setReadOnly(false); } else { playerBlackEdit->setReadOnly(false); playerWhiteEdit->setReadOnly(true); }*/ if(play_white_button->isChecked()) play_black_button->setChecked(TRUE); else play_white_button->setChecked(TRUE);}// button "suggest"void GameDialog::slot_pbsuggest(){qDebug("#### GameDialog::slot_pbsuggest()"); switch (gsname) { case NNGS: case CWS: // already suggested? if (!have_suggestdata) { // no suggestdata -> send suggest cmd/* if (playerWhiteEdit->isReadOnly()) emit signal_sendcommand("suggest " + playerBlackEdit->text(), false); else emit signal_sendcommand("suggest " + playerWhiteEdit->text(), false);*/ emit signal_sendcommand("suggest " + playerOpponentEdit->text(), false); } break; default: // IGS etc. don't know about suggest command break; } // two cases: suggest command unknown / suggest command doesn't work - you are not rated if (!have_suggestdata) { if (!oppRk) { // cannot calculate without opponent's rank qWarning("*** No opponent rk given!"); return; } // calcualte some suggest values from ranking info int rkw = rkToKey(playerOpponentRkEdit->text(), true).toInt(); int rkb; // don't calc for NR if (oppRk.contains("NR") || myRk.contains("NR")) rkb = rkw; else rkb = rkToKey(myRk,true).toInt();//playerBlackRkEdit->text(), true).toInt(); // white is weaker than black? -> exchange if (rkw < rkb) slot_swapcolors(); // calc handi & komi int diff = abs(rkw - rkb) / 100; if (diff > 9) diff = 9; if (diff == 0) komiSpin->setValue(55); else if (diff == 1) komiSpin->setValue(5); else { komiSpin->setValue(5); handicapSpin->setValue(diff); } }}// from parservoid GameDialog::slot_suggest(const QString &pw, const QString&pb, const QString &handicap, const QString &komi, int size){qDebug("#### GameDialog::slot_suggest()"); pwhite = pw; pblack = pb; switch (size) { case 19: h19 = handicap; k19 = komi; break; case 13: h13 = handicap; k13 = komi; break; case 9: h9 = handicap; k9 = komi; //have_suggestdata = true; break; } // check if names are ok if ((playerOpponentEdit->text() == pblack || pblack == QString(tr("you"))) && (myName == pwhite || pwhite == QString(tr("you")))) { // names are exchanged slot_swapcolors(); } else if (playerOpponentEdit->text() != pwhite && pwhite != QString(tr("you")) || myName != pwhite && pblack != QString(tr("you"))) { // wrong suggest info /*if (playerWhiteEdit->isReadOnly()) emit signal_sendcommand("suggest " + playerBlackEdit->text(), false); else emit signal_sendcommand("suggest " + playerWhiteEdit->text(), false);*/ emit signal_sendcommand("suggest " + playerOpponentEdit->text(), false); } // check if size is ok switch (boardSizeSpin->text().toInt()) { case 19: handicapSpin->setValue(h19.toInt()); komiSpin->setValue(k19.toInt()); break; case 13: handicapSpin->setValue(h13.toInt()); komiSpin->setValue(k13.toInt()); break; case 9: handicapSpin->setValue(h13.toInt()); komiSpin->setValue(k13.toInt()); break; default: break; }/* // check if button pressed -> set values immediatly if (have_suggestdata) { slot_pbsuggest(); //pb_suggest->toggle(); }//*/}void GameDialog::slot_opponentopen(const QString &opp){qDebug("#### GameDialog::slot_opponentopen()"); if (playerOpponentEdit->text() != opp)//(playerWhiteEdit->isReadOnly() && playerBlackEdit->text() != opp || playerBlackEdit->isReadOnly() && playerWhiteEdit->text() != opp) // not for me return; QString me; QString opponent = playerOpponentEdit->text();; // send match command, send tell: /*if (playerWhiteEdit->isReadOnly()) { // ok, I am white opponent = playerBlackEdit->text(); me = playerWhiteEdit->text(); } else { // ok, I am black opponent = playerWhiteEdit->text(); me = playerBlackEdit->text(); } */ // 24 *xxxx*: CLIENT: <qGo 1.9.12> match xxxx wants handicap 0, komi 0.5[, free] // this command is not part of server preferences "use Komi" and "auto negotiation" QString send = "tell " + opponent + " CLIENT: <qGo " + VERSION + "> match " + me + " wants handicap " + handicapSpin->text() + ", komi " + komiSpin->text(); if (ComboBox_free->currentText() == QString(tr("yes"))) send += ", free"; emit signal_sendcommand(send, false);}void GameDialog::slot_offer(bool active){qDebug("#### GameDialog::slot_offer()"); // active serves for more in the future... if (!active) return; // if both names are identical -> teaching game if (playerOpponentEdit->text() == myName) { emit signal_sendcommand("teach " + boardSizeSpin->text(), false); // prepare for future use... buttonOffer->setOn(false); buttonDecline->setDisabled(true); buttonCancel->setEnabled(true); buttonOffer->setText(tr("Offer")); emit accept(); return; } // send match command QString color = " B "; if (play_white_button->isChecked()) color = " W "; else if (play_nigiri_button->isChecked() && is_nmatch) color = " N "; //{ // ok, I am white
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -