Qsanguosha 源码分析(四)

第三节写的有点乱
总结一下:
② connect(ui->actionStart_Game, SIGNAL(triggered()), connection_dialog, SLOT(show()));
表示 点击主窗口上的 "游戏->启动游戏" 菜单 会弹出 "连接设置" 对话框
Qsanguosha 源码分析(四)
补全一下 show() 函数
imageQsanguosha 源码分析(四)
显示部件和它的子控件。这个函数相当于setVisible(true)。

③ connect(connection_dialog, SIGNAL(accepted()), this, SLOT(startConnection()));
表示当 "连接设置" 对话框 打开时 执行 MainWindow::startConnection() 函数
函数的内容如下
imageQsanguosha 源码分析(四)
实例化了 Client 类的对象 client
我感觉在它的构造函数里 应该是要改变主窗口的样貌了
变成这样

imageimageQsanguosha 源码分析(四)
于是 在 Client 上按 F2 , 进入 client.h
explicit Client(QObject *parent, const QString &filename = QString());
继续 在 Client 上按 F2 , 进入 client.cpp


1: Client::Client(QObject *parent, const QString &filename)
2: :QObject(parent), refusable(true), status(NotActive), alive_count(1),
3: slash_count(0)
4: {
5: ClientInstance = this;
6:
7: callbacks["checkVersion"] = &Client::checkVersion;
8: callbacks["setup"] = &Client::setup;
9: callbacks["addPlayer"] = &Client::addPlayer;
10: callbacks["removePlayer"] = &Client::removePlayer;
11: callbacks["startInXs"] = &Client::startInXs;
12: callbacks["arrangeSeats"] = &Client::arrangeSeats;
13: callbacks["startGame"] = &Client::startGame;
14: callbacks["hpChange"] = &Client::hpChange;
15: callbacks["clearPile"] = &Client::clearPile;
16: callbacks["setPileNumber"] = &Client::setPileNumber;
17: callbacks["gameOver"] = &Client::gameOver;
18: callbacks["killPlayer"] = &Client::killPlayer;
19: callbacks["revivePlayer"] = &Client::revivePlayer;
20: callbacks["warn"] = &Client::warn;
21: callbacks["showCard"] = &Client::showCard;
22: callbacks["setMark"] = &Client::setMark;
23: callbacks["log"] = &Client::log;
24: callbacks["speak"] = &Client::speak;
25: callbacks["increaseSlashCount"] = &Client::increaseSlashCount;
26: callbacks["attachSkill"] = &Client::attachSkill;
27: callbacks["detachSkill"] = &Client::detachSkill;
28: callbacks["moveFocus"] = &Client::moveFocus;
29: callbacks["setEmotion"] = &Client::setEmotion;
30: callbacks["skillInvoked"] = &Client::skillInvoked;
31: callbacks["acquireSkill"] = &Client::acquireSkill;
32: callbacks["addProhibitSkill"] = &Client::addProhibitSkill;
33: callbacks["animate"] = &Client::animate;
34: callbacks["setPrompt"] = &Client::setPrompt;
35: callbacks["jilei"] = &Client::jilei;
36: callbacks["judgeResult"] = &Client::judgeResult;
37: callbacks["setScreenName"] = &Client::setScreenName;
38: callbacks["setFixedDistance"] = &Client::setFixedDistance;
39: callbacks["pile"] = &Client::pile;
40: callbacks["transfigure"] = &Client::transfigure;
41:
42: callbacks["playSkillEffect"] = &Client::playSkillEffect;
43: callbacks["playCardEffect"] = &Client::playCardEffect;
44: callbacks["playAudio"] = &Client::playAudio;
45:
46: callbacks["moveNCards"] = &Client::moveNCards;
47: callbacks["moveCard"] = &Client::moveCard;
48: callbacks["drawCards"] = &Client::drawCards;
49: callbacks["drawNCards"] = &Client::drawNCards;
50:
51: // interactive methods
52: callbacks["activate"] = &Client::activate;
53: callbacks["doChooseGeneral"] = &Client::doChooseGeneral;
54: callbacks["doChooseGeneral2"] = &Client::doChooseGeneral2;
55: callbacks["doGuanxing"] = &Client::doGuanxing;
56: callbacks["doGongxin"] = &Client::doGongxin;
57: callbacks["askForDiscard"] = &Client::askForDiscard;
58: callbacks["askForExchange"] = &Client::askForExchange;
59: callbacks["askForSuit"] = &Client::askForSuit;
60: callbacks["askForKingdom"] = &Client::askForKingdom;
61: callbacks["askForSinglePeach"] = &Client::askForSinglePeach;
62: callbacks["askForCardChosen"] = &Client::askForCardChosen;
63: callbacks["askForCard"] = &Client::askForCard;
64: callbacks["askForUseCard"] = &Client::askForUseCard;
65: callbacks["askForSkillInvoke"] = &Client::askForSkillInvoke;
66: callbacks["askForChoice"] = &Client::askForChoice;
67: callbacks["askForNullification"] = &Client::askForNullification;
68: callbacks["askForCardShow"] = &Client::askForCardShow;
69: callbacks["askForPindian"] = &Client::askForPindian;
70: callbacks["askForYiji"] = &Client::askForYiji;
71: callbacks["askForPlayerChosen"] = &Client::askForPlayerChosen;
72: callbacks["askForGeneral"] = &Client::askForGeneral;
73:
74: callbacks["fillAG"] = &Client::fillAG;
75: callbacks["askForAG"] = &Client::askForAG;
76: callbacks["takeAG"] = &Client::takeAG;
77: callbacks["clearAG"] = &Client::clearAG;
78:
79: // 3v3 mode & 1v1 mode
80: callbacks["fillGenerals"] = &Client::fillGenerals;
81: callbacks["askForGeneral3v3"] = &Client::askForGeneral3v3;
82: callbacks["askForGeneral1v1"] = &Client::askForGeneral3v3;
83: callbacks["takeGeneral"] = &Client::takeGeneral;
84: callbacks["startArrange"] = &Client::startArrange;
85: callbacks["askForOrder"] = &Client::askForOrder;
86: callbacks["askForDirection"] = &Client::askForDirection;
87: callbacks["recoverGeneral"] = &Client::recoverGeneral;
88:
89: ask_dialog = NULL;
90: use_card = false;
91:
92: Self = new ClientPlayer(this);
93: Self->setScreenName(Config.UserName);
94: Self->setProperty("avatar", Config.UserAvatar);
95: connect(Self, SIGNAL(phase_changed()), this, SLOT(clearTurnTag()));
96: connect(Self, SIGNAL(role_changed(QString)), this, SLOT(notifyRoleChange(QString)));
97:
98: if(!filename.isEmpty())
99: {
100: socket = NULL;
101: recorder = NULL;
102:
103: replayer = new Replayer(this, filename);
104: connect(replayer, SIGNAL(command_parsed(QString)), this, SLOT(processCommand(QString)));
105: }
106: else
107: {
108: socket = new NativeClientSocket;
109: socket->setParent(this);
110:
111: recorder = new Recorder(this);
112:
113: connect(socket, SIGNAL(message_got(char*)), recorder, SLOT(record(char*)));
114: connect(socket, SIGNAL(message_got(char*)), this, SLOT(processReply(char*)));
115: connect(socket, SIGNAL(error_message(QString)), this, SIGNAL(error_message(QString)));
116: connect(socket, SIGNAL(connected()), this, SLOT(signup()));
117: socket->connectToHost();
118:
119: replayer = NULL;
120: }
121:
122: lines_doc = new QTextDocument(this);
123:
124: prompt_doc = new QTextDocument(this);
125: prompt_doc->setTextWidth(350);
126: prompt_doc->setDefaultFont(QFont("SimHei"));
127: }
Tags: 

延伸阅读

最新评论

发表评论