Olivier Teulière
f6ced69c9e
Make sure some class members are initialized (bugs reported by Coverity)
2012-10-11 23:21:32 +02:00
Olivier Teulière
0fa1c79563
Add myself to the authors, and fix some copyright headers
2012-10-11 13:45:24 +02:00
Olivier Teulière
4200e33c17
Change the copyright years for all the files modified in 2012
2012-10-11 13:45:24 +02:00
Olivier Teulière
c5591da9e5
Fix various strings
2012-10-06 22:17:43 +02:00
Olivier Teulière
e7aabdc4a2
Fix compilation warnings
2012-10-06 18:45:46 +02:00
Olivier Teulière
b84d112220
I18n of the load/save game exceptions
2012-10-06 18:18:21 +02:00
Olivier Teulière
e51d2f9a23
Rename TurnCmd into Turn (step 3)
2012-10-06 17:49:36 +02:00
Olivier Teulière
ec571d64e4
Rename TurnCmd into Turn (step 2)
2012-10-06 17:49:36 +02:00
Olivier Teulière
cfa90e6394
Rename TurnCmd into Turn (step 1)
2012-10-06 17:49:35 +02:00
Olivier Teulière
471dcf90e1
Rename Turn into TurnData (step 2)
2012-10-06 17:49:35 +02:00
Olivier Teulière
fa345a9f7b
Rename Turn into TurnData (step 1)
2012-10-06 17:49:35 +02:00
Olivier Teulière
4acc731b17
Save game: write unknown commands as comments, to help debugging
2012-10-06 17:49:35 +02:00
Olivier Teulière
47a827e9d4
Remove useless code
2012-10-06 17:49:35 +02:00
Olivier Teulière
65ed44d66d
Cosmetics
2012-10-06 17:49:35 +02:00
Olivier Teulière
ef5f8e63e9
Do not cache the score of the player.
...
Caching is almost useless here, and makes the code more complex.
2012-10-06 17:49:35 +02:00
Olivier Teulière
40944884e6
Remove Player::getPoints()
2012-10-06 17:49:35 +02:00
Olivier Teulière
c700f39ac7
Stats: display end game points for a free game
2012-10-06 17:49:35 +02:00
Olivier Teulière
b53295c782
Stats: compute the ranking based on the final score, not the intermediate one
2012-10-06 17:49:35 +02:00
Olivier Teulière
553d7f9cf0
Freegame: use PlayerEventCmd instead of PlayerPointsCmd
2012-10-06 17:49:34 +02:00
Olivier Teulière
2ab95b5ed9
Get rid of old CVS files
2012-10-06 01:44:33 +02:00
Olivier Teulière
a800863c1f
Arbitration: do not handle solos automatically.
...
The arbitrator has to specify them manually. Otherwise, we cannot know
when a turn is complete and thus we cannot determine if solos can/should
be applied.
2012-10-05 12:52:42 +02:00
Olivier Teulière
66cfd66681
Improve logging of the turns history
2012-10-05 12:38:55 +02:00
Olivier Teulière
38d7093341
Add an assertion
2012-10-05 10:28:54 +02:00
Olivier Teulière
bcc2aedbff
Improve the detection of finished games for duplicate and arbitration modes
2012-10-05 01:42:46 +02:00
Olivier Teulière
f1123e1229
Fix a very rare bug in rack generation
2012-10-05 01:25:01 +02:00
Olivier Teulière
937138c21d
Split the helperSetRackRandom() method.
...
There is now one method to check whether the rack can be drawn, and
another one (still called helperSetRackRandom()) to do all the work.
2012-10-05 01:24:56 +02:00
Olivier Teulière
58c88a3078
Let the PlayerMoveCmd decide whether it is human independent.
...
It fixes problems when trying to replay turns on a loaded game.
2012-10-05 00:27:47 +02:00
Olivier Teulière
74d4572a0a
Arbitration: fix the "Replay turn" feature for games with only AI players
2012-10-05 00:27:34 +02:00
Olivier Teulière
beb6e9a395
Fix the recursion limit for the first turn.
...
It was never a problem until now because the size of the board is
greater than twice the size of the rack.
2012-08-26 22:18:13 +02:00
Olivier Teulière
cbdf6d010d
Various minor improvements (no functional change)
2012-06-27 21:33:19 +02:00
Olivier Teulière
06aad1b274
Create the configuration directory with all the intermediate directories (like mkdir -p)
2012-06-09 19:19:06 +02:00
Olivier Teulière
6dbfcc5f99
Arbitration: the Random button now takes the remaining letters into account
2012-05-30 20:37:47 +02:00
Olivier Teulière
2b6b85cce3
Arbitration: allow removing penalties
2012-05-20 22:12:42 +02:00
Olivier Teulière
3c29804148
Savegames: save/load properly the warnings, penalties and solos
2012-05-20 21:31:45 +02:00
Olivier Teulière
1ad1ef7425
Arbitration: use the same solo-related settings as in duplicate mode
2012-05-05 19:58:31 +02:00
Olivier Teulière
0095302b88
Use dedicated getters for the Move type: this is simpler to use and more readable
2012-05-05 19:45:44 +02:00
Olivier Teulière
6ba32f4835
New utility methods to retrieve the total number of penalty (or solo) points for a player
2012-05-05 19:45:44 +02:00
Olivier Teulière
572d172640
Arbitration: new option to specify the number of "authorized" warnings. Not used yet.
2012-05-05 19:45:44 +02:00
Olivier Teulière
e6c1a180c8
Arbitration: by convention, use negative values to indicate a penalty
2012-05-05 19:45:44 +02:00
Olivier Teulière
917c94fd5e
Display the total number of warnings of a player in the corresponding history tab title
2012-04-28 15:34:38 +02:00
Olivier Teulière
c4fad05ffd
Arbitration: new option to deactivate the automatic random rack
2012-04-28 15:34:37 +02:00
Olivier Teulière
de5783d51a
Auto-save the current game regularly, to reduce the loss in case of crash
2012-04-28 15:34:37 +02:00
Olivier Teulière
36bfa92761
Arbitration: a few fixes to improve usage of the text interface
2012-04-28 15:34:37 +02:00
Olivier Teulière
afb45d62c4
Preferences: removed the option to link the rack with the 7+1 dictionary tool
2012-04-28 15:34:36 +02:00
Olivier Teulière
1086051e56
Fixed loading of duplicate games
2012-04-16 20:32:57 +02:00
Olivier Teulière
0b3120a792
Duplicate: assign a "no move" pseudo-move to all players when starting a turn
2012-04-11 20:02:18 +02:00
Olivier Teulière
196e02f9ad
Duplicate: get rid of the MarkPlayedCmd class
2012-04-11 20:02:18 +02:00
Olivier Teulière
1db5ccea8b
Arbitration: assign a "no move" pseudo-move to all players when starting a turn
2012-04-11 20:02:18 +02:00
Olivier Teulière
4e61dd85ce
FreeGame: generate "no move" pseudo-moves
...
Now each player has a move at each turn, in all the game modes.
This should help to simplify the code in a few places...
2012-04-11 20:02:15 +02:00
Olivier Teulière
21ee07cc3b
Move::ComputeRackForMove() now returns a PlayedRack instead of a simple Rack
2012-04-10 08:51:12 +02:00
Olivier Teulière
c423da2425
Saved games: increase the XML format version, to indicate incompatibilities
2012-04-08 20:57:46 +02:00
Olivier Teulière
76d761ad8d
Saved games: do not write a playerid attribute for the MasterMove tag
2012-04-08 20:57:46 +02:00
Olivier Teulière
a5f13e3ba7
Saved games: write the dictionary letters as display strings
2012-04-08 20:57:46 +02:00
Olivier Teulière
53adb5d91b
Saved games: do not support the (very) old format anymore
2012-04-08 20:57:46 +02:00
Olivier Teulière
1e57b56f9d
Fixed compilation warnings
2012-04-07 13:29:07 +02:00
Olivier Teulière
5ee10b7c91
Fixed a bug introduced in d32f3fdf
2012-04-07 13:28:04 +02:00
Olivier Teulière
d6a2fc6e4e
PublicGame: more direct access to the game current rack
2012-03-26 07:49:25 +02:00
Olivier Teulière
e017e73cd9
Handle penalties in the core
2012-03-26 07:49:25 +02:00
Olivier Teulière
84e46bef85
Handle warnings and solos in the core
2012-03-26 07:49:25 +02:00
Olivier Teulière
7de3374fae
Code factorization
2012-03-26 07:49:25 +02:00
Olivier Teulière
3d724166b6
Allow inserting and dropping a single command in the history.
2012-03-26 07:49:24 +02:00
Olivier Teulière
c37107ed87
Write more information in a saved game: dictionary info and move points
2012-03-22 08:46:21 +01:00
Olivier Teulière
b1e7381b39
Players can now have a table number
2012-03-19 22:49:58 +01:00
Olivier Teulière
f3b2442cc0
Arbitration: improved the refresh of search results
2012-03-17 23:53:40 +01:00
Olivier Teulière
3a8ac20a0a
Arbitration: allow ending the turn even if some players have no assigned move
2012-03-17 23:53:31 +01:00
Olivier Teulière
bfab57f6ac
Changed the way to re-assign a player move.
...
Re-assigning a move is not limited anymore to the last turn (only to the
current turn, and even that limitation could be removed without too much
work).
2012-03-14 20:40:23 +01:00
Olivier Teulière
435d3a2f42
New methods to replace a command in the current turn (even if it is not the last one)
2012-03-14 20:40:23 +01:00
Olivier Teulière
c9f61d7ac8
Search on the game rack, not on the player one
2012-03-11 16:59:16 +01:00
Olivier Teulière
0fa7bc91c6
Arbitration mode: allow editing the rack manually
2012-03-11 00:24:29 +01:00
Olivier Teulière
25a36ec9cd
Arbitration mode: allow setting the rack randomly
2012-03-11 00:24:21 +01:00
Olivier Teulière
9c82c8f7bc
Reset the master move before setting the racks, for a better behaviour at the end of the game
2012-03-11 00:23:39 +01:00
Olivier Teulière
cf6cec0527
Improved the findMatchingCmd() method
2012-03-10 18:06:41 +01:00
Olivier Teulière
9160e6bc99
New preference to save the search results limit in arbitration mode
2012-03-10 18:06:41 +01:00
Olivier Teulière
05a51101db
New arbitration mode, dedicate to arbitration of duplicate games.
...
It is mostly working, but many things are still missing.
In particular:
- ability to enter (or change) moves for a past turn
- ability to change the rack (manually, or randomly)
- ability to add/remove players during the game
- support for solos, warnings, penalties
- support for table number
- more ergonomic interface
- non regression tests
- ... and probably bugs to fix
2012-03-10 18:06:41 +01:00
Olivier Teulière
f44048f31a
New utility method to find a matching command
2012-03-06 08:56:03 +01:00
Olivier Teulière
d5c53b92d0
New Round::countJokersFromRack() utility method
2012-03-04 22:58:53 +01:00
Olivier Teulière
22fd6484f3
Correctly retrieve the game rack
2012-02-25 23:51:30 +01:00
Olivier Teulière
4077a25fa0
Use the GameMoveCmd command
2012-02-25 23:25:40 +01:00
Olivier Teulière
df806594ae
New GameRackCmd class, not used yet
2012-02-25 23:17:04 +01:00
Olivier Teulière
f1c8bd587b
Really fixed detection of the first turn (commit 43954a9
was wrong)
2012-02-25 23:17:04 +01:00
Olivier Teulière
43954a9fe5
Fixed detection of the first turn
2012-02-25 21:56:41 +01:00
Olivier Teulière
182263ce74
New UndoCmd class, not used yet
2012-02-21 08:22:33 +01:00
Olivier Teulière
b1ed3215d9
Rewrote the navigation system, to make it more powerful and easier to understand.
...
Internally, commands are now stored a bit differently: some commands
which were at the end of a turn (like the players rack in duplicate
mode) are now at the beginning. But from a user point of view, there is
no visible difference, except some details in training mode (and the new
behaviour is arguably better :)).
Only (known) problem: after loading a game saved before this commit,
navigating in the game history may be less nice (in particular, racks
may not be fully restored).
2012-02-21 08:22:33 +01:00
Olivier Teulière
e915e5f2cf
New "auto-executable" flag for commands, not yet used
2012-02-21 08:22:33 +01:00
Olivier Teulière
de2d2777e2
The TurnCmd class does not inherit from Command anymore
2012-02-21 08:22:33 +01:00
Olivier Teulière
59fac223f4
Renamed some methods
2012-02-21 08:22:32 +01:00
Olivier Teulière
038910e5df
Removed a few useless assignations and Tile copies
2012-02-21 08:22:32 +01:00
Olivier Teulière
66eec913c9
Added several assertions
2012-02-21 08:22:32 +01:00
Olivier Teulière
32957abfcc
When playing a word, forbid using a joker to specify a letter on the board (even a joker).
...
This is just a convention, but a reasonable one :)
2012-02-21 08:22:32 +01:00
Olivier Teulière
6e2c665bdf
Simplify the handling of jokers in the Round class.
...
This also fixes a very old (but minor) bug: when a word containing a
joker was played "manually" (i.e. not via a round generated by the
Results class but via the Game::checkPlayedWord() method), subsequent
search results using this joker on the board would display it as a
joker, not as a normal tile.
2012-02-21 08:22:32 +01:00
Olivier Teulière
b855c5f64e
Simplify slightly the Round API
2012-02-21 08:22:32 +01:00
Olivier Teulière
0be2769dfa
New utility methods to get the lowercase (joker) or uppercase (no joker) variant of a tile
2012-02-21 08:22:32 +01:00
Olivier Teulière
0d45fc6227
When showing a preview on the board, do not hijack the normal internal data
2012-02-21 08:22:32 +01:00
Olivier Teulière
0ae77a659e
Cosmetics
2012-02-21 08:22:32 +01:00
Olivier Teulière
1336e3b65d
Board: use the isVacant() method a bit more
2012-02-19 13:07:29 +01:00
Olivier Teulière
16a9a9b1a9
Removed Game::setTestTound() and Game::removeTestRound().
...
They are still available via the PublicGame class for interfaces.
2012-02-19 13:07:29 +01:00
Olivier Teulière
24d601543a
Removed a useless include
2012-02-19 13:07:29 +01:00
Olivier Teulière
bf42c49850
Added loggers to most classes
2012-02-19 13:07:29 +01:00
Olivier Teulière
684880acbe
Moved debug.h to dic/
2012-02-19 13:07:29 +01:00
Olivier Teulière
5d98402891
Changed the prototype of PlayedRack::getRack() (and similar methods)
2012-01-26 21:10:41 +01:00