1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
|
/*
* qgo_interface.h
*/
#ifndef QGO_INTERFACE_H
#define QGO_INTERFACE_H
#undef SHOW_INTERNAL_TIME
#undef SHOW_MOVES_DLG
#include "tables.h"
#include "defines.h"
#include "globals.h"
#include "gs_globals.h"
#include "misc.h"
#include "setting.h"
#include <qobject.h>
#include <qstring.h>
#include <qtimer.h>
#include <qptrlist.h>
// from qGo:
#include "qgo.h"
#include "mainwindow.h"
//#include "qgoclient_interface.h"
//-----------
class Game;
//-----------
class GameInfo
{
public:
GameInfo() {};
~GameInfo() {};
// 15 Game 43 I: xxxx (4 223 16) vs yyyy (5 59 13)
// 15 144(B): B12
QString nr;
QString type;
QString wname;
QString wprisoners;
QString wtime;
QString wstones;
QString bname;
QString bprisoners;
QString btime;
QString bstones;
QString mv_col; // T..Time, B..Black, W..White, I..Init
QString mv_nr;
QString mv_pt;
};
//-----------
class qGoBoard : public QObject, public Misc<QString>
{
Q_OBJECT
public:
qGoBoard(qGoIF*, qGo*);
~qGoBoard();
int get_id() const { return id; }
void set_id(int i) { id = i; gd.gameNumber = i; }
GameData get_gameData() { return gd; }
void set_title(const QString&);
bool get_haveTitle() { return haveTitle; }
void set_komi(const QString&);
void set_freegame(bool);
bool get_havegd() { return have_gameData; }
bool get_sentmovescmd() { return sent_movescmd; }
void set_sentmovescmd(bool m) { sent_movescmd = m; }
bool get_adj() { return adjourned; }
QString get_bplayer() { return gd.playerBlack; }
QString get_wplayer() { return gd.playerWhite; }
void set_adj(bool a) { adjourned = a; }
void set_game(Game *g);
void set_Mode(int);
GameMode get_Mode() { return gameMode; }
void set_move(StoneColor, QString, QString);
void send_kibitz(const QString);
MainWindow *get_win() { return win; }
void initGame() { win->getBoard()->initGame(&gd); }
void setGameData() {win->getBoard()->setGameData(&gd); }
void setMode() { win->getBoard()->setMode(gameMode); }
void setTimerInfo(const QString&, const QString&, const QString&, const QString&);
void timerEvent(QTimerEvent*);
QString secToTime(int);
void set_stopTimer();
void set_runTimer();
void set_gamePaused(bool p) { game_paused = p; }
int get_boardsize() { return gd.size; }
int get_mvcount() { return mv_counter; }
void set_myColorIsBlack(bool b);
bool get_myColorIsBlack() { return myColorIsBlack; }
void set_requests(const QString &handicap, const QString &komi, assessType);
void check_requests();
QString get_reqKomi() { return req_komi; }
QString get_currentKomi() { return QString::number(gd.komi); }
void dec_mv_counter() { mv_counter--; }
int get_mv_counter() { return mv_counter; }
bool get_requests_set() { return requests_set; }
qGo* get_qgo() { return qgo; }
void set_gsName(GSName g) { gsName = g; }
void addtime_b(int m);
void addtime_w(int m);
void set_myName(const QString &n) { myName = n; }
void clearObserverList() { win->getListView_observers()->clear(); }
void playComputer(StoneColor);
// teaching features
bool ExtendedTeachingGame;
bool IamTeacher;
bool IamPupil;
bool havePupil;
bool haveControls;
QString ttOpponent;
bool mark_set;
int mark_counter;
GameData gd;
signals:
// to qGoIF
// void signal_closeevent(int);
void signal_sendcommand(const QString&, bool);
void signal_2passes(const QString&, const QString&);
public slots:
// MainWindow
void slot_closeevent();
void slot_sendcomment(const QString&);
// Board
void slot_addStone(enum StoneColor, int, int);
void slot_stoneComputer(enum StoneColor, int, int);
void slot_PassComputer(StoneColor c) ;
void slot_UndoComputer(StoneColor c) ;
void slot_DoneComputer() ;
void slot_doPass();
void slot_doResign();
void slot_doUndo();
void slot_doAdjourn();
void slot_doDone();
void slot_doRefresh();
// normaltools
void slot_addtimePauseW();
void slot_addtimePauseB();
// teachtools
void slot_ttOpponentSelected(const QString&);
void slot_ttControls(bool);
void slot_ttMark(bool);
private:
bool timer_running;
bool game_paused;
bool have_gameData;
bool sent_movescmd;
bool adjourned;
bool myColorIsBlack;
bool haveTitle;
GameMode gameMode;
//GameData gd;
int id;
MainWindow *win;
qGo *qgo;
int mv_counter;
int stated_mv_count ;
bool sound;
int bt_i, wt_i;
QString bt, wt;
QString b_stones, w_stones;
QString req_handicap;
QString req_komi;
assessType req_free;
bool requests_set;
GSName gsName;
QString myName;
int BY_timer;
#ifdef SHOW_INTERNAL_TIME
int chk_b, chk_w;
#endif
};
//-----------
class qGoIF : public QObject
{
Q_OBJECT
public:
qGoIF(QWidget*);
~qGoIF();
// bool set_observe(QString);
void set_initIF();
void set_myName(const QString &n) { myName = n; }
qGo *get_qgo() { return qgo; };
void set_gsName(GSName n) { gsName = n; }
void set_localboard(QString file=0);
void set_localgame();
void openPreferences(int tab=-1);
QWidget *get_parent() { return parent; }
void wrapupMatchGame(qGoBoard *, bool);
signals:
void signal_sendcommand(const QString&, bool);
void signal_addToObservationList(int);
public slots:
// parser/mainwindow
void slot_move(GameInfo*);
void slot_move(Game*);
void slot_computer_game(QNewGameDlg*);
void slot_kibitz(int, const QString&, const QString&);
void slot_title(const QString&);
void slot_komi(const QString&, const QString&, bool);
void slot_freegame(bool);
void slot_matchcreate(const QString&, const QString&);
void slot_removestones(const QString&, const QString&);
void slot_undo(const QString&, const QString&);
void slot_result(const QString&, const QString&, bool, const QString&);
void slot_matchsettings(const QString&, const QString&, const QString&, assessType);
void slot_requestDialog(const QString&, const QString&, const QString&, const QString&);
void slot_timeAdded(int, bool);
//void slot_undoRequest(const QString &);
// qGoBoard
// void slot_closeevent(int) {};
void slot_closeevent();
void slot_sendcommand(const QString&, bool);
void set_observe(const QString&);
protected:
bool parse_move(int src, GameInfo* gi=0, Game* g=0, QString txt=0);
private:
qGo *qgo;
QWidget *parent;
// actual pointer, for speedup reason
qGoBoard *qgobrd;
QString myName;
QList<qGoBoard> *boardlist;
GSName gsName;
int localBoardCounter;
// int lockObserveCmd;
};
#endif
|