~ubuntu-branches/ubuntu/trusty/qgo/trusty

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