## [0.4.2] - 2019-01-11
* Remove Fog of War
* Python 3.x support
* Joystick and gamepad support
* Implement hardware image cursor
* Add more functionality to FIFE::SoundManager and get rid of the SoundManager extension
* Sound Effects (A Feature to apply a number of sound effects on emitters such as FadeIn/Out. Perhabs also with use of the openAL EFX-extension.)
* remove boost:regexp - replace with std:regexp
* Pychan widget events #705
* New fifechan widgets
* New pychan attributes: ListAttr, ImageAttr
* The most Pychan functions should be ported to Fifechan.
* replaced GLEE with GLEW
* remove build options `rend-camzones`, `rend-grid`, `use-githash`
* version infos incl. git hash are inserted into version.h from CMakeLists, PR #997
* Distinguish filtered mouse events
* python bindings probably should not install cegui/librocket/etc. unconditionally
* cameras must be attached to layers
* Update outdated dependencies analyser & hook it into travis
* Pychan should load it's font definitions from an XML file
* Unchecked dependency for Xcursor
* Copy pychan widgets/container at runtime (gui templates)
* The Console should be optional when using fifechan
### Bug Fixes
* MouseScroll Button Pressing can crash fife
* MacOS ld: warning: -L path '/usr/local/lib/libfifechan.dylib' is not a directory
* Window width settings are not fully respected when using two screens
* Build error with CEGUI
* Investigate possilbe problems with CellGrid
* Render problems with SDL 2.0.5
* cegui widgets not cleared correctly with active map.
* fife soundemitter lets UH hang
* Soundemitter callback if soundclip was played
* Box widgets should contain information about the on-screen positioning (not only relative to parent widget)
* adjustSize() sometimes sets width to invalid values
* Spacers don't expand to the dedicated maximum space
* Some strings are cut short
* Borders are not rendered on edges of widgets that touch their parent container's edge.
* Pychan dropdown menus crash FIFE-based client on win32
## [0.4.1] - 2017-02-07
* Corrected wrong postion handling for events.
* Added AnimationManager, issue #675
* Enhanced XML formats, issue #963
* Added events for mouse wheel left and right, issue #967
* Fixed Location::getLayerCoordinates() on hex grids, issue #970
* Removed special treatment of function keys, issue #976
* Fixed tinyxml issue, was not being able to overwrite existing file, issue #978
* Map more SDL keys to CEGUI keys, issue #980
* Load default settings if settings file has no FIFE module, issue #959
* Update exception handler in ApplicationBase, issue #969
* Remove Icon from manager on source load failure, issue #972
* Ensure that FIFE exception message is printed in Python, issue #974
* Several build fixes and improvements
## [0.4.0] - 2017-01-16
* removed Psyco JIT support (by removing "UsePsyco" and the related code)
* removed "scons" build system
* rename "cegui-0" (v0.8+) to "cegui"
* removed cegui compatibility layer for versions below v0.7.9
* renamed overloaded createTrigger and removeTrigger methods, issue #947 + PR #950
* Got rid of various compiler warnings
* Add getCellsInCircleSegment() to CellCache and getInstancesInCircle(),
getInstancesInCircleSegment() to Layer
* Add MultiPathfinderTest
* Add new instance function, prepareForUpdate()
* Local tinyxml files are now only added to the compile list if either
local-tinyxml is defined for SCons or the system version of tinyxml is not found.
* Add animation & color overlays [t:201], fixes [t:762], [t:764] and [t:763]
* Merge GSOC work done by vdaras.
* Replaces Guichan dependency by Fifechan
* Add support for librocket
* Add support for cegui [t:726]
* Fixed keyboard input of control characters for CEGUI by Niektory [t: 796]
* Make use of Fifechan optional
* Add overlay test
* Added the gl/GLU.h header to the atlas creator [t:740]
* Removing the soundmanagers dep on pychan [t:767]
* Slightly modified frange() to be more robust and fixed the ceil() call, fixes [t:725]
* Convince SWIG that Color.r (g, b, a) should be a python property [t:799]
* Inherit fife.Exception from python's (Base)Exception [t:788]
* Import cleanup in pychan.widgets [t:787]
* Fix password- and textfield not accepting initial data
* Remove cell_pathfinding compatibility layer [t:775]
* Fix typo in fife_settings
* Renamed all --with/--without scons options, fixes [t:797]
* Add travis configuration by jakoch [t:784]
* Modifying the versioning scheme [t:783]
* Darwin config now expects everything to be installed from source
## [0.3.5] - 2013-08-21
* Fixed another LayerCache bug.
* Fixed blocking bug, which has affected multi cell objects.
* Fixed segmentation fault within pathfinder.
* Fixed segmentation fault within Instance::follow.
* Fixed the visible/invisible problem. [t:780]
* Fixed facing location and a related bug. [t:773]
## [0.3.4] - 2013-02-28
* Fixed a couple of compiler errors when SDL renderer is chosen (i.e.
HAVE_OPENGL macro is not defined). [t:693]
* Changed the way instance rotation works. Instead of using a facing location
the instance now use only a rotation value. But the possibility to get and
set facing locations is still available. In case you set a facing location,
internally it is converted to a angle or in case of get, the angle is
converted to a location. [t:647]
* Fixed grid scaling by camera rotation. [t:695]
* Optimized camera update() function. Old caused two matrix updates.
* Changed the angle/rotation functions to use MapCoordinates instead of
* Added a virtual destructor to the IResourceManager interface. [t:709]
* Fixed a problem with the usage of the size_t type. [t:702]
* Addressed some API inconsistencies. Renamed LogManager::isLoggingToPrompt()
to isLogToPrompt() and LogManager::isLoggingToFile() to isLogToFile(). This
shouldn't affect python clients as the appropriate changes have been made
to the python extension. [t:711]
* Addressed more API inconsistencies. Renamed (in serveral places)
setMouseAcceleration() to setMouseAccelerationEnabled() and
getMouseAcceleration() to isMouseAccelerationEnabled(). This shouldn't
affect python clients as the appropriate changes have been made to the
python extensions. [t:711]
* Fixed some problems when zooming at 200% or 300%.. etc etc. Images were not
exactly 2x2 or 3x3. [t:719]
* Added getMapViewPort() and getLayerViewPort() functions to camera class.
These functions return the position and size of the camera in map or layer
coordinates. CellRenderer make use of it to speed up rendering, especially
when many cells exist in the cache. [t:647]
* Added Fog of War support.
* Pathfinder has been completely re-written.
* Added getDesktopHeight() and getDesktopWidth() to DeviceCaps. [t:669]
* Enhanced Instance coloring. The new alpha component is used as interpolation
* Ensure SCons version is 2.0+. [t:735]
* Added the staticLayer feature so that layers can be rendered as one texture.
* Client can now select, per Layer, between three sorting algorithm.
* Fix event groups in pychan; only the last group's callback used to be
* Added the getter and setter functions to the fifelog extension. [t:711]
* Replace 'dct.has_key(k)' with 'k in dct'. [t:631]
* You can now overwrite existing widget types without pychan "trying" to throw
an exception. There is no feedback if you do overwrite an existing widget,
it will silently allow you to do so. fixes[t:748]
* Allow client to set focus to a child widget when using widget.execute().
* Fixed a bug in the slider widget which caused it to ignore the step length.
* Unknown exceptions are now caught by BasicApplication and the engine is
exited gracefully. This prevents an endless output of exceptions from being
printed to the console window. [t:755]
* Added the ability to set the horizontal_scroll_amount and
vertical_scroll_amount via XML for scroll areas. [t:692]
* Modified the default settings dialog box to no longer use drop downs. This
prevents the dropdown segfault from happening. [t:756]
* Fix typo in xml serializer. This was leading to a crash when extra_attrs
were passed. [t:760]
* Added some excludes to the fife.iss file so it doesn't include some files
that it shouldn't when building the windows installer. [t:601]
* Changed the python executable back to python.exe from pythonw.exe in the
windows installer. pythonw.exe crashes with some version of python when you
output something to the console screen. [t:601]
* Added PathfinderTest to fife tests. It demonstrates multilayer movement and
how speed and cost multiplier could be used. [t:647]
* Updated the header file location for fifechan when building with mingw on
* Update to allow FIFE to find fifechan when it is installed in the libpath.
Tested this on archlinux. [t:698]
* Allow for parallel builds. fixes[t:696]
* Removed unused file - freebsd8-config-dist.py. [t:716]
* Updated the COPYING file to be the current copy of the LGPL 2.1 text. It
seemed to contain an older version of LGPL. fixes[t:718]
* Modifying code/comments/file headers that apply to this branch to conform to
the new coding standard. Also applied the correct eol-style svn property for
some of the new files. [t:647]
* Applying patch provided by gscai. This allows for custom command line
parameters to be passed to the windows build batch files. [t:737]
* Applying patch provided by gscai. This allows the use of the CXX environment
variable to change the path to the desired C++ compiler. [t:738]
* Fixed a bug where the shooter demo would crash after a few seconds after
starting a new game. This also prevents the player ship from being lost off
the left side of the screen. [t:747]
* Updated the doxygen configuration file to be current with the latest doxygen
* Added a process on the web host to generate doxygen documentation as well as
epydocs for the python modules.
* Doxygen docs now include the FIFE revision number they were generated from.
* Updated a comment in quadtreerenderer.cpp that was being mistaken by doxygen
for the FIFE namespace docs.
* Added FIFE namespace documentation to version.h
* Fixed a bunch of doxygen warning/error messages (now that we are able to see
* Epydoc formatting fixes for xml loader files. [t:724]
## [0.3.3r3] - 2012-04-17
* Implemented C++ map savers which is now being used by the editor. [t:491]
* Fixed instance Z so it works now as expected. This should only be used for
small optical corrections. (r3810)
* Added layer z offset. [t:366]
* Fixed a problem with instance setLocation(). (r3810)
* Removed sub image loaders as they are not used. (r3811)
* Object is no longer derived from IResource. (r3811)
* SDL Renderer now renders quads as expected. [t:607]
* Changed the Image creation in CoordinateRenderer. The coordinate is now
splitted into three images. So the TextRenderPool can reuse the most images
and must not create one for each coordinate. Additional the images take camera
zoom into account, but you can also disable it. [t:612]
* Added InstanceDeleteListener to InstanceRenderer and RenderNode. [t:602]
* All images created by effects are now owned by ImageManager and freed
if no longer used after 60 seconds. [t:611]
* Added the set method to PointType2D and PointeType3D. [t:615]
* Changed the way Atlases and SubImages?(SharedImages?) are loaded and freed.
SubImages now store a ImagePtr to its Atlas and the name. So a AtlasImage is
only unreferenced if all SubImages are removed. It is also possible to free
all images. Images that are required but were freed, invite self-adjusting.
* Added functions to allow the client to set the mouse position on the screen
and retrieve it as a tuple in python. [t:617]
* Added another version of captureScreen() that takes width and height params
allowing you to resize the resulting image. [t:618]
* Fixed a bug that led to Segmentation Faults, if the BitsPerPixel setting was
different than 32. [t:623]
* Added support for True Type Collection fonts. [t:614]
* Optimized getMatchingInstances(). [t:592]
* TargetRenderer is no longer dependent on map loading. [t:636]
* Small fix in the AtlasLoader to set the filename of any objects read from
the atlas file to the atlas xml file instead of the image file like it was
doing previously. This fixes a problem seen in the map loading/saving where
the imports would save the image file instead of the xml description file in
the map. [t:491]
* Zooming now works as expected with x and y offsets. [t:667]
* We now get more information when gcn::Exception is thrown. [t:665]
* MapLoader now allows for .zip files to be loaded. ZipSource implements a
smarter file search so it can properly load files from a zip archive. [t:491]
* Removed the lasttime_draw reset from TargetRenderer, because this can cause
* Cursor no longer moves to 0,0 on startup. [t:670]
* Removed unneeded command line option -Wl from both release and debug builds
as this was breaking builds on gcc 4.7 and above. [t:691]
* Fixed the file extensions registration for python plugin map loaders. [t:609]
* Setting module is more robust on errors concerning non-string parameters.
* SimpleXMLSerializer now saves XML files with platform specific line engines.
* Child widgets should correctly report if they are hidden or not. [t:628]
* Removing the hack to grab references to the GUIChanManager. Now we just use
the pychan manager to grab what we need to grab from the GUIManager. Added 4
new functions to pychan Manager. getConsole(), getDefaultFont(), createFont(),
and releaseFont(). [t:644]
* Fixed deepApply() to now include hidden children in it's search. also added
the ability to only search for visible widgets. [t:608]
* GUI Icons can now be resized at render time. [t:655]
* Widgets can now be cloned to make widget templating possible. [t:376]
* Users can now specify an additional plugin directory for the editor. [t:598]
* Fixed a couple small editor bugs regarding map loading. [t:603] and [t:604]
* Added a plugin interface to extend the editor with savers. [t:610]
* Toolbars can be docked/undocked again. [t:635], [t:640], and [t:641]
* The toolbox, toolbar, and statusbars statuses are now reflected correctly in
the menu. [t:643]
* Object Editor plugin now displays animations as expected. [t:624]
* Added InstanceHighlighter plugin
* Added docking status saving to ToolBar widget class, added default docking
settings for Toolbox
* Re-arranged init order in MainWindow.initGui() to make dockareas available
* Small change to screenshot icon to give it a bit more space on the left
* Refactored ObjectSelector
** Added auto-alignment depending on docking area (vertical/horizontal)
** Right click can be used to trigger the alignment change manually
** No annoying resizes on object selection
** Speed issues not fully solved, but pin-pointed: resizing ~200 icons is a bit
too much for pychan
* GUI Plugins can now use auto-alignment functionality from the ToolBar class
* Small design fix in LayerTool
* Small fix for MapFileHistory
* Editor now doesn't load the same mapfile twice (gives feedback in the
* Re-enabled saving for ObjectEdit? plugin
* Implemented XMLObjectSaver which allows serialization of a fife.Object
** NOTE: only well-formed xml files are accepted
** NOTE: provides a compat-mode to scan for <object> tree roots, but also uses
new <asset> tree root
* Added namespace sorting to ObjectSelector
* Refactored ObjectEdit
* Removed some unnecessary warning messages from Model. [t:645]
* Removed non-free icons from the atlas editor and added license file to the
atlas editor. [t:637]
* Added a proper distclean build target. [t:622]
* Added getRevision() to allow client to query the revision FIFE was build from.
This only works if svnverion is present in the users PATH. Window users will
always get 0. [t:671]
* Added a check to animpacker.py to convert double points in action names to
underlines. Additional the convert now consumes less RAM, because the
ImageManager free images. [t:677]
## [0.3.3r2] - 2011-11-02
* Added getVersion(), getMajor(), getMinor(), getSubMinor() functions and
exposed them to python. [t:582]
* Added a new math function to compare floats/doubles. It returns true if the
difference is smaller as delta.
* Fixed the getMatchingInstances() function. [t:579]
* Added an bool to getMatchingInstances(). If a client need pixel accuracy
results it should be set to true. Otherwise it should be set to false
because so it skips the pixel compare and is much faster. [t:586]
* Added two more InstanceChangeTypes, ICHANGE_BLOCK and ICHANGE_CELL. [t:574]
* The ActionFrame for animations has been made functional. This means a minor
API change. For details look into the changed demo scripts. [t:573]
* Fixed the broken FIFE::Command type events. Now all event states are
evaluated and not just one. Example from the ticket works now as expected.
* The DELETE macro which is defined in winnt.h is undef'ed on any windows
platform that defines the WIN32 macro. This fixes compilation when using
visual studio. [t:589]
* Added two new mouse settings. The first one is the mouse sensitivity and
the second can enable mouse acceleration. The sensitivity is limited to
-0.99 (the slowest) and 10.0 (the fastest). If you enable mouse acceleration
then the sensitivity is used as the max speed value. You can also change it
on runtime with the EventManager. [t:487]
* Added the getPtr() functions to ImageManager. All loaders now check to see
if an image has been defined before creating it. This was a small bug that
caused the image to be loaded even if the image was defined but not loaded
in the first place. [t:590]
* Fixed a bug in ImageManager::removeUnreferenced(). It would cause a segfault
when executed. This has been fixed.
* Fixed the problem where the animation atlas image becomes invalid after
deleting all objects from model. [t:590]
* Added a setting to allow users to deactivate the usage of the Framebuffer
Object in opengl backends. refs[t:581]
* Added a setting to allow users to deactivate the usage of NPOT Textures in
opengl backends. [t:581]
* Fixed a condition where if a widget is dragged to an area on the screen
where there is no widget the event gets lost. It also prevents the focus
from being dropped. [t:594]
* Fixed a condition where the user drags from the map to a guichan widget and
an event is lost. [t:594]
* Added getRealCellDimensions() function to camera. [t:592]
* Fixed a bug with Image names in TargetRenderer. [t:595]
* Added 1024x600 as a valid resolution. [t:597]
* Fixed a problem where the setting value cache is not updated [t:578]
* Fixed a problem in fife_settings.py when starting the editor because the
editor tried to modify the value of a setting not in the FIFE module.
* Added 'all' to the valid LogModules setting [t:578]
* Pychan widgets can now be shown/hidden even if they are not top level
* Fixed a small bug with basicapplication. It was grabbing a reference to
the gui manager incorrectly.
* Fixed a bug in the layertool GUI. It was using the quit.png icon as its
delete layer image instead of the delete_layer.png icon. [t:583]
* Replacing the editor's icon files with free ones. [t:584]
* fixed a bug in pychan.internal (hide() method didn't handle deletion
correctly, added a guard & docstring to explain why this is bad)
* added new functionality to Plugin base class (read settings from editor's
* added afterDock / afterUndock methods to Panel widget; did some code
cleanup & improvements to meet coding standard
* added documentation to the editor (mostly in docking functionality)
* updated both MapFileHistory? and LayerTool? plugins to use the new Plugin
functionality - their docking status is now saved & loaded again
* added new event 'onOpenMapFile' to the signalmanager which sends the path of
the requested mapfile
* added MapFileHistory? plugin
* records previous loaded mapfiles and loads them on editor startup via
* selecting a mapfile either loads the map or updates outdated entries (e.g.
if a map has been deleted)
* I added a max value of 5 entries, can be adjusted in the plugin file though
* fixed minor issue with moving multiple selected instances
* fixed "move"-mode of editor - it now doesn't try to select / deselect cells
(that's the task of "selection mode")
* fifedit now can handle instances on hex grids again
* deselection of cells is now possible (previous implementation never could
* switched instance selection from pixel-perfect to location (click on a cell
-> you select your instance, even if the cursor didn't scratch the instance
* Fixed the Free Software Foundation address in COPYING as it was outdated.
* Added some more tiles to the rpg tileset in fife_test.
* Added a Show Hide test to the PychanTest module in fife_test.
* Small fix for the base class Test in the fife_test application. The create
function reversed the engine and application parameters from what is
actually passed in by the TestManager. The PychanTest was unaffected because
it had the parameters in the correct order as opposed to reversed in the
* Commented out a whole lot of debug statements to make the debug output in
FIFE useful again. I left them in the code in case anyone still needed them.
* Added more tests to the fife_test testing platform. [t:683]
## [0.3.3] - 2011-10-06
* Many optimizations/improvements to the OpenGL renderer. Depth testing was
modified and now works properly with alpha blending enabled. Alpha testing
is used to discard pixels. [t:556]
* Optimized color overlays. [t:539]
* Customizable alpha threshold value for outlines / outlining [t:569]
* Added support for drawing/modifying images. [t:553]
* Re-implemented the Resouce Pools (ImagePool AnimationPool, etc) as
ImangeManager, SoundClipManager, etc. [t:504]
* Setting module no longer crashes when settings dialog has not been loaded.
* Fixed the problem that the objects of the renderers don't get deallocated
when the camera deconstructor was called. Affected renderers: Instance-,
Cellsection-, Generic- and LightRenderer.
* Added the missing reset() and removeAll() functions to the GenericRender
* Removed the Engine::preInit() function.
* Removed EngineSetting::getPossibleResolutions() and validate() functions
* EngineSettings no longer throws any exceptions. Instead default values as
assigned and a warning message is sent to the logger.
* Some optimizations to LayerCache and Camera
* Removed some unnecessary includes.
* Changed when some exceptions are thrown. [t:511]
* Added setBackgroundColor(), so a client can change the clearing color for
the screen. [t:307]
* Added camera overlay functions. Clients can now add a color, image and
animation overlay to the camera [t:460]
* Made sure that the fife logger is part of the FIFE namespace.
* Modifying all integer definitions to conform to the C99 standard.
* Added the getMinMaxCoordinates() function to the map class. It retrieves
the minimum/maximum coordinates of instances on the map.
* Changed Model::getNumMaps() to Model::getMapCount().
* Changed Map::getNumLayers() to Map::getLayerCount().
* Changed Animation::getNumFrames() to Animation::getFrameCount().
* FifeClass is no longer derived from IReferenceCounted.
* ResourceClass now implements the reference counting routines.
* Singletons are no longer derived from FifeClass.
* Modified the HexGrid? and SquareGrid? clone process to work as expected
(even though it's not really used). This doesn't fix the obvious problems
with CellGrid? and the way grids are created. This will have to be looked
at closer in the future.
* Made the quad tree depth easily changeable (instead of hard coded to 2) .
* SquareGrid? now uses diagonals by default.
* Model now logs to the LM_MODEL log module.
* Small modifications to Exception to make it output to the log correctly.
Now we can read the exception output.
* Changed a few sqrt to match the new math definition.
* Added layers getMinMaxCoordinate() function to python.
* Renaming the only 2 .hpp files to conform to standards.
* Optimized the lightrenderer a bit.
* Fixed a build error on updating project files. This was caused by not
installing the mingw part in the devkit installer.
* Added code to support different versions of boost filesystem. [t:529]
* Fixed some color variables (Uint8, int32_t to uint8_t).
* Added some code to the python build environment to support python 2.4+.
* Fixed a segfault in the view_tests.py unittest.
* Settings now list valid screen modes. [t:494]
* the default image loader now throws exceptions if the image fails to load.
* Fixed a bug in RawData::read where an incorrect calculation was done to
check the validity of a passed in parameter. This caused a problem with
loading asset files when the file did not have an appended new line at the
bottom. Also modified the RawData::getDataInBytes, RawData::readString, and
RawData::read methods so that they do not create a temporary data array and
instead read directly into the output buffer, this should be more efficient.
Added a quick comment to xmlobject.py describing why a raise call is
subverted by an earlier return statement. [t:516]
* Removes an unnecessary call from endFrame().
* Fixed some unittests.
* Added a framerate limiter. [t:525]
* Replaced the Generic- and LightRendererNode with RendererNode.
* Fixed the distance calculation in routepather.cpp.
* Added the OffRenderer. This is the only renderer that does not need a map
or camera. The functions are identical to those of the GenericRenderer,
but it use screen coordinates. This renderer is only intended for cases
where no map is loaded, eg for an intro.
* Changed the swig video_tests.py to use the new renderer.
* Removed the primitives and a few other functions from the python interface.
These are no longer needed.
* Added the swig cursor unit test.
* Added some getter functions to cursor along with some documentation.
* RenderItem now stores an ImagePtr.
* Fixed SharedPtr destructor. [t:561]
* Added the getInstancesIn() function to Layer. This picks the Instances from
* Fixed getMatchingInstances(). The picked instances be checked with the
instances of the layer. To compare the instances, getInstancesIn() is used.
* Unnecessary InstanceActivity? are now detected and deleted. Inactive
Instances are removed from Layer m_active_instances. [t:564]
* Changed from using RawData::getDataInBytes to use RawData::readString in
the animation/atlas/object/map loaders because the readString function
appends a null terminator onto the end of the data contents. Without the
null terminator errors were sometimes seen when trying to load map assets.
* Added some error log printing indicating when map assets fail to load.
* Modified the RawData::read function so that it no longer appends a null
terminator as this was causing the python xml loaders to throw a
ParseError exception. Also fixed the RawData::readString function so that
it now appends the null terminator in the proper place. [t:567]
* Made scons check for the dev libraries of whatever python the user ran
scons with. [t:523]
* Fixed a problem where pychan will throw an exception when trying to print
UTF8 characters to the console. [t:571]
* Fixed and optimized a few functions in location.cpp. [t:563] and [t:568]
* Added option --lib-dir to scons build system to specify a shared library
install location. The shared library generated will now contain an soname
that will be libfife.so.major. Also changed the generated shared library
name to be libfife.so.major.minor.release. Added a version.h file to
engine/core that will contain the current fife major, minor, and subminor
versions and should be updated for each fife release. [t:575]
* Fixed minor bug in getMatchingInstances(). This means that sometimes a wrong
choice was made, because alpha value was not correct.
* Change the way you set FIFE::Cursor to allow cursor to save a reference to
the image or animation. Added a function to reset the cursor drag to
* Added GLee - currently it's compiled with fife as .cpp (scons doesn't get
compiled .c files).
* Initial support for c++ map/object/animation loaders. [t:491]
* Added dependency tinyxml for reading xml files. This is stored in
engine/core/ext/tinyxml directory. The scons scripts will attempt to use
system version of tinyxml if available otherwise the local one will be used.
* Added image Atlas support. [t:542]
* Added a zoom flag to the image/animation functions of the GenericRenderer.
So a client can disable the zoom for images. [t:543]
* Fixed a bug that caused the generated SWIG interface file for fife to not
compile when building with gcc 4.6.1. [t:546]
* Began work on de-coupling FIFE from guichan. [t:549]
* Changed Guichan graphics renderer to utilize vertex array instead of
immediate mode. [t:549]
* Removed Abstract* classes in favor of I* classes. This is to conform to our
coding standards. [t:550]
* After a new layer is added it is now activated for all renderers. This fixes
the problem of no instances being rendered for a newly created layer.
* Added the option to change the alpha value for instance picking.
* Added a setting for backbuffer clearing. So clients can deactivate it if
they have reasons for this.
* Removed the old setImageChunkingSize() setting because its useless.
* Changed the pump function. Model update gets only called if a map is loaded.
* Adding a quick and dirty shared pointer implementation that does not rely
on any 3rd party libraries. This will need to be extensively tested and can
always be swapped out for another implementation including
* Added the unittest for SharedPtr.
* Instances now inherit blocking property from objects [t:514]
* Settings are now validated. [t:528]
* VFS now allows paths outside of launched applications when using a python
* Reworked the lighting module. [t:557]
* The Windows icon is now freed correctly. [t:530]
* Fixed a bug in the shooter demo that caused a crash. [t:495]
* Updating the rio settings-dist.xml file to include the log level filter
* Added animated percentagebar widget to gui animation demo.
* Pychan demo now closes when you press escape or when you close the window.
* Shooter demo now generates a hichscore file if one does not exist.
* Documented the shooter World.reset() function.
* Updating the dependency graphs. [t:554]
* Documented all valid FIFE settings. [t:527]
* Updated basicapplication.py to initialize the logger before settings so
that setting messages will be logged.
* Removed some deprecated functions in pychan.
* Removed the deprecated ClickLabel widget from pychan. [t:552]
* Added changeBlending() to python.
* Editor no longer crashes when there are too many instances on the map when
using the OpenGL renderer. [t:500]
* Added Atlas Creator tool. Currently it's a standalone application written
in Qt. [t:541]
## [0.3.2] - 2010-11-19
* Removed the Camreazone renderer
* Added light support (OpenGL only) by merging the light branch. Speacial
thanks to Helios for all his hard work in this area (#364)
* Added a percentage bar widget (#411)
* Modified some size_t definitions to more appropriate ones (#152)
* Instance rotation changes are reported to the instance change listeners
* Fixed the GenericRenderingNode to no longer cause a segfault (#446)
* Fixed an API inconsistency in SoundEmitter (#461)
* There is no longer a memory leak when adding coloring overlays to instance
* instance.get2dGfxVisual().setVisible(False) now works as expected (#471)
* Removed the last 0(n) loop through instances when rendering (#419)
* Generic renderer now only renders objects on the specified layer (#458)
* Fixed a memory leak when deleting maps. The camera was not being
* Removed the NotFound exceptions in layer.getInstance() and
model.getObjects() to be more consistent with the rest of the API
* Fixed a bug in RenderBackendSDL, the clip area was not properly set
* Renamed the backquad and border commands of the FloatingTextRenderer
* Added the TransparentArea commands to the InstanceRenderer
* Improved InstanceRenderer::addTransparentArea. You can now pass a list
of namespaces to be marked as transparent
* Updated Instance to no longer derive from ResourceClass. It now derives from
* Improved the floatingtextrenderer. Now you can set an alpha value for font,
background quad and border. Split quad and border into own commands
* Added a triangle function to backend and genericrenderer, also added the
functions to set an alpha value for geometric figures
* floatingtextrenderer now can change colors of the font via
setColor(uint r, uint b, uint g)
* Added the colorbuffer patch with a small change due to SDL. Performance
boost between under OpenGL
* Improved the most renderers with setColor() function to allow the user to
modify the color used to render the primitives
* Fixed the genericrenderer. It is now tested whether the images are in the
* Fixed the gridrenderer to only render the grin within the viewport
* Changed the vertex functions in opengl/renderbackendopengl.cpp from
vertex3f() to vertex2f()
* Moved the layer visibility and transparency, from instancerenderer.cpp to
layercache.cpp and improved it (r3395)
* Corrected the h,w calculation for zooming in layercache.cpp (r3369)
* Fixed the bug, that x,y camera position result in an screen offset. (r3369)
* GLImage now only creates one "texture chunk" (r3445, r3452)
* Added nextPow2() math function (r3445)
* Fixed color mask definitions and use them throughout the engine (r3445)
* Moved the GLEnable and GLDisable structures to be globally accessible
* Templatized Rect to extend it's functionality beyond integers (r3447)
* Added some typedefs: Rect, FloatRect, DoubleRect (r3447)
* Removed the unused "trigger" system as it was unused (r3449)
* Applied GreyGhosts patch to fife_settings. Allows the user to load the gui
XML whenever they want. Also returns a reference to the dialog so it can be
worked with outside of fife_settings. (r3451)
* Removed unused files containing the unused GUIEventListener class (r3453)
* Removed old and unused functions: set/getSourceWidget() (r3455)
* Added drawRectangle() and fillRectangle() functions to the renderers (r3456)
* Modified FIFE::FloatingTextRenderer? to use the new functions (r3456)
* Updated some data types in FIFE::FloatingTextRenderer to use integer types
defined in fife_stdint.h (r3456)
* Added FIFE::DeviceCaps and FIFE::ScreenMode to detect valid screen modes
* Added the ability to query the current running screen mode (r3467)
* Added a method to detect the closest supported screen mode (not
complete yet). If no matching screen modes are detected an exception is
* Small change to the way the screen is initialized. The screen mode now
MUST be in the supported screen mode list before the screen will
* Added clearResourceLoaders() to the Pool class. This can be used if
different resourceloaders have to be added at a later point in time
(running editor for example, a plugin might want to have it's own loader
* Added the ability to normalize a 2D and 3D point (r3470)
* You can now rotate a 2D point around the origin or a specific point (r3470)
* Major improvements to fife_math.h and added corresponding Python bindings.
Users now have access to FIFE's internal math functions. These functions
are recommended to be used by all clients if required. Note: this may cause
some problems with certain compilers. I hope this wont have to be reverted.
TODO: remove the static constant globals somehow. (r3471)
* Adopted the new math functions for all subsystems (r3471)
* Added the ability to change screen modes on the fly. This works both in
OpenGL and SDL modes. (#315)
* Added IEngineChangeListener so the client can update the cameras viewport
if the screen mode has been changed. I chose to do it this way because the
engine has no way to know which camera it should update. It will be up to
the client to do it. (#315)
* The cursor surface is now correctly freed when exiting. (r3483)
* Added DeviceCaps::getNearestScreenMode() for the client to request a
supported screen mode. (#315)
### Build System
* Removed libpng from ext (#385)
* Debug is now automatically enabled when you build with profiling enabled
* Re-arranged the ObjectEdit gui to avoid misunderstandings
* Can now place instances (which are visible) on new maps again (r3392)
* Added the SimpleXMLSerializer extension
* Removed the XML portion out of fife_settings in favor of SimpleXMLSerializer
* Made the serializer used in fife_settings "pluggable"
* fife_settings widgets are now updated when the settings are reset to default
* Can now specify the default settings filename instead of using
* Fixed the write_instances function so it saves the stack position variable
of instance visual when saving maps
* Added getVolume() to the SoundManager
* Added debug flag to loaders to enable/disable annoying print spam on
* BasicApplication now initializes pychan (r3388)
* loaders extension can now handle multiple loaders for different filetypes.
A difference between map and object files is now being made! (r3469)
* Modified the sound manager to better take care of sound clips (r3476)
* Added some documentation to the filebrowser module
* Timers are now handled correctly by pychan (#483)
* Can now modify the step length for sliders (#482)
* Built in pychan dialogs now work (r3384)
* Renamed <fife>/demos/pychan_demo/pychan_test.py to pychan_demo.py
* Added a new pychan demo - gui animations
* Added the Shooter demo
* Made the dynamic widget test in the pychan_demo work/look a little better
* Fixed some compiler warning messages
* Added license information for the gimp icon
## [0.3.1] - 2010-03-01
* Updated a lot of the python source files to have the correct headers
* Fixed SWIG wrappers that didn't handle simple output parameters (#340)
* Added color key support for both OpenGL and SDL renderer (#451, #146)
* Changed the EventManager to use deque rather than vectors for storing
* Added the ability to prepend event listeners to the front of the listener
* Updated instance rotation values to be valid in all cases (#361)
* VFS no longer crashes when entering a restricted path (#413)
* Filename case is no longer transformed to be lower case (#418)
* OpenGL renderer now clears the backbuffer correctly (#392)
* Added the ability to render Vertexes (#455)
* Camera names no longer clash when loading multiple maps (#342)
* All layers are no longer activated when calling Camera::resetRenderers()
* Word wrapping in a pychan label now works as expected (#408)
* SWIG wrappers now handle all simple output parameters (#340)
* Added ActionVisual::getActionImageAngles()
* Added Cursor::getX() and Cursor::getY()
### Build System
* FIFE now builds as expected on win32 using the FIFE dev kit
* Win32 batch scripts no longer overwrite the users PATH variable (#429)
* Requied DLLs are now installed as required on win32 (#430)
* CXXFLAGS should now be honored
* Fixed a problem with the dependency checks when using pkg-config on linux
* Added OpenBSD support
* Can now re-load a map (#381)
* Opening more than one map and then closing them no longer causes a crash
* Undo/Redo works properly if you select different layers (#443)
* Docked widgets no longer shrink when you click inside them (#444)
* Object editor can now skip to first and last frames of an animation (#448)
* Object editor sends some messages for the user to the editor status bar
* Cleaned up object editor by adding preMapClosed and preMapShown events
* Object editor now uses getActionImageAngles() to fetch animation angles
* Object editor animation views should now work with all clients
* Object offsets can now be saved to the object.xml file
* Object offsets can now be manipulated by using the mousewheel
* Added undo/redo support for the moving of instances
* File Browser now refreshes correctly (#391)
* Fixed the Linux:Scons tutorial (#422)
* Fixed a couple python import lines (#440)
* Added Widget.requestFocus()
### Rio De Hola
* Fixed the path to the AUTHORS file so the credits are displayed correctly
* Added color tester to pychan demo
* Demos now look for a local copy of FIFE before importing the installed
version of FIFE
## [0.3.0] - 2010-01-20
* Moved to Python 2.6 (#345)
* Upgraded guichan in ext to 0.8.2 (#420)
* Added UTF8 support
* SCons build system has been re-written (#328)
* Support for native mouse cursors
* The background of Label widgets will be painted
* Added adaptive pathfinding (#347)
* Modified CellSelectionRenderer to support multiple cell selection
* Added method Layer::getInstancesAt()
* Added SoundEmitter::setCallback()
* Added a setRolloff() function to the SoundEmitter class.
* Added function to fife_utils: getUserDataDirectory. Returns the proper path
to save setting and data files depending on OS.
* Removed UnitTest++ from ext (#421)
* Changed the way the fife python module is imported
* The serializers will use LogManager instead of printing directly to the
* GuiManager: Proper translation of Guichan key events to FIFE key events
* Proper size calculation for ToggleButton
* Fixed a layer visibility bug where the toggleInstancesVisible and
setInstanceVisible functions were not working correctly. (#335)
* Fixed building FIFE on OS X (#360)
* Fixed setActionRuntime() (#373)
* Fixed unreliable time handling when changing time factors.
* Fixed a bug in the OpenGl renderer where the last chunk of images would not
be displayed when image_height % chunk_size was 0.
* Fixed layer and instance transparency (#378)
* Fixed a lot of small bugs
### Rio de hola
* Made rio_de_hola save its settings to the proper OS folder.
* Added a prefix to cameras in Rio de Hola to avoid name clashes
* Fixed second camera in rio so multiple Camera.setLocation calls are handled
* More documentation has been written
* Rewrote editor:
- Improved GUI:
- Resizable windows
- Toolbars, menubar, statusbar
- Model/View approach to toolbar and menubar buttons
- New signal event system based on the one from django
- Support for opening multiple maps
- Better plugin support
* New plugin: LayerTool
* New plugin: LightEdit
* New plugin: CameraEdit
* Enhanced ObjectSelector
* Enhanced ObjectEdit
* New tool: ObjectPicker. Click on an instance on the map to set the current
object to the instance object
* Ability to select cells and perform actions on them (move, delete, fill,
* New type of scrolling: Press middle mouse button and move the mouse
* New icons based on Bluesphere
* Made the editor save its settings to the proper OS folder.
* Fixed editor bug where the map didn't render after saving (#333)
* Editor can now re-open a map (#381)
* Fixed a problem navigating directory structure with the filebrowser (#377)
* Filebrowser now refreshes when expected (#391)
* Fixed a lot of bugs, and made a lot of new ones ;-)
* New greedy layout engine: Widgets is now able to expand in addition to
* New events: mouseWheelMovedUp and mouseWheelMovedDown
* Added the position_technique attribute
* Added Widget.removeAllChildren() method
* Added a new method Widget.getNamedChildren
* New method: Widget.insertChild()
* New method: Widget.insertChildBefore()
* New property: is_focusable
* New properties: min_size, max_size
* Moved helptext property from C++ to pychan
* New togglebutton widget
* ScrollArea: Size is not static anymore (can shrink and expand)
* Allow objects with a call attribute to be used as event callbacks
* Removed unused TimerListener
* Switched to new content structure (#336)
* Made the distribute and mapEvents methods faster
* Added a small decorator for profiling rarely called functions
* Optimized adaptLayout()
* Added fast path for Widget.findChild(name=name). Roughly 10x faster
* Fixed an input problem when a dropdown box is clicked on (#337)
* Fixed pychan event_map to support callable objects (#374)
* Fixed the pychan demo (#363)
* Fixed a pychan problem where unknown characters were displayed when holding
the shift key (#383)
* Lots of bug fixes
* Fixed some doxygen documentation problems (#343)
* Created python coding standards article (#372)
* Created "Bug Report" template (#409)
* New versioning scheme (x.y.z) instead of (yyyy.r)
* Moved extensions and fife.py to <FIFE>/engine/python/fife
* Moved rio_de_hola and pychan_demo to <FIFE>/demos
* Moved some misc scripts to <FIFE>/tools
* Moved the FIFE editor to <FIFE>/editor
* Added a Win32 installer for FIFE and the win32 SDK
## [2009.0] - 2009-01-07
* Merged input rework branch
* Possibility to hide instances/instance visuals
* Added input and focus events
* Modified clicklabel to provide a mouse listener for hover events
* Use strings as grouping in generic renderer instead of numbers
* Omission of a camera viewport in xml map files now indicate that the camera
should use the full window
* Added removeActionListener to SWIG export
* Some improvements to Scons build scripts
* Prepared basicapplication to use WindowTitle and WindowIcon from clients'
* Logger now ignores non-existing log modules (warns to prompt)
* Pools now have a function called purgeLoadedResources which deletes all
loaded resources that have a reference count of zero.
* Movie: Switched to using FIFE::Image instead of Overlays
* Reworked matrix vector multiplication
* OpenAL-soft patch for OSS support
* Added hasing to pool to improve techdemo loading time
* Lazy loading for animations
* Combined events to reduce lag
* Small optimizations for instance renderer
* Initialize instance visuals properly
* Fixed false positives when searching for instances in a rectangle
* Fixed a horrendous misconception in Pool. The map was sorted by pointer
* Fix for textwrapping
* Fixed bug where instances couldn't change layer
* Fixed a small bug when initializing OpenGL
* Fixed a scons issue where libraries checked for C instead of C++
* Fixed a shutdown order problem
* Fixed segfault on shutdown when profiling was activated (#334)
* Fixed: Editors camera doesn't show map after saving (#333)
* Fixed: FIFE crashes with a segmentation fault (#297)
* Modified pychan to accept RGBA colors
* More documentation for layout system
* adaptLayout now acts a bit smarter
* Fix for scrollarea bug
### Rio de hola
* Improved some graphics and added some new ones
* Profiling support
* Scrolling support
* Added an undo feature to the map-editor
* Object editor plugin
* Some bug fixes
* Updated the map format article to reflect the datasets changes (#323)
* Removed old testmaps
## [2008.1] - 2008-06-01
### Model improvements & simplifications
* Elevations removed (Fallout legacy).
* Support for namespaces:
* New resource infrastructure migrated into whole engine. This enables:
* uniform pooling for all resources that need to be pooled.
* uniform loading for all resources (model stuff, images, sounds...).
* uniform saving for resources which support saving (model stuff).
* Datasets are now stored in a flat list in model instead of dataset
* Changes in model are now bookkeeped. Observer interfaces provided for change
* This enables e.g. reacting only to changes instead of polling on every
* Also critical enabler for triggers.
* Instances now support initial rotation value.
* Objects support default actions.
* Further model cleanup.
### XML format changes
* All resources are now defined with principle 1 file / 1 resource.
* Importing of objects can now be done also based on directories where they are
* Relative paths are now used instead of absolute ones.
* All loading happens now from python (tinyxml dependency removed).
* Improved error reporting.
* Possibility to move instances on map.
* Possibility to rotate instances on map.
* Possibility to zoom the map (OpenGL mode only).
* Painting with currently selected instance (e.g. large ground areas).
* Importing of multiple objects based on given directory.
* Initial map creation wizard (still work in progress).
### Rio de hola
* More assets:
* Graphics, sounds, music...
* Two new maps matching the storyline.
* Rio de hola now conforms to package structure
* Popup menu integration, demonstration of actions (kick, talk).
### Pychan improvements
* Hiding of scrollbars.
* Text wrapping.
* A lot of smaller improvements.
* Pixel perfect instance picking (taking transparency into account).
* Ability to get list of instances from given screen rectangle.
* Distance calculations made easy, exposed to scripts.
* Instance outlining.
* Instance coloring.
* Screenshots are now saved in png format (instead of bmp).
* Stereo sound support in linux (introduced with the help of openal-soft).
### Video / view improvements
* Both renderbackend and separate images can now render graphical primitives
(e.g. lines, dots..).
* Each camera now has separate set of renderers. Allows truly adjusting cameras
* Zooming capability (currently properly supported only by OpenGL backend).
* Support for drag cursor definitions.
* OpenGL graphics chunking size is now definable in settings. Should help e.g.
with large backgrounds.
* GenericRenderer adding customised rendering capabilities for scripts.
### Misc. changes
* Initial package structure defined for FIFE clients.
* Updated guichan to the latest release 0.8.1.
* Usage of unittest++ instead of boost unittests.
* Lots of bug fixes.
### Non-code related changes
* Switch from GPL 2.0 to LGPL 2.1 (or newer).