- New PlayWordMediator class, to encapsulate the behaviour of the controls
used to play a word
- The Training mode now has input fields to play words directly, without
choosing them in the search results
But we don't need to sort them all the time, and in general we don't even need to keep all the rounds.
This commit greatly improves the search performance by filtering the results in 3 different ways, depending on the context:
- A limit to the number of results can be given (useful for the training mode). The kept results are the best ones, not the first ones found by the search.
- When only the best round is needed (when the AI is playing with level 100, or when preparing the rack for an explosive game), we don't need to keep rounds with a lower score
- When the AI has a level lower than 100, it is still possible to skip many rounds
The search limit in training mode is configurable (defaulting to 100) and can be deactivated.
- Allow displaying letter points on the board with an option (on by default)
- Fixed the tab order on the preferences window
- Improved the behaviour and default size of the preferences window
- Be more explicit if the dictionary name is missing
- Changed the colour of the joker on the board, instead of displaying it in lower case
- Incorrect words are now refused by default
- Changed the way words are input: the case is no longer relevant,
and the coordinates are in a separate control
- Explain the problem when a word is refused
- Updated the French translation
- Embed the program icon into the executable on Windows: the icon is not visible in Windows explorer
- Fixed gettext configuration on Windows. The translations now appear, but the accents still don't display correctly.
- Fixed a few translation issues
- Initialize the random numbers generator, and print the seed value
- Handle properly Qt builds without STL support
- Save the position of the main window
- Got rid of the useless toolbar
- Better size of the preferences dialog
- Hopefully fixed translation issues on Windows
- The Settings class throws an exception when asked for a non-existing setting
- Display the Eliot icon
- Improved printing
- Allow changing the level of computer players
- Generate automatically a default name for players
- Translate Qt's own strings (only works on Linux at the moment)
- Throw an exception if a regular expresison is invalid
- Handle the exception in callers code
Game:
- Fixed a bug in setRackRandom()
Qt interface:
- Display the dictionary name in the status bar
- Implemented printing
- Translation of the interface into French. The menus have temporarily lost their accelerator keys in English.
- regexp search results are now in uppercase, like other results
- the regexp search indicates if there are more results than the maximum
allowed
Qt interface:
- new window with some dictionary tools: check word, word+1 and regexp search
- Added auxiliary windows for the history and the external board
- Gave a title to auxiliary windows and remember their position (more or less) and size
- Auxiliary windows do not survive anymore after the main one
- Preferences are now stored in a sensible place
- Ensure unicity of players names (in the interface only, not the core)
- Update the main window title with the game type
- Display the player name in the history
- The history widget is now able not to align the rack and the corresponding word
- The dictionary path is remembered in the preferences
- Ask for confirmation when loading a dictionary in the middle of a game
- Preview tiles are coloured differently, and joker characters are in lowercase
- New PlayerTabWidget control to simplify the code in MainWindow
- Simplification and uniformization of signal handling when the Game object is changed or updated
- Improved the general layout a little bit (but the resizing behaviour is far from perfect)
- the multiplayer modes are more or less playable
- the training mode is not playable at all
- the current layout is still experimental
- many dialogs and options are missing
- tested on Linux only
There are still hundreds of things to do...