Creation/Dev/Releases/Client/4.206

From Graal Bible

Release date

December 21st 2006 for Mac, Linux and Windows

New Features

There are several improvements for Graal3D and the new flying technology which will be announced once released.

  • Graphics
    • stretched graphics are drawn with better quality (on Windows)
    • tiles drawing has been made faster so that level switching is taking less time
    • zooming of players/npc has been improved so that sub-objects are displayed on the correct position
    • better clipping in the GUI on Windows - when using polygons or stretched rotated graphics then they are not overlapping other GUI controls anymore
    • 24bit are correctly displayed in alpha-transparent mode (mode 1) by default (as long as alpha is 1)
    • Windows: you can let Graal use OpenGL instead of DirectX by using the command line option "-opengl"; normally the OpenGL mode is only needed for Graal3D, but it might also be work better than DirectX on some machines; the OpenGL mode is using more resources though
  • GUI
    • GuiMLTextCtrl:
      • support for more html tags:
        <ul>, <ol>, <li>, <hr>, <h1>...<h6>
      • uppercase tags are accepted now
      • variable htmlcompatibility=true for using normal html text (currently only sets ignorelinebreaks=true if in compatibility mode)
      • improved display of the body-background color so that it fills the whole parent color
      • display of body-background images
    • GuiShowImgCtrl:
      • when displaying a polygon then mouse clicks will only be accepted if it clicked on the actual polygon, this is e.g. used for the cards selection in the cards games
    • GuiTreeViewCtrl:
      • variable expandOnDoubleclick=false will disable nodes from expanding on double-click
    • GuiControl:
      • variable clipMove=false: allows the control to be moved outside of the parent bounds
  • Scripting
    • showimgs/findimgs now have a "spin" variable similar to projectiles, good for automatic rotation of images
    • new function waitfor(objectname,eventname,timeout) waits for an event on the specified object (empty -> for ourself) and then returns true; if the parameters are invalid or the timeout has been reached it will stop waiting and return false
    • when you call the function of another object and that function is calling sleep() or waitfor() then it will not return immediatelly anymore - it will instead wait until the called function is correctly returning and then also continue the caller script
    • when a function is not called then it will try to also display the name of the object for which the function didn't exist
    • the timevar2 has full precision on Windows now (was only milliseconds before)
  • General
    • improved login speed (you can faster switch to other servers)
    • it is possible to encode files
    • Linux/Mac: screenshots are saved into the ~/.graal/graal4/screenshots/ subfolder
    • downloading of web images is working better

Bug Fixes

  • Crashing
    • fixed a crashing bug with GuiContextMenuCtrl which still received input after closing
    • fixed crashes when destroying TStaticVar or GuiControls in certain cases
    • fixed crashes on creating objects that had to do with optimizations
    • Linux: fixed problems with X server errors
  • Memory leaks
    • several memory leaks with GuiMLTextCtrl have been fixed
    • requesturl memory leaks have been fixed
  • GUI
    • putting controls inside sub-controls of GuiStretchCtrl is working better
    • when a control uses a non-modal profile then it is not getting the keyboard input anymore when it is created/shown
    • an onPlayerChanges event is invoked when the player has opened a PM from another player, so that scripted player lists can correctly hide the blinking PM icon
  • Graphics
    • fixed shadowed text of different offset than (1,1) on Linux and Mac when not using true type fonts
    • correctly handling tiledefs (addtiledefs/2) with upper case letters
  • Scripting
    • when a sub variable (of any object) is not existing then it will not try to look for player.subvarname anymore