diff --git a/AUTHORS b/AUTHORS index 1f8f60670..9316ab4f6 100644 --- a/AUTHORS +++ b/AUTHORS @@ -1,53 +1,54 @@ -anchorite >> anchorite2001@yandex.ru -aldart >> aldart@gmail.com -anxs >> anxs@justmail.de -ashen >> hrabanek@gmail.com -cheesesucker >> cheesesucker@sinnsyk.com -chewie >> chewie@gmx.net -chris >> c.stich@inode.at -donbachi >> donbachi@bachmor.de -hahasound >> amc.kjg@gmail.com -helios2000 >> helios@zero-projekt.net -icelus >> icelus2k5@gmail.com -ifoobar >> ali.fareed@gmail.com -ismarc >> ismarc31@gmail.com -jasoka >> j.jasoka@gmail.com -joeh >> joe.hegarty@gmail.com -joshdan >> joshdan@namba1.com -jwt >> jthickstun@gmail.com -kaelisebonrai >> knux.econa@gmail.com -labrat >> Tom.Hey@mail.com -lynxis >> acouzens@gmx.net -m64 >> mazurek@publicenemy.pl -mortiz >> mortizfife@googlemail.com -mutex >> stefan@boxbox.org -mvbarracuda >> mvbarracuda@web.de -neurogeek >> jesus.riveroa@gmail.com -nihathrael >> thomas.kinnen@gmail.com -nikn >> nihonnik@gmail.com -novade >> ingmar.frank@googlemail.com -ottar >> binforge@gmail.com -phiker >> k.philipp@gmail.com -phoku >> klaus.blindert@web.de -plcstpierre >> plcstpierre@gmail.com -prock >> wprasek@gmail.com -rogerwilco >> rogerwilco@nerdshack.com -shadowdancer >> gtdev@spearhead.de -shales >> geoff.salmon@gmail.com -sja >> sja@mail.org -skybound >> under.northern.sky@googlemail.com -sleek >> dean98@gmail.com -spq >> spq@my-ct.de -stro >> stroantree@gmail.com -tesseract >> josh_root@users.sourceforge.net -thebastion >> s.klytta@gmx.eu -trapdoor >> ko2fan@gmail.com -undeadinsanity >> arron@arronbailiss.co.uk -vja >> vja@inbox.ru -virus >> erik.s.andersson@gmail.com -vovansim >> vovansim@gmail.com -vtchill >> manning.jesse@gmail.com -wulax >> j.sjolund@gmail.com -yonibear >> jonathan_sieber@yahoo.de -zahlman >> karl.knechtel@utoronto.ca -zbyte64 >> zbyte64@gmail.com +anchorite >> anchorite2001@yandex.ru +aldart >> aldart@gmail.com +anxs >> anxs@justmail.de +ashen >> hrabanek@gmail.com +cheesesucker >> cheesesucker@sinnsyk.com +chewie >> chewie@gmx.net +chris >> c.stich@inode.at +donbachi >> donbachi@bachmor.de +hahasound >> amc.kjg@gmail.com +helios2000 >> helios@zero-projekt.net +icelus >> icelus2k5@gmail.com +ifoobar >> ali.fareed@gmail.com +ismarc >> ismarc31@gmail.com +jasoka >> j.jasoka@gmail.com +joeh >> joe.hegarty@gmail.com +joshdan >> joshdan@namba1.com +jwt >> jthickstun@gmail.com +kaelisebonrai >> knux.econa@gmail.com +kozmo >> kozmatic@myopera.com +labrat >> Tom.Hey@mail.com +lynxis >> acouzens@gmx.net +m64 >> mazurek@publicenemy.pl +mortiz >> mortizfife@googlemail.com +mutex >> stefan@boxbox.org +mvbarracuda >> mvbarracuda@web.de +neurogeek >> jesus.riveroa@gmail.com +nihathrael >> thomas.kinnen@gmail.com +nikn >> nihonnik@gmail.com +novade >> ingmar.frank@googlemail.com +ottar >> binforge@gmail.com +phiker >> k.philipp@gmail.com +phoku >> klaus.blindert@web.de +plcstpierre >> plcstpierre@gmail.com +prock >> wprasek@gmail.com +rogerwilco >> rogerwilco@nerdshack.com +shadowdancer >> gtdev@spearhead.de +shales >> geoff.salmon@gmail.com +sja >> sja@mail.org +skybound >> under.northern.sky@googlemail.com +sleek >> dean98@gmail.com +spq >> spq@my-ct.de +stro >> stroantree@gmail.com +tesseract >> josh_root@users.sourceforge.net +thebastion >> s.klytta@gmx.eu +trapdoor >> ko2fan@gmail.com +undeadinsanity >> arron@arronbailiss.co.uk +vja >> vja@inbox.ru +virus >> erik.s.andersson@gmail.com +vovansim >> vovansim@gmail.com +vtchill >> manning.jesse@gmail.com +wulax >> j.sjolund@gmail.com +yonibear >> jonathan_sieber@yahoo.de +zahlman >> karl.knechtel@utoronto.ca +zbyte64 >> zbyte64@gmail.com diff --git a/CHANGES b/CHANGES index 4b78fb72e..d97c3c757 100644 --- a/CHANGES +++ b/CHANGES @@ -1,484 +1,669 @@ - -__/\\\\\\\\\\\\\\\___/\\\\\\\\\\\___/\\\\\\\\\\\\\\\___/\\\\\\\\\\\\\\\_ - _\/\\\///////////___\/////\\\///___\/\\\///////////___\/\\\///////////__ - _\/\\\__________________\/\\\______\/\\\______________\/\\\_____________ - _\/\\\\\\\\\\\__________\/\\\______\/\\\\\\\\\\\______\/\\\\\\\\\\\_____ - _\/\\\///////___________\/\\\______\/\\\///////_______\/\\\///////______ - _\/\\\__________________\/\\\______\/\\\______________\/\\\_____________ - _\/\\\__________________\/\\\______\/\\\______________\/\\\_____________ - _\/\\\_______________/\\\\\\\\\\\__\/\\\______________\/\\\\\\\\\\\\\\\_ - _\///_______________\///////////___\///_______________\///////////////__ - -================================================================================ -== 0.3.2 (November 19th, 2010) == -================================================================================ - -=== Engine === - * 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 - (#475) - * 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 - (#472) - * 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 - deleted - * 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 - FifeClass directly - * 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 - viewport - * 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 (r3445) - * 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 - thrown. (r3467) - * 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 - initialize. (r3467) - * 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) (r3469) - * 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 - (r3292) - -=== Editor === - * Re-arranged the ObjectEdit gui to avoid misunderstandings - * Can now place instances (which are visible) on new maps again (r3392) - -=== Extensions === - * 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 - settings-dist.xml - * 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 maploading - * 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) - -=== Docs === - * Added some documentation to the filebrowser module - -=== Pychan === - * Timers are now handled correctly by pychan (#483) - * Can now modify the step length for sliders (#482) - * Built in pychan dialogs now work (r3384) - -=== Demos === - * Renamed /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 (r3484) - -=== Misc === - * Fixed some compiler warning messages - * Added license information for the gimp icon - - -================================================================================ -== 0.3.1 (March, 2010) == -================================================================================ - -=== Engine === - * 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 - listeners (#454) - * Added the ability to prepend event listeners to the front of the listener - list (#454) - * 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() - (#457) - * 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 - -=== Editor === - * Can now re-load a map (#381) - * Opening more than one map and then closing them no longer causes a crash - (#441) - * 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 - -=== Extensions === - * File Browser now refreshes correctly (#391) - -=== Docs === - * Fixed the Linux:Scons tutorial (#422) - -=== Pychan === - * 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 - -=== Misc === - * 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 (January 20th, 2010) == -================================================================================ - -=== Engine === - * 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 ( see - http://wiki.fifengine.de/Importing_Python_Module ) - * The serializers will use LogManager instead of printing directly to the - console - - * 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 - correctly - * More documentation has been written - -=== Editor === - * Rewrote editor: - - Improved GUI: - - Resizable windows - - Docking - - 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 ;-) - -=== PyChan === - * New greedy layout engine: Widgets is now able to expand in addition to - shrinking - * 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 unkown characters were displayed when holding - the shift key (#383) - * Lots of bug fixes - -=== Documentation === - * Fixed some doxygen documentation problems (#343) - * Created python coding standards article (#372) - * Created "Bug Report" template (#409) - -=== Misc === - * New versioning scheme (x.y.z) instead of (yyyy.r) - * Moved extensions and fife.py to /engine/python/fife - * Moved rio_de_hola and pychan_demo to /demos - * Moved some misc scripts to /tools - * Moved the FIFE editor to /editor - * Added a Win32 installer for FIFE and the win32 SDK - - - -================================================================================ -== 2009.0 (January 7th, 2009) == -================================================================================ - -=== Engine === - * 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' - settings.py - * 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 - -Optimizations: - * Added hasing to pool to improve techdemo loading time - * Lazy loading for animations - * Combined events to reduce lag - * Small optimizations for instance renderer - -Bugs: - * 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 - comparison. - * 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) - -=== Pychan === - * 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 - -=== Editor === - * Scrolling support - * Added an undo feature to the map-editor - * Object editor plugin - * Some bug fixes - -=== Documentation === - * Updated the map format article to reflect the datasets changes (#323) - -=== Misc === - * Removed old testmaps - - - -================================================================================ -== 2008.1 (July, 2008) == -================================================================================ - -=== 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 - hierarchy. - * Changes in model are now bookkeeped. Observer interfaces provided for change - listeners. - * This enables e.g. reacting only to changes instead of polling on every - round. - * 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 - contained. - * Relative paths are now used instead of absolute ones. - -=== Loaders === - * All loading happens now from python (tinyxml dependency removed). - * Improved error reporting. - -=== Editor === - * 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: - http://wiki.fifengine.de/Fife_Package_Specification - * Popup menu integration, demonstration of actions (kick, talk). - -=== Pychan improvements === - * Hiding of scrollbars. - * Text wrapping. - * A lot of smaller improvements. - -=== Functionality === - * 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 - independently. - * 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). + +__/\\\\\\\\\\\\\\\___/\\\\\\\\\\\___/\\\\\\\\\\\\\\\___/\\\\\\\\\\\\\\\_ + _\/\\\///////////___\/////\\\///___\/\\\///////////___\/\\\///////////__ + _\/\\\__________________\/\\\______\/\\\______________\/\\\_____________ + _\/\\\\\\\\\\\__________\/\\\______\/\\\\\\\\\\\______\/\\\\\\\\\\\_____ + _\/\\\///////___________\/\\\______\/\\\///////_______\/\\\///////______ + _\/\\\__________________\/\\\______\/\\\______________\/\\\_____________ + _\/\\\__________________\/\\\______\/\\\______________\/\\\_____________ + _\/\\\_______________/\\\\\\\\\\\__\/\\\______________\/\\\\\\\\\\\\\\\_ + _\///_______________\///////////___\///_______________\///////////////__ + +================================================================================ +== 0.3.3 (October 6th, 2011) == +================================================================================ + +=== Engine === + * 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. + [t:555] + * 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 + and LightRenderer. + * 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+. + [t:465] + * 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 + the InstanceTree. + * Fixed getMatchingInstances(). The picked instances be checked with the + instances of the layer. To compare the instances, getInstancesIn() is used. + [t:562] + * 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. + [t:567] + * 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 + nothing. + * 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. + [t:491] + * 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. + [t:551] + * 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 + boost::shared_ptr. + * 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 + client. [t:544] + * Reworked the lighting module. [t:557] + * The Windows icon is now freed correctly. [t:530] + +=== Demos === + * 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 + setting. + * Added animated percentagebar widget to gui animation demo. + * Pychan demo now closes when you press escape or when you close the window. + [t:531] + * Shooter demo now generates a hichscore file if one does not exist. + +=== Documentation === + * Documented the shooter World.reset() function. + * Updating the dependency graphs. [t:554] + * Documented all valid FIFE settings. [t:527] + +=== Extensions === + * 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. + +=== Tools === + * 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 (November 19th, 2010) == +================================================================================ + +=== Engine === + * 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 + (#475) + * 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 + (#472) + * 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 + deleted + * 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 + FifeClass directly + * 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 + viewport + * 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 (r3445) + * 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 + thrown. (r3467) + * 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 + initialize. (r3467) + * 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) (r3469) + * 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 + (r3292) + +=== Editor === + * Re-arranged the ObjectEdit gui to avoid misunderstandings + * Can now place instances (which are visible) on new maps again (r3392) + +=== Extensions === + * 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 + settings-dist.xml + * 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 maploading + * 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) + +=== Docs === + * Added some documentation to the filebrowser module + +=== Pychan === + * Timers are now handled correctly by pychan (#483) + * Can now modify the step length for sliders (#482) + * Built in pychan dialogs now work (r3384) + +=== Demos === + * Renamed /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 (r3484) + +=== Misc === + * Fixed some compiler warning messages + * Added license information for the gimp icon + + +================================================================================ +== 0.3.1 (March, 2010) == +================================================================================ + +=== Engine === + * 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 + listeners (#454) + * Added the ability to prepend event listeners to the front of the listener + list (#454) + * 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() + (#457) + * 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 + +=== Editor === + * Can now re-load a map (#381) + * Opening more than one map and then closing them no longer causes a crash + (#441) + * 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 + +=== Extensions === + * File Browser now refreshes correctly (#391) + +=== Docs === + * Fixed the Linux:Scons tutorial (#422) + +=== Pychan === + * 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 + +=== Misc === + * 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 (January 20th, 2010) == +================================================================================ + +=== Engine === + * 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 ( see + http://wiki.fifengine.de/Importing_Python_Module ) + * The serializers will use LogManager instead of printing directly to the + console + + * 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 + correctly + * More documentation has been written + +=== Editor === + * Rewrote editor: + - Improved GUI: + - Resizable windows + - Docking + - 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 ;-) + +=== PyChan === + * New greedy layout engine: Widgets is now able to expand in addition to + shrinking + * 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 unkown characters were displayed when holding + the shift key (#383) + * Lots of bug fixes + +=== Documentation === + * Fixed some doxygen documentation problems (#343) + * Created python coding standards article (#372) + * Created "Bug Report" template (#409) + +=== Misc === + * New versioning scheme (x.y.z) instead of (yyyy.r) + * Moved extensions and fife.py to /engine/python/fife + * Moved rio_de_hola and pychan_demo to /demos + * Moved some misc scripts to /tools + * Moved the FIFE editor to /editor + * Added a Win32 installer for FIFE and the win32 SDK + + + +================================================================================ +== 2009.0 (January 7th, 2009) == +================================================================================ + +=== Engine === + * 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' + settings.py + * 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 + +Optimizations: + * Added hasing to pool to improve techdemo loading time + * Lazy loading for animations + * Combined events to reduce lag + * Small optimizations for instance renderer + +Bugs: + * 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 + comparison. + * 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) + +=== Pychan === + * 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 + +=== Editor === + * Scrolling support + * Added an undo feature to the map-editor + * Object editor plugin + * Some bug fixes + +=== Documentation === + * Updated the map format article to reflect the datasets changes (#323) + +=== Misc === + * Removed old testmaps + + + +================================================================================ +== 2008.1 (July, 2008) == +================================================================================ + +=== 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 + hierarchy. + * Changes in model are now bookkeeped. Observer interfaces provided for change + listeners. + * This enables e.g. reacting only to changes instead of polling on every + round. + * 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 + contained. + * Relative paths are now used instead of absolute ones. + +=== Loaders === + * All loading happens now from python (tinyxml dependency removed). + * Improved error reporting. + +=== Editor === + * 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: + http://wiki.fifengine.de/Fife_Package_Specification + * Popup menu integration, demonstration of actions (kick, talk). + +=== Pychan improvements === + * Hiding of scrollbars. + * Text wrapping. + * A lot of smaller improvements. + +=== Functionality === + * 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 + independently. + * 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). diff --git a/COPYING b/COPYING index f66250818..28380ea6c 100644 --- a/COPYING +++ b/COPYING @@ -1,481 +1,481 @@ - GNU LIBRARY GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1991 Free Software Foundation, Inc. - 675 Mass Ave, Cambridge, MA 02139, USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -[This is the first released version of the library GPL. It is - numbered 2 because it goes with version 2 of the ordinary GPL.] - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -Licenses are intended to guarantee your freedom to share and change -free software--to make sure the software is free for all its users. - - This license, the Library General Public License, applies to some -specially designated Free Software Foundation software, and to any -other libraries whose authors decide to use it. You can use it for -your libraries, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if -you distribute copies of the library, or if you modify it. - - For example, if you distribute copies of the library, whether gratis -or for a fee, you must give the recipients all the rights that we gave -you. You must make sure that they, too, receive or can get the source -code. If you link a program with the library, you must provide -complete object files to the recipients so that they can relink them -with the library, after making changes to the library and recompiling -it. And you must show them these terms so they know their rights. - - Our method of protecting your rights has two steps: (1) copyright -the library, and (2) offer you this license which gives you legal -permission to copy, distribute and/or modify the library. - - Also, for each distributor's protection, we want to make certain -that everyone understands that there is no warranty for this free -library. If the library is modified by someone else and passed on, we -want its recipients to know that what they have is not the original -version, so that any problems introduced by others will not reflect on -the original authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that companies distributing free -software will individually obtain patent licenses, thus in effect -transforming the program into proprietary software. To prevent this, -we have made it clear that any patent must be licensed for everyone's -free use or not licensed at all. - - Most GNU software, including some libraries, is covered by the ordinary -GNU General Public License, which was designed for utility programs. This -license, the GNU Library General Public License, applies to certain -designated libraries. This license is quite different from the ordinary -one; be sure to read it in full, and don't assume that anything in it is -the same as in the ordinary license. - - The reason we have a separate public license for some libraries is that -they blur the distinction we usually make between modifying or adding to a -program and simply using it. Linking a program with a library, without -changing the library, is in some sense simply using the library, and is -analogous to running a utility program or application program. However, in -a textual and legal sense, the linked executable is a combined work, a -derivative of the original library, and the ordinary General Public License -treats it as such. - - Because of this blurred distinction, using the ordinary General -Public License for libraries did not effectively promote software -sharing, because most developers did not use the libraries. We -concluded that weaker conditions might promote sharing better. - - However, unrestricted linking of non-free programs would deprive the -users of those programs of all benefit from the free status of the -libraries themselves. This Library General Public License is intended to -permit developers of non-free programs to use free libraries, while -preserving your freedom as a user of such programs to change the free -libraries that are incorporated in them. (We have not seen how to achieve -this as regards changes in header files, but we have achieved it as regards -changes in the actual functions of the Library.) The hope is that this -will lead to faster development of free libraries. - - The precise terms and conditions for copying, distribution and -modification follow. Pay close attention to the difference between a -"work based on the library" and a "work that uses the library". The -former contains code derived from the library, while the latter only -works together with the library. - - Note that it is possible for a library to be covered by the ordinary -General Public License rather than by this special one. - - GNU LIBRARY GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License Agreement applies to any software library which -contains a notice placed by the copyright holder or other authorized -party saying it may be distributed under the terms of this Library -General Public License (also called "this License"). Each licensee is -addressed as "you". - - A "library" means a collection of software functions and/or data -prepared so as to be conveniently linked with application programs -(which use some of those functions and data) to form executables. - - The "Library", below, refers to any such software library or work -which has been distributed under these terms. A "work based on the -Library" means either the Library or any derivative work under -copyright law: that is to say, a work containing the Library or a -portion of it, either verbatim or with modifications and/or translated -straightforwardly into another language. (Hereinafter, translation is -included without limitation in the term "modification".) - - "Source code" for a work means the preferred form of the work for -making modifications to it. For a library, complete source code means -all the source code for all modules it contains, plus any associated -interface definition files, plus the scripts used to control compilation -and installation of the library. - - Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running a program using the Library is not restricted, and output from -such a program is covered only if its contents constitute a work based -on the Library (independent of the use of the Library in a tool for -writing it). Whether that is true depends on what the Library does -and what the program that uses the Library does. - - 1. You may copy and distribute verbatim copies of the Library's -complete source code as you receive it, in any medium, provided that -you conspicuously and appropriately publish on each copy an -appropriate copyright notice and disclaimer of warranty; keep intact -all the notices that refer to this License and to the absence of any -warranty; and distribute a copy of this License along with the -Library. - - You may charge a fee for the physical act of transferring a copy, -and you may at your option offer warranty protection in exchange for a -fee. - - 2. You may modify your copy or copies of the Library or any portion -of it, thus forming a work based on the Library, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) The modified work must itself be a software library. - - b) You must cause the files modified to carry prominent notices - stating that you changed the files and the date of any change. - - c) You must cause the whole of the work to be licensed at no - charge to all third parties under the terms of this License. - - d) If a facility in the modified Library refers to a function or a - table of data to be supplied by an application program that uses - the facility, other than as an argument passed when the facility - is invoked, then you must make a good faith effort to ensure that, - in the event an application does not supply such function or - table, the facility still operates, and performs whatever part of - its purpose remains meaningful. - - (For example, a function in a library to compute square roots has - a purpose that is entirely well-defined independent of the - application. Therefore, Subsection 2d requires that any - application-supplied function or table used by this function must - be optional: if the application does not supply it, the square - root function must still compute square roots.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Library, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Library, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote -it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Library. - -In addition, mere aggregation of another work not based on the Library -with the Library (or with a work based on the Library) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may opt to apply the terms of the ordinary GNU General Public -License instead of this License to a given copy of the Library. To do -this, you must alter all the notices that refer to this License, so -that they refer to the ordinary GNU General Public License, version 2, -instead of to this License. (If a newer version than version 2 of the -ordinary GNU General Public License has appeared, then you can specify -that version instead if you wish.) Do not make any other change in -these notices. - - Once this change is made in a given copy, it is irreversible for -that copy, so the ordinary GNU General Public License applies to all -subsequent copies and derivative works made from that copy. - - This option is useful when you wish to copy part of the code of -the Library into a program that is not a library. - - 4. You may copy and distribute the Library (or a portion or -derivative of it, under Section 2) in object code or executable form -under the terms of Sections 1 and 2 above provided that you accompany -it with the complete corresponding machine-readable source code, which -must be distributed under the terms of Sections 1 and 2 above on a -medium customarily used for software interchange. - - If distribution of object code is made by offering access to copy -from a designated place, then offering equivalent access to copy the -source code from the same place satisfies the requirement to -distribute the source code, even though third parties are not -compelled to copy the source along with the object code. - - 5. A program that contains no derivative of any portion of the -Library, but is designed to work with the Library by being compiled or -linked with it, is called a "work that uses the Library". Such a -work, in isolation, is not a derivative work of the Library, and -therefore falls outside the scope of this License. - - However, linking a "work that uses the Library" with the Library -creates an executable that is a derivative of the Library (because it -contains portions of the Library), rather than a "work that uses the -library". The executable is therefore covered by this License. -Section 6 states terms for distribution of such executables. - - When a "work that uses the Library" uses material from a header file -that is part of the Library, the object code for the work may be a -derivative work of the Library even though the source code is not. -Whether this is true is especially significant if the work can be -linked without the Library, or if the work is itself a library. The -threshold for this to be true is not precisely defined by law. - - If such an object file uses only numerical parameters, data -structure layouts and accessors, and small macros and small inline -functions (ten lines or less in length), then the use of the object -file is unrestricted, regardless of whether it is legally a derivative -work. (Executables containing this object code plus portions of the -Library will still fall under Section 6.) - - Otherwise, if the work is a derivative of the Library, you may -distribute the object code for the work under the terms of Section 6. -Any executables containing that work also fall under Section 6, -whether or not they are linked directly with the Library itself. - - 6. As an exception to the Sections above, you may also compile or -link a "work that uses the Library" with the Library to produce a -work containing portions of the Library, and distribute that work -under terms of your choice, provided that the terms permit -modification of the work for the customer's own use and reverse -engineering for debugging such modifications. - - You must give prominent notice with each copy of the work that the -Library is used in it and that the Library and its use are covered by -this License. You must supply a copy of this License. If the work -during execution displays copyright notices, you must include the -copyright notice for the Library among them, as well as a reference -directing the user to the copy of this License. Also, you must do one -of these things: - - a) Accompany the work with the complete corresponding - machine-readable source code for the Library including whatever - changes were used in the work (which must be distributed under - Sections 1 and 2 above); and, if the work is an executable linked - with the Library, with the complete machine-readable "work that - uses the Library", as object code and/or source code, so that the - user can modify the Library and then relink to produce a modified - executable containing the modified Library. (It is understood - that the user who changes the contents of definitions files in the - Library will not necessarily be able to recompile the application - to use the modified definitions.) - - b) Accompany the work with a written offer, valid for at - least three years, to give the same user the materials - specified in Subsection 6a, above, for a charge no more - than the cost of performing this distribution. - - c) If distribution of the work is made by offering access to copy - from a designated place, offer equivalent access to copy the above - specified materials from the same place. - - d) Verify that the user has already received a copy of these - materials or that you have already sent this user a copy. - - For an executable, the required form of the "work that uses the -Library" must include any data and utility programs needed for -reproducing the executable from it. However, as a special exception, -the source code distributed need not include anything that is normally -distributed (in either source or binary form) with the major -components (compiler, kernel, and so on) of the operating system on -which the executable runs, unless that component itself accompanies -the executable. - - It may happen that this requirement contradicts the license -restrictions of other proprietary libraries that do not normally -accompany the operating system. Such a contradiction means you cannot -use both them and the Library together in an executable that you -distribute. - - 7. You may place library facilities that are a work based on the -Library side-by-side in a single library together with other library -facilities not covered by this License, and distribute such a combined -library, provided that the separate distribution of the work based on -the Library and of the other library facilities is otherwise -permitted, and provided that you do these two things: - - a) Accompany the combined library with a copy of the same work - based on the Library, uncombined with any other library - facilities. This must be distributed under the terms of the - Sections above. - - b) Give prominent notice with the combined library of the fact - that part of it is a work based on the Library, and explaining - where to find the accompanying uncombined form of the same work. - - 8. You may not copy, modify, sublicense, link with, or distribute -the Library except as expressly provided under this License. Any -attempt otherwise to copy, modify, sublicense, link with, or -distribute the Library is void, and will automatically terminate your -rights under this License. However, parties who have received copies, -or rights, from you under this License will not have their licenses -terminated so long as such parties remain in full compliance. - - 9. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Library or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Library (or any work based on the -Library), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Library or works based on it. - - 10. Each time you redistribute the Library (or any work based on the -Library), the recipient automatically receives a license from the -original licensor to copy, distribute, link with or modify the Library -subject to these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 11. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Library at all. For example, if a patent -license would not permit royalty-free redistribution of the Library by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Library. - -If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply, -and the section as a whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 12. If the distribution and/or use of the Library is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library under this License may add -an explicit geographical distribution limitation excluding those countries, -so that distribution is permitted only in or among countries not thus -excluded. In such case, this License incorporates the limitation as if -written in the body of this License. - - 13. The Free Software Foundation may publish revised and/or new -versions of the Library General Public License from time to time. -Such new versions will be similar in spirit to the present version, -but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Library -specifies a version number of this License which applies to it and -"any later version", you have the option of following the terms and -conditions either of that version or of any later version published by -the Free Software Foundation. If the Library does not specify a -license version number, you may choose any version ever published by -the Free Software Foundation. - - 14. If you wish to incorporate parts of the Library into other free -programs whose distribution conditions are incompatible with these, -write to the author to ask for permission. For software which is -copyrighted by the Free Software Foundation, write to the Free -Software Foundation; we sometimes make exceptions for this. Our -decision will be guided by the two goals of preserving the free status -of all derivatives of our free software and of promoting the sharing -and reuse of software generally. - - NO WARRANTY - - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY -KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY -AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU -FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR -CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE -LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A -FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS - - Appendix: How to Apply These Terms to Your New Libraries - - If you develop a new library, and you want it to be of the greatest -possible use to the public, we recommend making it free software that -everyone can redistribute and change. You can do so by permitting -redistribution under these terms (or, alternatively, under the terms of the -ordinary General Public License). - - To apply these terms, attach the following notices to the library. It is -safest to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least the -"copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - -Also add information on how to contact you by electronic and paper mail. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the library, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - library `Frob' (a library for tweaking knobs) written by James Random Hacker. - - , 1 April 1990 - Ty Coon, President of Vice - + GNU LIBRARY GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1991 Free Software Foundation, Inc. + 675 Mass Ave, Cambridge, MA 02139, USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the library GPL. It is + numbered 2 because it goes with version 2 of the ordinary GPL.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Library General Public License, applies to some +specially designated Free Software Foundation software, and to any +other libraries whose authors decide to use it. You can use it for +your libraries, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if +you distribute copies of the library, or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link a program with the library, you must provide +complete object files to the recipients so that they can relink them +with the library, after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + Our method of protecting your rights has two steps: (1) copyright +the library, and (2) offer you this license which gives you legal +permission to copy, distribute and/or modify the library. + + Also, for each distributor's protection, we want to make certain +that everyone understands that there is no warranty for this free +library. If the library is modified by someone else and passed on, we +want its recipients to know that what they have is not the original +version, so that any problems introduced by others will not reflect on +the original authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that companies distributing free +software will individually obtain patent licenses, thus in effect +transforming the program into proprietary software. To prevent this, +we have made it clear that any patent must be licensed for everyone's +free use or not licensed at all. + + Most GNU software, including some libraries, is covered by the ordinary +GNU General Public License, which was designed for utility programs. This +license, the GNU Library General Public License, applies to certain +designated libraries. This license is quite different from the ordinary +one; be sure to read it in full, and don't assume that anything in it is +the same as in the ordinary license. + + The reason we have a separate public license for some libraries is that +they blur the distinction we usually make between modifying or adding to a +program and simply using it. Linking a program with a library, without +changing the library, is in some sense simply using the library, and is +analogous to running a utility program or application program. However, in +a textual and legal sense, the linked executable is a combined work, a +derivative of the original library, and the ordinary General Public License +treats it as such. + + Because of this blurred distinction, using the ordinary General +Public License for libraries did not effectively promote software +sharing, because most developers did not use the libraries. We +concluded that weaker conditions might promote sharing better. + + However, unrestricted linking of non-free programs would deprive the +users of those programs of all benefit from the free status of the +libraries themselves. This Library General Public License is intended to +permit developers of non-free programs to use free libraries, while +preserving your freedom as a user of such programs to change the free +libraries that are incorporated in them. (We have not seen how to achieve +this as regards changes in header files, but we have achieved it as regards +changes in the actual functions of the Library.) The hope is that this +will lead to faster development of free libraries. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, while the latter only +works together with the library. + + Note that it is possible for a library to be covered by the ordinary +General Public License rather than by this special one. + + GNU LIBRARY GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library which +contains a notice placed by the copyright holder or other authorized +party saying it may be distributed under the terms of this Library +General Public License (also called "this License"). Each licensee is +addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also compile or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + c) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + d) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the source code distributed need not include anything that is normally +distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Library General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + Appendix: How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this library; if not, write to the Free + Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + That's all there is to it! \ No newline at end of file diff --git a/INSTALL b/INSTALL index 7e225b329..8ba3069c9 100644 --- a/INSTALL +++ b/INSTALL @@ -1,75 +1,88 @@ - -__/\\\\\\\\\\\\\\\___/\\\\\\\\\\\___/\\\\\\\\\\\\\\\___/\\\\\\\\\\\\\\\_ - _\/\\\///////////___\/////\\\///___\/\\\///////////___\/\\\///////////__ - _\/\\\__________________\/\\\______\/\\\______________\/\\\_____________ - _\/\\\\\\\\\\\__________\/\\\______\/\\\\\\\\\\\______\/\\\\\\\\\\\_____ - _\/\\\///////___________\/\\\______\/\\\///////_______\/\\\///////______ - _\/\\\__________________\/\\\______\/\\\______________\/\\\_____________ - _\/\\\__________________\/\\\______\/\\\______________\/\\\_____________ - _\/\\\_______________/\\\\\\\\\\\__\/\\\______________\/\\\\\\\\\\\\\\\_ - _\///_______________\///////////___\///_______________\///////////////__ - -== Building, Installing and Running FIFE == - -=== Notes === -We are finally able to provide install targets for most platforms. There may be a few minor issues left over to work out but for the most part the install targets work as advertized. - - -=== Dependencies === -A list of all dependencies (including accurate version numbers) that you'll need to obtain to build FIFE on your platform can be found at the project wiki: - * http://wiki.fifengine.de/index.php?title=Build_dependencies - - -=== SCons Build System Notes === -FIFE utilizes the SCons (http://www.scons.org) build system. Here is a quick list of scons commands that can be important for building FIFE on your platform: - * 'scons -h' will list additional compile options. - * 'scons -c' deletes any compiled objects (scons equivalent of 'make clean'). - * 'scons' will build FIFE (default target is fife-python). - -Valid targets include: - * ext : builds the external dependencies (only REQUIRED in Linux) - * tests : builds unittests (needed for test_fife.py) - * fife-shared : builds a shared library (DLL on Windows) - * fife-static : builds a static library - * fife-python : (default) builds a python module (uses swig) - * fife-swig : build the swig python wrappers - * fife : builds fife-shared, fife-static and fife-python - * install-shared : installs the shared library - * install-static : installs the static library - * install-python : installs the python module and library - * install-dev : installed the shared, static and header files - * install-all : installs the shared, static and python libraries - * projects : build msvc, msvc9 and code-blocks (win32 and linux) project files - -Build options: - * --release : builds the release versions of the binaries - * --disable-opengl : removes opengl support - * --disable-zip : removes ZIP archive support - * --disable-log : disable engine logging support - * --enable-rend-camzone : enables camera zone renderer - * --enable-rend-grid : enables camera grid renderer - * --enable-profile : build with profiling information - * --prefix : installation prefix for the shared and static libraries - * --python-prefix : installation prefix for the python library - - -== Platform specific details == - -=== Linux === -Detailed information how to build FIFE on Linux-based distributions can be found at the project wiki: - * http://wiki.fifengine.de/index.php?title=Building:Linux:SCons - -After FIFE has been built successfully move into the /demos/rio_de_hola directory and run: 'python run.py' - -=== OS X === -Detailed information how to build FIFE on OS X systems can be found at the project wiki: - * http://wiki.fifengine.de/index.php?title=Building:Mac:Scons - -After FIFE has been built successfully move into the /demos/rio_de_hola directory and run: 'python run.py' - - -=== Win32 === -The Win32 package ships with precompiled binaries. Simply unpack the package to location of your choice. After that you'll need to install ActivePython 2.7: - * http://downloads.activestate.com/ActivePython/releases/2.7.0.2/ActivePython-2.7.0.2-win32-x86.msi - -Move into the \demos\rio_de_hola directory and start the run.py script. You can simply double-click with your mouse on it. It should be automatically associated with the Python interpreter after installing ActivePython. + +__/\\\\\\\\\\\\\\\___/\\\\\\\\\\\___/\\\\\\\\\\\\\\\___/\\\\\\\\\\\\\\\_ + _\/\\\///////////___\/////\\\///___\/\\\///////////___\/\\\///////////__ + _\/\\\__________________\/\\\______\/\\\______________\/\\\_____________ + _\/\\\\\\\\\\\__________\/\\\______\/\\\\\\\\\\\______\/\\\\\\\\\\\_____ + _\/\\\///////___________\/\\\______\/\\\///////_______\/\\\///////______ + _\/\\\__________________\/\\\______\/\\\______________\/\\\_____________ + _\/\\\__________________\/\\\______\/\\\______________\/\\\_____________ + _\/\\\_______________/\\\\\\\\\\\__\/\\\______________\/\\\\\\\\\\\\\\\_ + _\///_______________\///////////___\///_______________\///////////////__ + +== Building, Installing and Running FIFE == + +=== Notes === +We are finally able to provide install targets for most platforms. There may be +a few minor issues left over to work out but for the most part the install +targets work as advertized. + + +=== Dependencies === +A list of all dependencies (including accurate version numbers) that you'll need +to obtain to build FIFE on your platform can be found at the project wiki: + * http://wiki.fifengine.de/index.php?title=Build_dependencies + + +=== SCons Build System Notes === +FIFE utilizes the SCons (http://www.scons.org) build system. Here is a quick +list of scons commands that can be important for building FIFE on your platform: + * 'scons -h' will list additional compile options. + * 'scons -c' deletes any compiled objects (scons equivalent of 'make clean'). + * 'scons' will build FIFE (default target is fife-python). + +Valid targets include: + * ext : builds the external dependencies (only REQUIRED in Linux) + * tests : builds unittests (needed for test_fife.py) + * fife-shared : builds a shared library (DLL on Windows) + * fife-static : builds a static library + * fife-python : (default) builds a python module (uses swig) + * fife-swig : build the swig python wrappers + * fife : builds fife-shared, fife-static and fife-python + * install-shared : installs the shared library + * install-static : installs the static library + * install-python : installs the python module and library + * install-dev : installed the shared, static and header files + * install-all : installs the shared, static and python libraries + * projects : build msvc, msvc9 and code-blocks (win32 and linux) project + files + +Build options: + * --release : builds the release versions of the binaries + * --disable-opengl : removes opengl support + * --disable-zip : removes ZIP archive support + * --disable-log : disable engine logging support + * --enable-rend-camzone : enables camera zone renderer + * --enable-rend-grid : enables camera grid renderer + * --enable-profile : build with profiling information + * --prefix : installation prefix for the shared and static libraries + * --python-prefix : installation prefix for the python library + * --lib-dir : installation directory for the libraries + + +== Platform specific details == + +=== Linux === +Detailed information how to build FIFE on Linux-based distributions can be found +at the project wiki: + * http://wiki.fifengine.de/index.php?title=Building:Linux:SCons + +After FIFE has been built successfully move into the /demos/rio_de_hola +directory and run: 'python run.py' + +=== OS X === +Detailed information how to build FIFE on OS X systems can be found at the +project wiki: + * http://wiki.fifengine.de/index.php?title=Building:Mac:Scons + +After FIFE has been built successfully move into the /demos/rio_de_hola +directory and run: 'python run.py' + + +=== Win32 === +The Win32 package ships with precompiled binaries. Simply unpack the package to +location of your choice. After that you'll need to install ActivePython 2.7: + * http://downloads.activestate.com/ActivePython/releases/2.7.0.2/ActivePython-2.7.0.2-win32-x86.msi + +Move into the \demos\rio_de_hola directory and start the run.py script. +You can simply double-click with your mouse on it. It should be automatically +associated with the Python interpreter after installing ActivePython. diff --git a/README b/README index 88ed6ff1c..c1ddaf975 100644 --- a/README +++ b/README @@ -1,114 +1,135 @@ - -__/\\\\\\\\\\\\\\\___/\\\\\\\\\\\___/\\\\\\\\\\\\\\\___/\\\\\\\\\\\\\\\_ - _\/\\\///////////___\/////\\\///___\/\\\///////////___\/\\\///////////__ - _\/\\\__________________\/\\\______\/\\\______________\/\\\_____________ - _\/\\\\\\\\\\\__________\/\\\______\/\\\\\\\\\\\______\/\\\\\\\\\\\_____ - _\/\\\///////___________\/\\\______\/\\\///////_______\/\\\///////______ - _\/\\\__________________\/\\\______\/\\\______________\/\\\_____________ - _\/\\\__________________\/\\\______\/\\\______________\/\\\_____________ - _\/\\\_______________/\\\\\\\\\\\__\/\\\______________\/\\\\\\\\\\\\\\\_ - _\///_______________\///////////___\///_______________\///////////////__ - -== Introduction == -Welcome to the FIFE v0.3.2 README. This snapshot is based on SVN revision XXXX. - -== Table of contents == -1 Features -2 License -3 FIFE Clients -4 Known Issues -5 Feedback -6 Closing Notes - - -== 1) Features == -A complete list of the features that FIFE offers can be found at the project wiki: - * http://wiki.fifengine.de/index.php?title=Engine_features - - -== 2) License == -The source code (*.cpp, *.h & *.py) is licensed under LGPL 2.1 or newer: - * http://www.gnu.org/licenses/lgpl-2.1.html - -Content was taken from a lot a lot of different 3rd party sources. Therefore each -client directory comes with a separate LICENSE file that states the origin of the -content, the author and the actual license it was published under. - - -== 3) FIFE Clients == - -=== 3.1) Editor === -The editor tool can be found within the /tools/editor directory. You can -launch it by running 'run.py'. It is used to edit map files for the tech demo -(rio do hola). Other clients extend it and use it to edit their maps. - - -=== 3.2) Rio De Hola === -Rio de hola is a technology demo showing off many of the FIFE features. It is -located in the /demos/rio_de_hola directory and can be launched by running -run.py. It was at one time meant to be an example game but we have moved away -from that idea and it is now more of a technology demo and a playground for -developers to test their code. It does serve as a good starting point for people -wishing to play around with FIFE or base your game off of. - - -=== 3.3) Shooter Demo === -The Shooter demo was an attempt to show the versatility and flexibility of FIFE. -It is a simple side scrolling shooter that has a main menu, one level and an -end boss. Try your luck and see if you can defeat the boss! - - -=== 3.4) PyChan Example === -Last but not least there is an example client residing in \demos\pychan_demo -that shows how the pychan GUI library works. Start the GUI demo application by -running pychan_test.py. - - -=== 3.5) Configuring the Clients === -The engine utilizes special settings files for configuring FIFE. This file is called -settings.py and resides in the same directory as the /clients//run.py -scripts. You can customize FIFE by editing this file. - - -== 4) Known issues == - * Cannot build a usable debug version of _fife_d.pyd with mingw - * Win32 users tend to suffer from problems with the OpenAL drivers. If you don't - hear sound while running a FIFE client, run oalinst.exe that ships with the - Win32 FIFE Development Kit. This is the latest OpenAL driver for Win32. - * The unittests are broken on Win32 (if used in combination with scons & mingw). - * Cannot show/hide child widgets in containers (#357) - * No non-renderable font image when a character is not found (#302) - * Guichan widgets do not correctly handle meta characters (shift, ctrl, alt, - etc) (#412) - * Cameras must be attached to layers and not maps as they should be (#305) - * Map editor clobbers custom attribues in map file (#379) - * Must use modified guichan for UTF8 support (#432) - * Button Doesn't react to click when drawn below mouse poiner (#387) - * The spacer concept in pychan does not work as expected (#490) - * No soname for libfife.so (#435) - * Pychan dropdowns refuse to open if there is no space below (#445) - * Slider size is overwritten by label max_size when residing in the same - (parent) box (#488) - * Map editor clobbers ccustom attributes (#379) - * Editor crashes after docking the object editor and closing map (#450) - * History bugs and (many) other related bugs (#452, #459) - * Cannot default zoom level for a camera (#467) - * Cannot add additional import statements (#468) - * Loaders contain a circular import (#478) - -== 5) Feedback == -We appreciate every kind of feedback concerning the release, the project in general -and the bundled techdemo. Feedback is a great way to help us to improve FIFE. If you -would like to get in contact with us and provide feedback you can either visit our -IRC channel or our forums: - * http://wiki.fifengine.de/index.php?title=IRC - * http://forums.fifengine.de/index.php?board=5.0 - - -== 6) Closing Notes == -Have fun with the release and let us know what you think about it! --- The FIFE team. - -http://www.fifengine.net/ - -2010/11/19 + +__/\\\\\\\\\\\\\\\___/\\\\\\\\\\\___/\\\\\\\\\\\\\\\___/\\\\\\\\\\\\\\\_ + _\/\\\///////////___\/////\\\///___\/\\\///////////___\/\\\///////////__ + _\/\\\__________________\/\\\______\/\\\______________\/\\\_____________ + _\/\\\\\\\\\\\__________\/\\\______\/\\\\\\\\\\\______\/\\\\\\\\\\\_____ + _\/\\\///////___________\/\\\______\/\\\///////_______\/\\\///////______ + _\/\\\__________________\/\\\______\/\\\______________\/\\\_____________ + _\/\\\__________________\/\\\______\/\\\______________\/\\\_____________ + _\/\\\_______________/\\\\\\\\\\\__\/\\\______________\/\\\\\\\\\\\\\\\_ + _\///_______________\///////////___\///_______________\///////////////__ + +== Introduction == +Welcome to the FIFE v0.3.3 README. This snapshot is based on SVN revision 3750. + +== Table of contents == +1 Features +2 License +3 FIFE Clients +4 Known Issues +5 Feedback +6 Closing Notes + + +== 1) Features == +A complete list of the features that FIFE offers can be found at the project wiki: + * http://wiki.fifengine.de/index.php?title=Engine_features + + +== 2) License == +The source code (*.cpp, *.h & *.py) is licensed under LGPL 2.1 or newer: + * http://www.gnu.org/licenses/lgpl-2.1.html + +Content was taken from a lot a lot of different 3rd party sources. Therefore each +client directory comes with a separate LICENSE file that states the origin of the +content, the author and the actual license it was published under. + + +== 3) FIFE Clients == + +=== 3.1) Editor === +The editor tool can be found within the /tools/editor directory. You can +launch it by running 'run.py'. It is used to edit map files for the tech demo +(rio do hola). Other clients extend it and use it to edit their maps. + + +=== 3.2) Rio De Hola === +Rio de hola is a technology demo showing off many of the FIFE features. It is +located in the /demos/rio_de_hola directory and can be launched by running +run.py. It was at one time meant to be an example game but we have moved away +from that idea and it is now more of a technology demo and a playground for +developers to test their code. It does serve as a good starting point for people +wishing to play around with FIFE or base your game off of. + + +=== 3.3) Shooter Demo === +The Shooter demo was an attempt to show the versatility and flexibility of FIFE. +It is a simple side scrolling shooter that has a main menu, one level and an +end boss. Try your luck and see if you can defeat the boss! + + +=== 3.4) PyChan Example === +Last but not least there is an example client residing in \demos\pychan_demo +that shows how the pychan GUI library works. Start the GUI demo application by +running pychan_test.py. + + +=== 3.5) Configuring the Clients === +The engine utilizes special settings files for configuring FIFE. This file is called +settings.xml and resides in your home directory (in Application Data for Windows users). +For the Shooter demo this file is in the same directory as the shooter demo. + + +== 4) Known issues == +Documentation + * Bug in dep_analyzer.py which prevents graphs from being generated (#554) + * Crashing when making application window active in Mac OSX (#515) + * Some unit tests are broken (#423) + * Atlas Creator needs to be documented (#559) + +Engine + * Using FIFE Console breaks gettext calls, thus crashing the client (#560) + * ActionFrame is not functional (#573) + * Fallback solution for special characters (Fontsupport) (#302) + * cameras must be attached to layers (#305) + * Loaders have a circular import (#478) + * Several FIFE::Command type events are not being handled correctly (#503) + * Win32 users tend to suffer from problems with the OpenAL drivers. If you don't + hear sound while running a FIFE client, run oalinst.exe that ships with the + Win32 FIFE Development Kit. This is the latest OpenAL driver for Win32. + +Guichan/Pychan + * Fix UTF8 support using vanilla guichan source (#432) + * Pychan dropdown menus crash FIFE-based client on win32 (#508) + * De-couple FIFE from Guichan (#549) + * Button doesn't react to click when drawn below mouse pointer (#387) + * Pychan dropdowns refuse to open if there is no space below (#445) + * Slider size is overwritten by label max_size when residing in the same (parent) box (#488) + * Pychan widget constructors silently ignore unexpected keyword arguments (#520) + * Borders are not rendered on edges of widgets that touch their parent container's edge. (#522) + * GuiImage unable to find loader for JPEG in ImagePool (#548) + * Cursor is sometimes displayed over letter in TextField (#547) + +Build + * Uninstaller Doesn't Remove fife Module (#526) + * libguichan fails to install when src path contains a space (#533) + * Improve build system shared library support on linux (#575, $435) + * Cannot build a usable debug version of _fife_d.pyd with mingw + +Editor + * Clean up editor code to match python coding standards (#371) + * Map editor shouldn't clobber custom attributes (#379) + * Editor crashes after docking the object editor and closing map (#450) + * History bugs (#452) + * Placing an instance on top of another then undoing resets the original instances properties (#459) + * Should be able to set the default zoom level for a camera (#467) + * Editor should allow you to add additional import statements (#468) + * Editor file browser widget can't be closed (#499) + * Misc FIFE Editor crashes (user input validation/exception handling missing) (#537) + +== 5) Feedback == +We appreciate every kind of feedback concerning the release, the project in general +and the bundled techdemo. Feedback is a great way to help us to improve FIFE. If you +would like to get in contact with us and provide feedback you can either visit our +IRC channel or our forums: + * http://wiki.fifengine.de/index.php?title=IRC + * http://forums.fifengine.de/index.php?board=5.0 + + +== 6) Closing Notes == +Have fun with the release and let us know what you think about it! +-- The FIFE team. + +http://www.fifengine.net/ + +2011/10/04 diff --git a/SConstruct b/SConstruct index 7f1dba328..768dfbbf4 100644 --- a/SConstruct +++ b/SConstruct @@ -100,6 +100,19 @@ AddOption('--python-prefix', metavar='DIR', help='Python module installation prefix') +AddOption('--local-tinyxml', + dest='local-tinyxml', + action="store_true", + help='Forces fife to use the local version of tinyxml that ships with fife', + default=False) + +AddOption('--lib-dir', + dest='lib-dir', + nargs=1, type='string', + action='store', + metavar='DIR', + help='Shared Library install location') + #************************************************************************** #save command line options here #************************************************************************** @@ -140,6 +153,13 @@ if GetOption('enable-profile'): profile = 1 else: profile = 0 + +if GetOption('local-tinyxml'): + local_tinyxml = 1 + env['LOCAL_TINYXML'] = True +else: + local_tinyxml = 0 + env['LOCAL_TINYXML'] = False #************************************************************************** #set the installation directories. @@ -161,6 +181,14 @@ if env.has_key('DESTDIR'): prefix = env['DESTDIR'] + prefix pythonprefix = env['DESTDIR'] + pythonprefix +libdir = GetOption('lib-dir') +if libdir is None: + libdir = os.path.join(prefix, 'lib') +else: + libdir = os.path.join(prefix, libdir) + +env['LIBDIR'] = libdir + #************************************************************************** #get platform specific information #************************************************************************** @@ -190,9 +218,15 @@ def checkForLib(lib, header='', language='c++'): return ret -def checkForLibs(liblist, required=1, language='c++'): +def checkForLibs(env, liblist, required=1, language='c++'): ret = 0 for lib, header in liblist: + # special case for the user overriding on the scons build line to + # force using the local tinyxml version that ships with fife + #if not isinstance(lib, tuple) and lib == 'tinyxml' and env['LOCAL_TINYXML'] == True: + #env.Append(CPPDEFINES = ['USE_LOCAL_TINY_XML']) + #continue + if (isinstance(lib, tuple)): for item in lib: ret = checkForLib(item, header, language) @@ -201,9 +235,21 @@ def checkForLibs(liblist, required=1, language='c++'): env.AppendUnique(LIBS = [item]) break else: - ret = checkForLib(lib, header, language) - if ret: - env.AppendUnique(LIBS=[lib]) + # special handling for tinyxml + if lib == 'tinyxml': + if env['LOCAL_TINYXML'] == False: + # look for system version of tinyxml + ret = checkForLib(lib, header, language) + + if ret: + # system version found so set the compilation flag + # and store the lib in the lib list + env.AppendUnique(CPPDEFINES = ['USE_SYSTEM_TINY_XML']) + env.AppendUnique(LIBS = [lib]) + else: + ret = checkForLib(lib, header, language) + if ret: + env.AppendUnique(LIBS = [lib]) if required and not ret: if (isinstance(lib, tuple)): @@ -212,6 +258,16 @@ def checkForLibs(liblist, required=1, language='c++'): else: print 'Required lib %s not found!' %lib Exit(1) + #elif not required and not ret: + # special handling for libs that are not required + # and were not added + #if not isinstance(lib, tuple) and lib == 'tinyxml': + # we will use our own included version if + # the system version was not found + #env.Append(CPPDEFINES = ['USE_LOCAL_TINY_XML']) + + return env + #************************************************************************** #check the existence of required libraries and headers @@ -225,9 +281,9 @@ required_headers = platformConfig.getRequiredHeaders(opengl) # a clean or building the external dependencies if not GetOption('clean') and 'ext' not in COMMAND_LINE_TARGETS: if required_libs: - checkForLibs(required_libs, required = 1) + env = checkForLibs(env, required_libs, required = 1) if optional_libs: - checkForLibs(optional_libs, required = 0) + env = checkForLibs(env, optional_libs, required = 0) if required_headers: for h in required_headers: conf.CheckHeader(h) @@ -297,11 +353,14 @@ opts = {'SRC' : os.path.join(os.getcwd(), 'engine',), 'DLLPATH' : os.path.join(os.getcwd(), 'build', 'win32', 'binaries', 'mingw'), 'DEBUG' : debug, 'PREFIX' : prefix, + 'LIBDIR' : libdir, 'TESTLIBS' : ['fife', 'UnitTest++'], 'PYTHON_PREFIX' : pythonprefix, 'WRAP_COPY_DEST' : os.path.join('#engine', 'swigwrappers', 'python'), 'PYLIB_COPY_DEST' : os.path.join('#engine', 'python', 'fife')} +opts['FIFE_VERSION'] = utils.get_fife_version(os.path.join(opts['SRC'], 'core')); + if debug: opts['LIBPATH'] = os.path.join(os.getcwd(), 'build', 'engine', 'debug') else: diff --git a/build/darwin-config.py b/build/darwin-config.py index 45d32cd60..387e82f7d 100644 --- a/build/darwin-config.py +++ b/build/darwin-config.py @@ -56,6 +56,9 @@ def addExtras(env, opengl): if opengl: env.Append(SHLINKFLAGS='-framework OpenGL') + # define for using tinyxml with stl support enabled + env.AppendUnique(CPPDEFINES = ['TIXML_USE_STL']) + return env def getRequiredHeaders(opengl): @@ -82,5 +85,7 @@ def getRequiredLibs(opengl): return libs def getOptionalLibs(opengl): - return None + libs = [('tinyxml', 'tinyxml.h')] + + return libs diff --git a/build/freebsd8-config-dist.py b/build/freebsd8-config-dist.py index 7029b500d..88af97ec3 100644 --- a/build/freebsd8-config-dist.py +++ b/build/freebsd8-config-dist.py @@ -1,34 +1,34 @@ -# Needed pkg-config additions: -# SDL_ttf & SDL_image -# guichan, guichan_opengl & guichan_sdl -# boost_filesystem & boost_regex -# vorbisfile -# openal - -import sys - -def initEnvironment(env): - return env - -def addExtras(context): - context.env.Append(CPPPATH = ['/usr/local/include/vorbis']) - context.checkSimpleLib(['vorbisfile'], 'vorbisfile.h') - context.checkSimpleLib(['openal'], 'AL/al.h') - - context.checkSimpleLib(['sdl11', 'sdl12', 'sdl'], 'SDL.h') - context.checkSimpleLib(['SDL_ttf'], 'SDL_ttf.h') - context.checkSimpleLib(['SDL_image'], 'SDL_image.h') - context.checkSimpleLib(['guichan']) - context.checkSimpleLib(['guichan_sdl']) - context.checkSimpleLib(['boost_filesystem']) - context.checkSimpleLib(['boost_regex']) - context.checkSimpleLib(['xcursor']) - context.checkSimpleLib(['png'], 'png.h') - - if context.env['opengl']: - context.env.Append(LIBS = ['GL', 'GLU']) - context.env.Append(CPPPATH = ['/usr/local/include']) - context.env.Append(LIBPATH = ['/usr/local/lib']) - context.checkSimpleLib(['guichan_opengl']) - # For swig/python: - context.env.Append(CPPPATH = ['/usr/local/include/python%s'%sys.version[:3]]) +# Needed pkg-config additions: +# SDL_ttf & SDL_image +# guichan, guichan_opengl & guichan_sdl +# boost_filesystem & boost_regex +# vorbisfile +# openal + +import sys + +def initEnvironment(env): + return env + +def addExtras(context): + context.env.Append(CPPPATH = ['/usr/local/include/vorbis']) + context.checkSimpleLib(['vorbisfile'], 'vorbisfile.h') + context.checkSimpleLib(['openal'], 'AL/al.h') + + context.checkSimpleLib(['sdl11', 'sdl12', 'sdl'], 'SDL.h') + context.checkSimpleLib(['SDL_ttf'], 'SDL_ttf.h') + context.checkSimpleLib(['SDL_image'], 'SDL_image.h') + context.checkSimpleLib(['guichan']) + context.checkSimpleLib(['guichan_sdl']) + context.checkSimpleLib(['boost_filesystem']) + context.checkSimpleLib(['boost_regex']) + context.checkSimpleLib(['xcursor']) + context.checkSimpleLib(['png'], 'png.h') + + if context.env['opengl']: + context.env.Append(LIBS = ['GL']) + context.env.Append(CPPPATH = ['/usr/local/include']) + context.env.Append(LIBPATH = ['/usr/local/lib']) + context.checkSimpleLib(['guichan_opengl']) + # For swig/python: + context.env.Append(CPPPATH = ['/usr/local/include/python%s'%sys.version[:3]]) diff --git a/build/linux2-config.py b/build/linux2-config.py index 8dac653fd..2b6401d6f 100644 --- a/build/linux2-config.py +++ b/build/linux2-config.py @@ -40,7 +40,8 @@ def initEnvironment(env): extincludepath]) env.Append(LIBPATH = [os.path.join('/', 'opt', 'lib'), - extlibpath]) + extlibpath, + env.subst('$LIBDIR')]) env.AppendENVPath('LD_RUN_PATH', os.path.join('..', '..', '..', extlibpath)) @@ -52,9 +53,12 @@ def addExtras(env, opengl): env.Append(LIBS = pythonversion) if opengl: - env.Append(LIBS = ['stdc++', 'GL', 'GLU']) + env.Append(LIBS = ['stdc++', 'GL',]) env.Append(LIBPATH = os.path.join('/', 'usr', 'X11R6', 'lib')) + # define for using tinyxml with stl support enabled + env.AppendUnique(CPPDEFINES = ['TIXML_USE_STL']) + return env def getRequiredHeaders(opengl): @@ -70,19 +74,18 @@ def getRequiredLibs(opengl): # guichan_sdl - depends on at least the SDL libs and guichan prior in the list # guichan_opengl - depends on at least guichan prior in the list libs = [('vorbisfile', 'vorbisfile.h'), + (pythonversion, pythonversion + '/Python.h'), ('openal', 'AL/al.h'), ('SDL', 'SDL.h'), ('SDL_ttf', 'SDL_ttf.h'), ('SDL_image', 'SDL_image.h'), ('guichan', 'guichan.hpp'), ('guichan_sdl', ''), - (('boost_filesystem', 'boost_filesystem-gcc', 'boost_filesystem-gcc41', 'boost_filesystem-mt'), 'boost/filesystem.hpp'), - (('boost_regex', 'boost_regex-gcc', 'boost_regex-gcc41', 'boost_regex-mt'), 'boost/regex.hpp'), + ('boost_system', ''), + (('boost_filesystem', 'boost_filesystem-gcc', 'boost_filesystem-gcc41', 'boost_filesystem-mt', 'libboost_filesystem-mt'), 'boost/filesystem.hpp'), + (('boost_regex', 'boost_regex-gcc', 'boost_regex-gcc41', 'boost_regex-mt', 'libboost_regex-mt'), 'boost/regex.hpp'), ('png', 'png.h'), ('Xcursor', '')] - - if platform.platform().find('fedora'): - libs.insert(0,('boost_system', '')) if (opengl): libs.append(('guichan_opengl', '')) @@ -90,7 +93,9 @@ def getRequiredLibs(opengl): return libs def getOptionalLibs(opengl): - return None + libs = [('tinyxml', 'tinyxml.h')] + + return libs # vim: set filetype=python: diff --git a/build/openbsd4-config.py b/build/openbsd4-config.py index 33a9ee952..59cad3338 100644 --- a/build/openbsd4-config.py +++ b/build/openbsd4-config.py @@ -29,9 +29,12 @@ def initEnvironment(env): def addExtras(env, opengl): if opengl: - env.Append(LIBS = ['stdc++', 'GL', 'GLU']) + env.Append(LIBS = ['stdc++', 'GL']) env.Append(LIBPATH = os.path.join('/', 'usr', 'X11R6', 'lib')) + # define for using tinyxml with stl support enabled + env.AppendUnique(CPPDEFINES = ['TIXML_USE_STL']) + return env def getRequiredHeaders(opengl): @@ -46,6 +49,7 @@ def getRequiredLibs(opengl): ('SDL_image', 'SDL_image.h'), ('guichan', 'guichan.hpp'), ('guichan_sdl', ''), + ('boost_system', ''), (('boost_filesystem', 'boost_filesystem-gcc', 'boost_filesystem-gcc41', 'boost_filesystem-mt'), 'boost/filesystem.hpp'), (('boost_regex', 'boost_regex-gcc', 'boost_regex-gcc41', 'boost_regex-mt'), 'boost/regex.hpp'), ('png', 'png.h'), @@ -57,7 +61,9 @@ def getRequiredLibs(opengl): return libs def getOptionalLibs(opengl): - return None + libs = [('tinyxml', 'tinyxml.h')] + + return libs # vim: ft=python: diff --git a/build/win32-config.py b/build/win32-config.py index e56fecf27..7d803c1cc 100644 --- a/build/win32-config.py +++ b/build/win32-config.py @@ -1,73 +1,76 @@ -# -*- coding: utf-8 -*- - -# #################################################################### -# Copyright (C) 2005-2009 by the FIFE team -# http://www.fifengine.de -# This file is part of FIFE. -# -# FIFE is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the -# Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -# #################################################################### - -import os -import SCons.Util - -def initEnvironment(env): - #a hack to stop passing the -nologo flag to mingw - env['CCFLAGS'] = SCons.Util.CLVar('') - - path = os.getcwd() - - swigdir = os.path.join(path, 'build', 'win32', 'applications', 'swigwin-2.0.1') - mingwbindir = os.path.join(path, 'build', 'win32', 'applications', 'mingw', 'bin') - - env.PrependENVPath('PATH', swigdir) - env.PrependENVPath('PATH', mingwbindir) - - includepath = os.path.join(path, 'build', 'win32', 'includes') - staticlibpath = os.path.join(path, 'build', 'win32', 'static_libs', 'mingw') - - env.Append(CPPPATH = [includepath + '\\libogg', includepath + '\\openal', includepath + '\\sdl_image', includepath + '\\zlib', includepath + '\\libguichan', includepath + '\\boost_1_38_0', includepath + '\\libvorbis', includepath + '\\libpng', includepath + '\\sdl_ttf', includepath + '\\sdl', includepath + '\\python27', includepath + '\\unittest++\\src']) - env.Append(LIBPATH = [staticlibpath, staticlibpath + '\\python27']) - - env.Tool('swig') - env.Tool('mingw') - - return env - - -def addExtras(env, opengl): - env.Append(LIBS = ['libguichan_sdl', 'libguichan', 'mingw32', 'zlib', 'vorbis', 'ogg', 'vorbisfile', 'libpng', 'SDL_image', 'SDLmain', 'SDL.dll', 'OpenAL32', 'SDL_ttf', 'boost_filesystem', 'boost_regex', 'boost_system']) - - if env['FIFE_DEBUG']: - env.Append(LIBS = ['python27_d']) - else: - env.Append(LIBS = ['python27']) - - if opengl: - env.Prepend(LIBS = ['libguichan_opengl']) - env.Append(LIBS = ['opengl32', 'glu32']) - - return env - - -def getRequiredHeaders(opengl): - return None - -def getRequiredLibs(opengl): - return None - -def getOptionalLibs(opengl): - return None +# -*- coding: utf-8 -*- + +# #################################################################### +# Copyright (C) 2005-2009 by the FIFE team +# http://www.fifengine.de +# This file is part of FIFE. +# +# FIFE is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the +# Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +# #################################################################### + +import os +import SCons.Util + +def initEnvironment(env): + #a hack to stop passing the -nologo flag to mingw + env['CCFLAGS'] = SCons.Util.CLVar('') + + path = os.getcwd() + + swigdir = os.path.join(path, 'build', 'win32', 'applications', 'swigwin-2.0.1') + mingwbindir = os.path.join(path, 'build', 'win32', 'applications', 'mingw', 'bin') + + env.PrependENVPath('PATH', swigdir) + env.PrependENVPath('PATH', mingwbindir) + + includepath = os.path.join(path, 'build', 'win32', 'includes') + staticlibpath = os.path.join(path, 'build', 'win32', 'static_libs', 'mingw') + + env.Append(CPPPATH = [includepath + '\\libogg', includepath + '\\openal', includepath + '\\sdl_image', includepath + '\\zlib', includepath + '\\libguichan', includepath + '\\boost_1_38_0', includepath + '\\libvorbis', includepath + '\\libpng', includepath + '\\sdl_ttf', includepath + '\\sdl', includepath + '\\python27', includepath + '\\unittest++\\src']) + env.Append(LIBPATH = [staticlibpath, staticlibpath + '\\python27']) + + env.Tool('swig') + env.Tool('mingw') + + return env + + +def addExtras(env, opengl): + env.Append(LIBS = ['libguichan_sdl', 'libguichan', 'mingw32', 'zlib', 'vorbis', 'ogg', 'vorbisfile', 'libpng', 'SDL_image', 'SDLmain', 'SDL.dll', 'OpenAL32', 'SDL_ttf', 'boost_filesystem', 'boost_regex', 'boost_system']) + + if env['FIFE_DEBUG']: + env.Append(LIBS = ['python27_d']) + else: + env.Append(LIBS = ['python27']) + + if opengl: + env.Prepend(LIBS = ['libguichan_opengl']) + env.Append(LIBS = ['opengl32']) + + # define for using tinyxml with stl support enabled + env.AppendUnique(CPPDEFINES = ['TIXML_USE_STL']) + + return env + + +def getRequiredHeaders(opengl): + return None + +def getRequiredLibs(opengl): + return None + +def getOptionalLibs(opengl): + return None diff --git a/build/win32/build_environments/visual_studio_8/engine_template.xml b/build/win32/build_environments/visual_studio_8/engine_template.xml index 4e6cc2845..f83234959 100644 --- a/build/win32/build_environments/visual_studio_8/engine_template.xml +++ b/build/win32/build_environments/visual_studio_8/engine_template.xml @@ -43,7 +43,7 @@ Optimization="0" WholeProgramOptimization="false" AdditionalIncludeDirectories="..\..\..\..\engine;..\..\..\..\engine\core;..\..\includes\libguichan;..\..\includes\boost_1_38_0;..\..\includes\openal;..\..\includes\sdl;..\..\includes\zlib;..\..\includes\libvorbis;..\..\includes\libpng;..\..\includes\libogg;..\..\includes\python27;..\..\includes\sdl_image;..\..\includes\sdl_ttf" - PreprocessorDefinitions="WIN32;NDEBUG;_LIB;HAVE_OPENGL;HAVE_ZIP;LOG_ENABLED;WIN32_LEAN_AND_MEAN;NOMINMAX;M_SQRT2=1.41421356237309504880" + PreprocessorDefinitions="WIN32;NDEBUG;_LIB;HAVE_OPENGL;HAVE_ZIP;LOG_ENABLED;WIN32_LEAN_AND_MEAN;NOMINMAX;M_SQRT2=1.41421356237309504880;TIXML_USE_STL" MinimalRebuild="true" RuntimeLibrary="2" UsePrecompiledHeader="0" @@ -123,7 +123,7 @@ Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="..\..\..\..\engine;..\..\..\..\engine\core;..\..\includes\libguichan;..\..\includes\boost_1_38_0;..\..\includes\openal;..\..\includes\sdl;..\..\includes\zlib;..\..\includes\libvorbis;..\..\includes\libpng;..\..\includes\libogg;..\..\includes\python27;..\..\includes\sdl_image;..\..\includes\sdl_ttf" - PreprocessorDefinitions="WIN32;_DEBUG;_LIB;HAVE_OPENGL;HAVE_ZIP;LOG_ENABLED;WIN32_LEAN_AND_MEAN;NOMINMAX;M_SQRT2=1.41421356237309504880" + PreprocessorDefinitions="WIN32;_DEBUG;_LIB;HAVE_OPENGL;HAVE_ZIP;LOG_ENABLED;WIN32_LEAN_AND_MEAN;NOMINMAX;M_SQRT2=1.41421356237309504880;TIXML_USE_STL" MinimalRebuild="true" BasicRuntimeChecks="3" RuntimeLibrary="3" @@ -192,7 +192,7 @@ Name="VCCLCompilerTool" WholeProgramOptimization="false" AdditionalIncludeDirectories="..\..\..\..\engine;..\..\..\..\engine\core;..\..\includes\libguichan;..\..\includes\boost_1_38_0;..\..\includes\openal;..\..\includes\sdl;..\..\includes\zlib;..\..\includes\libvorbis;..\..\includes\libpng;..\..\includes\libogg;..\..\includes\python27;..\..\includes\sdl_image;..\..\includes\sdl_ttf" - PreprocessorDefinitions="WIN32;NDEBUG;_LIB;HAVE_OPENGL;HAVE_ZIP;LOG_ENABLED;WIN32_LEAN_AND_MEAN;NOMINMAX;M_SQRT2=1.41421356237309504880" + PreprocessorDefinitions="WIN32;NDEBUG;_LIB;HAVE_OPENGL;HAVE_ZIP;LOG_ENABLED;WIN32_LEAN_AND_MEAN;NOMINMAX;M_SQRT2=1.41421356237309504880;TIXML_USE_STL" RuntimeLibrary="2" UsePrecompiledHeader="0" WarningLevel="3" @@ -258,7 +258,7 @@ Name="VCCLCompilerTool" WholeProgramOptimization="false" AdditionalIncludeDirectories="..\..\..\..\engine;..\..\..\..\engine\core;..\..\includes\libguichan;..\..\includes\boost_1_38_0;..\..\includes\openal;..\..\includes\sdl;..\..\includes\zlib;..\..\includes\libvorbis;..\..\includes\libpng;..\..\includes\libogg;..\..\includes\python27;..\..\includes\sdl_image;..\..\includes\sdl_ttf" - PreprocessorDefinitions="WIN32;NDEBUG;_LIB;HAVE_OPENGL;HAVE_ZIP;LOG_ENABLED;WIN32_LEAN_AND_MEAN;NOMINMAX;M_SQRT2=1.41421356237309504880" + PreprocessorDefinitions="WIN32;NDEBUG;_LIB;HAVE_OPENGL;HAVE_ZIP;LOG_ENABLED;WIN32_LEAN_AND_MEAN;NOMINMAX;M_SQRT2=1.41421356237309504880;TIXML_USE_STL" RuntimeLibrary="2" UsePrecompiledHeader="0" WarningLevel="3" @@ -337,7 +337,7 @@ Optimization="0" WholeProgramOptimization="false" AdditionalIncludeDirectories="..\..\..\..\engine;..\..\..\..\engine\core;..\..\includes\libguichan;..\..\includes\boost_1_38_0;..\..\includes\openal;..\..\includes\sdl;..\..\includes\zlib;..\..\includes\libvorbis;..\..\includes\libpng;..\..\includes\libogg;..\..\includes\python27;..\..\includes\sdl_image;..\..\includes\sdl_ttf" - PreprocessorDefinitions="WIN32;NDEBUG;_LIB;HAVE_OPENGL;HAVE_ZIP;LOG_ENABLED;WIN32_LEAN_AND_MEAN;NOMINMAX;M_SQRT2=1.41421356237309504880" + PreprocessorDefinitions="WIN32;NDEBUG;_LIB;HAVE_OPENGL;HAVE_ZIP;LOG_ENABLED;WIN32_LEAN_AND_MEAN;NOMINMAX;M_SQRT2=1.41421356237309504880;TIXML_USE_STL" MinimalRebuild="true" RuntimeLibrary="2" UsePrecompiledHeader="0" @@ -419,7 +419,7 @@ Name="VCCLCompilerTool" WholeProgramOptimization="false" AdditionalIncludeDirectories="..\..\..\..\engine;..\..\..\..\engine\core;..\..\includes\libguichan;..\..\includes\boost_1_38_0;..\..\includes\openal;..\..\includes\sdl;..\..\includes\zlib;..\..\includes\libvorbis;..\..\includes\libpng;..\..\includes\libogg;..\..\includes\python27;..\..\includes\sdl_image;..\..\includes\sdl_ttf" - PreprocessorDefinitions="WIN32;NDEBUG;_LIB;HAVE_OPENGL;HAVE_ZIP;LOG_ENABLED;WIN32_LEAN_AND_MEAN;NOMINMAX;M_SQRT2=1.41421356237309504880" + PreprocessorDefinitions="WIN32;NDEBUG;_LIB;HAVE_OPENGL;HAVE_ZIP;LOG_ENABLED;WIN32_LEAN_AND_MEAN;NOMINMAX;M_SQRT2=1.41421356237309504880;TIXML_USE_STL" RuntimeLibrary="2" UsePrecompiledHeader="0" WarningLevel="3" diff --git a/build/win32/build_environments/visual_studio_9/engine_template.xml b/build/win32/build_environments/visual_studio_9/engine_template.xml index 68ea4da18..dc6f85c4e 100644 --- a/build/win32/build_environments/visual_studio_9/engine_template.xml +++ b/build/win32/build_environments/visual_studio_9/engine_template.xml @@ -45,7 +45,7 @@ Optimization="0" WholeProgramOptimization="false" AdditionalIncludeDirectories="..\..\..\..\engine;..\..\..\..\engine\core;..\..\includes\libguichan;..\..\includes\boost_1_38_0;..\..\includes\openal;..\..\includes\sdl;..\..\includes\zlib;..\..\includes\libvorbis;..\..\includes\libpng;..\..\includes\libogg;..\..\includes\python27;..\..\includes\sdl_image;..\..\includes\sdl_ttf" - PreprocessorDefinitions="WIN32;NDEBUG;_LIB;HAVE_OPENGL;HAVE_ZIP;LOG_ENABLED;WIN32_LEAN_AND_MEAN;NOMINMAX;M_SQRT2=1.41421356237309504880" + PreprocessorDefinitions="WIN32;NDEBUG;_LIB;HAVE_OPENGL;HAVE_ZIP;LOG_ENABLED;WIN32_LEAN_AND_MEAN;NOMINMAX;M_SQRT2=1.41421356237309504880;TIXML_USE_STL" MinimalRebuild="true" RuntimeLibrary="2" UsePrecompiledHeader="0" @@ -124,7 +124,7 @@ Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="..\..\..\..\engine;..\..\..\..\engine\core;..\..\includes\libguichan;..\..\includes\boost_1_38_0;..\..\includes\openal;..\..\includes\sdl;..\..\includes\zlib;..\..\includes\libvorbis;..\..\includes\libpng;..\..\includes\libogg;..\..\includes\python27;..\..\includes\sdl_image;..\..\includes\sdl_ttf" - PreprocessorDefinitions="WIN32;_DEBUG;_LIB;HAVE_OPENGL;HAVE_ZIP;LOG_ENABLED;WIN32_LEAN_AND_MEAN;NOMINMAX;M_SQRT2=1.41421356237309504880" + PreprocessorDefinitions="WIN32;_DEBUG;_LIB;HAVE_OPENGL;HAVE_ZIP;LOG_ENABLED;WIN32_LEAN_AND_MEAN;NOMINMAX;M_SQRT2=1.41421356237309504880;TIXML_USE_STL" MinimalRebuild="true" BasicRuntimeChecks="3" RuntimeLibrary="3" @@ -193,7 +193,7 @@ Name="VCCLCompilerTool" WholeProgramOptimization="True" AdditionalIncludeDirectories="..\..\..\..\engine;..\..\..\..\engine\core;..\..\includes\libguichan;..\..\includes\boost_1_38_0;..\..\includes\openal;..\..\includes\sdl;..\..\includes\zlib;..\..\includes\libvorbis;..\..\includes\libpng;..\..\includes\libogg;..\..\includes\python27;..\..\includes\sdl_image;..\..\includes\sdl_ttf" - PreprocessorDefinitions="WIN32;NDEBUG;_LIB;HAVE_OPENGL;HAVE_ZIP;LOG_ENABLED;WIN32_LEAN_AND_MEAN;NOMINMAX;M_SQRT2=1.41421356237309504880" + PreprocessorDefinitions="WIN32;NDEBUG;_LIB;HAVE_OPENGL;HAVE_ZIP;LOG_ENABLED;WIN32_LEAN_AND_MEAN;NOMINMAX;M_SQRT2=1.41421356237309504880;TIXML_USE_STL" RuntimeLibrary="2" UsePrecompiledHeader="0" WarningLevel="3" @@ -261,7 +261,7 @@ Optimization="3" WholeProgramOptimization="True" AdditionalIncludeDirectories="..\..\..\..\engine;..\..\..\..\engine\core;..\..\includes\libguichan;..\..\includes\boost_1_38_0;..\..\includes\openal;..\..\includes\sdl;..\..\includes\zlib;..\..\includes\libvorbis;..\..\includes\libpng;..\..\includes\libogg;..\..\includes\python27;..\..\includes\sdl_image;..\..\includes\sdl_ttf" - PreprocessorDefinitions="WIN32;NDEBUG;_LIB;HAVE_OPENGL;HAVE_ZIP;LOG_ENABLED;WIN32_LEAN_AND_MEAN;NOMINMAX;M_SQRT2=1.41421356237309504880" + PreprocessorDefinitions="WIN32;NDEBUG;_LIB;HAVE_OPENGL;HAVE_ZIP;LOG_ENABLED;WIN32_LEAN_AND_MEAN;NOMINMAX;M_SQRT2=1.41421356237309504880;TIXML_USE_STL" RuntimeLibrary="2" UsePrecompiledHeader="0" WarningLevel="3" @@ -340,7 +340,7 @@ Optimization="0" WholeProgramOptimization="false" AdditionalIncludeDirectories="..\..\..\..\engine;..\..\..\..\engine\core;..\..\includes\libguichan;..\..\includes\boost_1_38_0;..\..\includes\openal;..\..\includes\sdl;..\..\includes\zlib;..\..\includes\libvorbis;..\..\includes\libpng;..\..\includes\libogg;..\..\includes\python27;..\..\includes\sdl_image;..\..\includes\sdl_ttf" - PreprocessorDefinitions="WIN32;NDEBUG;_LIB;HAVE_OPENGL;HAVE_ZIP;LOG_ENABLED;WIN32_LEAN_AND_MEAN;NOMINMAX;M_SQRT2=1.41421356237309504880" + PreprocessorDefinitions="WIN32;NDEBUG;_LIB;HAVE_OPENGL;HAVE_ZIP;LOG_ENABLED;WIN32_LEAN_AND_MEAN;NOMINMAX;M_SQRT2=1.41421356237309504880;TIXML_USE_STL" MinimalRebuild="true" RuntimeLibrary="2" UsePrecompiledHeader="0" @@ -422,7 +422,7 @@ Name="VCCLCompilerTool" WholeProgramOptimization="false" AdditionalIncludeDirectories="..\..\..\..\engine;..\..\..\..\engine\core;..\..\includes\libguichan;..\..\includes\boost_1_38_0;..\..\includes\openal;..\..\includes\sdl;..\..\includes\zlib;..\..\includes\libvorbis;..\..\includes\libpng;..\..\includes\libogg;..\..\includes\python27;..\..\includes\sdl_image;..\..\includes\sdl_ttf" - PreprocessorDefinitions="WIN32;NDEBUG;_LIB;HAVE_OPENGL;HAVE_ZIP;LOG_ENABLED;WIN32_LEAN_AND_MEAN;NOMINMAX;M_SQRT2=1.41421356237309504880" + PreprocessorDefinitions="WIN32;NDEBUG;_LIB;HAVE_OPENGL;HAVE_ZIP;LOG_ENABLED;WIN32_LEAN_AND_MEAN;NOMINMAX;M_SQRT2=1.41421356237309504880;TIXML_USE_STL" RuntimeLibrary="2" UsePrecompiledHeader="0" WarningLevel="3" diff --git a/build/win32/installer/fife.iss b/build/win32/installer/fife.iss index e6c87184f..42ea3036e 100644 --- a/build/win32/installer/fife.iss +++ b/build/win32/installer/fife.iss @@ -6,9 +6,9 @@ ; Do not use the same AppId value in installers for other applications. ; (To generate a new GUID, click Tools | Generate GUID inside the IDE.) AppId={{99CDEFC4-8CC3-410A-ABB9-FC58F61DF70E} -AppName=FIFE 0.3.2 +AppName=FIFE 0.3.3 ; Version is yyyy.mm -AppVerName=FIFE 0.3.2 +AppVerName=FIFE 0.3.3 AppPublisher=FIFE Team AppPublisherURL=http://www.fifengine.net/ AppSupportURL=http://www.fifengine.net/ @@ -21,7 +21,7 @@ AllowNoIcons=yes LicenseFile=license.rtf Compression=lzma SolidCompression=yes -OutputBaseFilename=FIFE_0_3_2_installer_win32 +OutputBaseFilename=FIFE_0.3.3_installer_win32 OutputDir=. DisableReadyPage=yes @@ -55,7 +55,7 @@ Source: "..\..\..\demos\*"; DestDir: "{app}\demos"; Excludes: ".svn"; Flags: ign Source: "..\..\..\tools\*"; DestDir: "{app}\tools"; Excludes: ".svn"; Flags: ignoreversion recursesubdirs createallsubdirs [Icons] -Name: "{group}\{cm:ProgramOnTheWeb,FIFE}"; Filename: "http://www.fifengine.de/" +Name: "{group}\{cm:ProgramOnTheWeb,FIFE}"; Filename: "http://www.fifengine.net/" Name: "{group}\Copying.txt"; Filename: "notepad.exe"; Parameters: "{app}\doc\Copying.txt" Name: "{group}\Changes.txt"; Filename: "notepad.exe"; Parameters: "{app}\doc\Changes.txt" Name: "{group}\tools\Map Editor"; Filename: "python.exe"; Parameters: """{app}\tools\editor\run.py"""; WorkingDir: "{app}\tools\editor"; Comment: "FIFE Editor"; Components: "tools" @@ -65,7 +65,7 @@ Name: "{group}\demos\Pychan demo"; Filename: "python.exe"; Parameters: """{app}\ Name: "{group}\{cm:UninstallProgram,FIFE}"; Filename: "{uninstallexe}" [Run] -Filename: "{app}\engine\fife-0.3.2.win32.exe"; +Filename: "{app}\engine\fife-0.3.3.win32.exe"; diff --git a/demos/pychan_demo/colortester.py b/demos/pychan_demo/colortester.py index 756bc24ba..e28728edc 100644 --- a/demos/pychan_demo/colortester.py +++ b/demos/pychan_demo/colortester.py @@ -27,7 +27,9 @@ from fife.extensions import pychan class ColorExample(PyChanExample): - """ a small app (^^) to show how guichan uses colors on various widgets """ + """ a small app (^^) to show how guichan uses colors on various widgets + + """ def __init__(self): super(ColorExample,self).__init__('gui/colortester.xml') @@ -46,16 +48,30 @@ def start(self): 'background_gslider': self.update_background_color, 'background_bslider': self.update_background_color, 'background_aslider': self.update_background_color, + + 'foreground_rslider': self.update_foreground_color, + 'foreground_gslider': self.update_foreground_color, + 'foreground_bslider': self.update_foreground_color, + 'foreground_aslider': self.update_foreground_color, + + 'selection_rslider': self.update_selection_color, + 'selection_gslider': self.update_selection_color, + 'selection_bslider': self.update_selection_color, + 'selection_aslider': self.update_selection_color, 'closeButton':self.stop, }) # alpha value needs to be set, otherwise you don't see colors ;-) self.widget.findChild(name="base_aslider").setValue(float(255)) self.widget.findChild(name="background_aslider").setValue(float(255)) + self.widget.findChild(name="foreground_aslider").setValue(float(255)) + self.widget.findChild(name="selection_aslider").setValue(float(255)) # init stuff self.update_basecolor() self.update_background_color() + self.update_foreground_color() + self.update_selection_color() self.widget.show() def update_basecolor(self): @@ -75,7 +91,6 @@ def update_basecolor(self): rgba = (r, g, b, a) - # background_color, foreground_color, base_color, selection_color (listbox) self.widget.findChild(name="example1").base_color = rgba self.widget.findChild(name="example2").base_color = rgba self.widget.findChild(name="example3").base_color = rgba @@ -103,7 +118,6 @@ def update_background_color(self): rgba = (r, g, b, a) - # background_color, foreground_color, background_color, selection_color (listbox) self.widget.findChild(name="example1").background_color = rgba self.widget.findChild(name="example2").background_color = rgba self.widget.findChild(name="example3").background_color = rgba @@ -113,3 +127,57 @@ def update_background_color(self): self.widget.findChild(name="example7").background_color = rgba self.widget.findChild(name="example8").background_color = rgba self.widget.findChild(name="example9").background_color = rgba + + def update_selection_color(self): + """ + Update rgba selection colors of all examples and show the values + """ + r = int(self.widget.findChild(name="selection_rslider").getValue()) + g = int(self.widget.findChild(name="selection_gslider").getValue()) + b = int(self.widget.findChild(name="selection_bslider").getValue()) + a = int(self.widget.findChild(name="selection_aslider").getValue()) + + # update slider labels + self.widget.findChild(name="selection_rvalue").text = unicode(str(r), "utf-8") + self.widget.findChild(name="selection_gvalue").text = unicode(str(g), "utf-8") + self.widget.findChild(name="selection_bvalue").text = unicode(str(b), "utf-8") + self.widget.findChild(name="selection_avalue").text = unicode(str(a), "utf-8") + + rgba = (r, g, b, a) + + self.widget.findChild(name="example1").selection_color = rgba + self.widget.findChild(name="example2").selection_color = rgba + self.widget.findChild(name="example3").selection_color = rgba + self.widget.findChild(name="example4").selection_color = rgba + self.widget.findChild(name="example5").selection_color = rgba + self.widget.findChild(name="example6").selection_color = rgba + self.widget.findChild(name="example7").selection_color = rgba + self.widget.findChild(name="example8").selection_color = rgba + self.widget.findChild(name="example9").selection_color = rgba + + def update_foreground_color(self): + """ + Update rgba foreground colors of all examples and show the values + """ + r = int(self.widget.findChild(name="foreground_rslider").getValue()) + g = int(self.widget.findChild(name="foreground_gslider").getValue()) + b = int(self.widget.findChild(name="foreground_bslider").getValue()) + a = int(self.widget.findChild(name="foreground_aslider").getValue()) + + # update slider labels + self.widget.findChild(name="foreground_rvalue").text = unicode(str(r), "utf-8") + self.widget.findChild(name="foreground_gvalue").text = unicode(str(g), "utf-8") + self.widget.findChild(name="foreground_bvalue").text = unicode(str(b), "utf-8") + self.widget.findChild(name="foreground_avalue").text = unicode(str(a), "utf-8") + + rgba = (r, g, b, a) + + self.widget.findChild(name="example1").foreground_color = rgba + self.widget.findChild(name="example2").foreground_color = rgba + self.widget.findChild(name="example3").foreground_color = rgba + self.widget.findChild(name="example4").foreground_color = rgba + self.widget.findChild(name="example5").foreground_color = rgba + self.widget.findChild(name="example6").foreground_color = rgba + self.widget.findChild(name="example7").foreground_color = rgba + self.widget.findChild(name="example8").foreground_color = rgba + self.widget.findChild(name="example9").foreground_color = rgba diff --git a/demos/pychan_demo/gui/absolute.xml b/demos/pychan_demo/gui/absolute.xml index faa73c905..0482a90c4 100644 --- a/demos/pychan_demo/gui/absolute.xml +++ b/demos/pychan_demo/gui/absolute.xml @@ -3,7 +3,7 @@ background_image="gui/backgrounds/stripe.png" border_size="2">