This is a pretty significant release. The Video device is much more robust, supporting dynamic reinitialization in all three operating systems. Widgets can be customized more easily. Gamestates can be paused automatically to pull up a menu, or simply to allow the user to do something else. Compilation is significantly improved in Linux. Additionally, there have been significant bugfixes.
This should probably be 0.4.0.0, but there are "obvious" reorganizations of some blocks of code that should be done. I would rather wait for a cleaner 0.4.0.0.
The following points are important to note. First, the way virtual screen resolutions are specified for Fonts has changed. Values set the previous way will be ignored. Second, Title_State expects a Gamestate to provide instructions. You will get a compilation error if you use Title_State without providing a second Gamestate option.
Changes:
Big Changes
Video revamp
Initialization is more robust
It can be destructed and reinitialized
Widget revamp
Widgets can be modified more easily
Widgets now use Widget_Render_Functions which can be
swapped out and customized fairly easily
Slider and Selector now make use of the mouse wheel
Gamestate revamp
Gamestates have on_push() and on_pop() functions to
compliment their constructors and destructors
Gamestates can now be set pausable
Popup_Menu_State enables easy access to various options
When focus is lost, or when in Popup_Menu_State, the game
will be paused automatically if the current Gamestate is
pausable
When in Widget_States, or when the focus is lost, the mouse
will automatically be displayed, and ungrabbed
Textures database loading of Sprites is more flexible,
supporting inline loading of frames without manually
assigning names to them
SConscript significantly improved
Cleaner scripts duplicated in python and moved to clean/
Render-to-Texture is supported as a new feature
Random number generator class added
Chronometers can be globally paused and unpaused
Sound_Source_Pool can mute/unmute all Sound_Sources under
its control
Bugfixes
g+* and c++0x fixes
Core::delete_file(...) fixed
XML handlers ignore comments correctly again
Widget busy-tracking fixes
Title_State is more robust
Vertex_Buffer fixes
Material optimization fixed
v-sync settings work to some extent in Linux
(still not in MacOS X)
Game.h keeps track of keypresses, enabling more reliable
tracking of modifier keys shortly after game launch
Debug mode is meaner to you if TEST_NASTY_CONDITIONS is
defined (be sure it isn't defined for releases)
Screen saver is now disabled properly in Windows
Pixel offset fix for Direct3D is now fixed
(can be verified by rendering 1 pixel rows and columns)
Code Changes
Console_State::write_to_log(...) optimized
Vertex2f and Vertex3f constructors now protected,
decreasing the likelihood of using them in error
Viewport setters have a sane default (full viewport)
F1 no longer instantiates Configurator_Video
Invalid anisotropy settings are corrected automatically
User-specific configuration file location is now printed
to stderr.txt to ease debugging of rare issues
Text_Boxes and Vertex_Buffers can be globally lost and
reinitialized
Configurator_Video now lists available full screen modes
and displays a confirmation dialog upon changing modes
set_2d(...), set_2d_view(...), and set_viewport(...) can
now enforce an aspect ratio
Documentation collected in docs/
Fonts can have a virtual_screen/width, improving rendering
quality substantially in some cases
Title_State now expects an Instructions_State in addition
to the Play_State