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
Olivier Teulière
0763c0771b
RackWidget: only allow drag & drop if there is no preview on the board
2013-01-09 18:52:11 +01:00
Olivier Teulière
cedb320f91
Topping:: allow shuffling the rack
2013-01-09 18:52:11 +01:00
Olivier Teulière
59b739d292
GameSignals: new signal emitted when the rack of the current player changes.
...
We connect this signal to the RackWidget, which allows a more intuitive
behaviour (in particular, the visual rack is now updated when the
Shuffle button is clicked).
2013-01-09 18:52:11 +01:00
Olivier Teulière
c76c84e059
GameSignals: emit the gameRackChanged() signal even if this is not the last turn
2013-01-09 18:52:11 +01:00
Olivier Teulière
7a6ca367fb
Game: remove a TODO
2013-01-09 18:52:11 +01:00
Olivier Teulière
0cdc2b7ab4
Rack: add operator==()
2013-01-09 18:52:11 +01:00
Olivier Teulière
05150c4e86
TrainingWidget: fix an old bug (the "New rack" button was behaving like "Complement")
2013-01-09 17:15:18 +01:00
Olivier Teulière
b48f8c17d7
MainWindow: fix bugs introduced in 99e7628fed
2013-01-09 17:12:37 +01:00
Olivier Teulière
c285e37354
RackWidget: update the visual rack only when the game rack changes.
...
This avoids losing the state when any unrelated update happens in the
game (for example when clicking on the board to set the coordinates).
2013-01-09 16:39:10 +01:00
Olivier Teulière
f37b3f7d84
GameSignals: simplify slightly
2013-01-09 16:23:33 +01:00
Olivier Teulière
99e7628fed
Move game-related signals out of MainWindow, into the new dedicated class GameSignals
2013-01-09 16:23:33 +01:00