Commit graph

1002 commits

Author SHA1 Message Date
Olivier Teulière
7923ed2c2a Remove a useless include 2013-01-19 00:36:07 +01:00
Olivier Teulière
30385abe30 Results: new MasterResults implementation, using the MoveSelector class.
This avoids calling MoveSelector everywhere in the code.
2013-01-19 00:36:07 +01:00
Olivier Teulière
adc60c868f Settings: fix a typo (wrong setting type) 2013-01-19 00:36:07 +01:00
Olivier Teulière
33214c62b2 Rack: add a contains() convenience method 2013-01-17 17:59:33 +01:00
Olivier Teulière
b493b3b365 Rack: rename a method 2013-01-17 17:59:33 +01:00
Olivier Teulière
ac3cc02be4 Rack: rename a member variable 2013-01-17 17:59:33 +01:00
Olivier Teulière
a13f7d2968 Bag: add a contains() convenience method 2013-01-17 17:59:28 +01:00
Olivier Teulière
bfcc7a80c6 Bag: the number of tiles cannot be negative 2013-01-17 17:21:33 +01:00
Olivier Teulière
3caacd9c84 Bag: remove a useless method 2013-01-17 17:19:41 +01:00
Olivier Teulière
6dc05081b0 Bag: rename a member variable 2013-01-17 17:19:41 +01:00
Olivier Teulière
c1c3f3b48b Bag: rename a method 2013-01-17 17:14:38 +01:00
Olivier Teulière
652ee671de Distribute the contribs 2013-01-17 17:08:14 +01:00
Olivier Teulière
25829870e8 Integration of the Win32 installer into the build system 2013-01-17 16:21:27 +01:00
Olivier Teulière
0d9fd8898a New InnoSetup-based installer for Windows, by Joan Montané 2013-01-17 16:20:53 +01:00
Olivier Teulière
664eec36ed New MoveSelector class, to help find the "best" move to play.
The best move has the highest possible score, but it is also the one
leading to the most interesting game. This is a subjective notion, but
some heuristics can help, such as:
 - a move sparing a blank is better than one using it
 - a move with many prefixes and suffixes is better than one without
   extensions
 - a move "opening" the game is better than one blocking it
 - a move leaving a nice rack is better than one leaving "bad" letters

At the moment, only the first heuristic is implemented.
2013-01-16 19:00:01 +01:00
Olivier Teulière
4e533eed27 Fix a small bug in explosive games.
Before this commit, if the top move did not need the blank tile, the
blank tile stayed in the rack. It is now replaced with another (randomly
selected) tile.
2013-01-16 18:04:57 +01:00
Olivier Teulière
83baec368b Topping: give the score penalty directly with the player move.
This commit also adds a setting to disable the elapsed-time penalty.
2013-01-16 17:46:47 +01:00
Olivier Teulière
cdcb5c25b7 TurnData: remove the m_playerId member 2013-01-16 14:40:34 +01:00
Olivier Teulière
7f3f29df31 HistoryWidget: compute the player ID instead of getting it from TurnData 2013-01-16 14:31:44 +01:00
Olivier Teulière
27c9b5015a Tests: remove the useless "Player" column in the game history 2013-01-16 14:27:08 +01:00
Olivier Teulière
34c7219f75 Ncurses: remove the useless "player" column in the history view 2013-01-16 14:06:06 +01:00
Olivier Teulière
1e0de63ef8 Results: add a isEmpty() method, and use it where possible 2013-01-16 11:15:12 +01:00
Olivier Teulière
a881789676 po: detect Boost format strings.
It would be nice to use the --qt option as well, but is is exclusive
with --boost. So we use only --boost, which cannot give false positives
with Qt strings...
2013-01-16 00:21:51 +01:00
Olivier Teulière
ace75af580 Arbitration: make the shortcuts for assignments translatable 2013-01-16 00:21:51 +01:00
Olivier Teulière
ab14c9a949 Arbitration: rename a few methods 2013-01-16 00:21:42 +01:00
Olivier Teulière
9ad9b02d57 Arbitration: always show the context menu entry to assign the selected move.
Even if no move is selected, it can help the user to become aware of the
keyboard shortcuts.
2013-01-15 20:13:47 +01:00
Olivier Teulière
e4338547e5 Arbitration: use a standard shorcut to select all the players 2013-01-15 20:00:03 +01:00
Olivier Teulière
de74b3e861 Remove the KeyEventFilter class 2013-01-15 19:53:28 +01:00
Olivier Teulière
820cd1509c Remove all uses of KeyEventFilter.
Use the standard QShortcut instead (possibly combined with a
QSignalMapper).
2013-01-15 19:51:27 +01:00
Olivier Teulière
89efeffd9b Stats: add support for printing the table, as it is shown on the screen 2013-01-15 18:37:38 +01:00
Olivier Teulière
89b5f757ca Topping: do not assign an empty move to the player immediately.
It is now done only after a timeout, to avoid the need to replace
this empty move when the player finds a top move.
2013-01-15 11:43:30 +01:00
Olivier Teulière
086b597f3e PlayWordMediator: consider the empty rack as valid 2013-01-15 11:43:30 +01:00
Olivier Teulière
8e6500f6dd Stats: hide some information in topping mode 2013-01-14 17:13:49 +01:00
Olivier Teulière
9268767567 Topping: do not show the lineEdit control showing points of the move 2013-01-14 17:13:49 +01:00
Olivier Teulière
cbe7f1e172 Topping: better looking widget, and new field for the total score 2013-01-14 17:13:49 +01:00
Olivier Teulière
ec0cfb47fa Topping: add a preference to set the penalty value in case of timeout 2013-01-14 17:13:48 +01:00
Olivier Teulière
7e9dab2e9b Topping: keep track of the player score 2013-01-14 17:13:48 +01:00
Olivier Teulière
0ea56cc442 Add a "Print preview" menu entry 2013-01-14 17:13:48 +01:00
Olivier Teulière
6f2ee6f9ff PlayWordMediator: improve the handling of words in Intermediate state.
The syntactically invalid words (such as those without matching parens)
are displayed in red, and do not trigger un update of the PlayModel.
As a result, the letters do not disappear from the preview anymore when
the opening parenthesis of a blank tile is typed.
2013-01-14 15:59:31 +01:00
Olivier Teulière
d9ee0633db RackWidget: filter the rack correctly when the played word contains a blank 2013-01-13 22:53:57 +01:00
Olivier Teulière
94b2b520d1 Distribute reports 2013-01-11 19:31:37 +01:00
Olivier Teulière
8cd3157842 Topping: remove the ScoreWidget and add a TimerWidget 2013-01-11 11:06:57 +01:00
Olivier Teulière
b6715c6c05 HintsDialog: display the cost of each hint (optional) 2013-01-11 11:06:57 +01:00
Olivier Teulière
4f817bfa24 TimerModel: add a utility method 2013-01-11 11:06:57 +01:00
Olivier Teulière
ce3da4adbb TimerWidget: new "chrono" mode, triggered with Ctrl+click 2013-01-11 11:06:57 +01:00
Olivier Teulière
2db1732f7a Board: allow one more type of invalid word when previewing a played word 2013-01-11 11:06:56 +01:00
Olivier Teulière
c34bd76918 RackWidget: fix a bug when the rack is filtered (wrong variable used) 2013-01-11 11:06:56 +01:00
Olivier Teulière
02f284f3ae GameSignals: update member variables correctly when the game is destroyed 2013-01-10 21:42:07 +01:00
Olivier Teulière
b7825e1998 RackWidget: restore the rack properly if drag & drop fails 2013-01-09 18:56:25 +01:00
Olivier Teulière
4111afc04c RackWidget: after a drag & drop, notify the game that the rack has changed.
This allows synchronizing all the controls displaying the player rack
(visual and textual ones).
2013-01-09 18:56:25 +01:00