Liste des nouveautés
Added: Module support for the compiler
Added: Runtime library
Added: Dialog library
Added: GTK3 subsystem for Linux
Added: DirectX11 subsystem for Windows
Added: JoystickName(), JoystickZ()
Added: Optional #PB_Relative flag to JoystickX/Y/Z() to have more precise values
Added: Optional pad number to JoystickX/Y/Z() to handle more complex gamepads (full support of XBox 360 one for example)
Added: ZoomSprite() now accepts #PB_Default as Width/Height to reset to initial sprite size
Added: 'Color' and 'Alpha' parameter to DisplayTransparentSprite()
Added: ClipSprite() now support #PB_Default for individual parameter
Added: #PB_Sprite_PixelCollision flag to CreateSprite(), LoadSprite() to enable pixel collision
Added: Zoom support to SpritePixelCollision() and SpriteCollision()
Added: OpenGL support for SpriteBlending() (warning, it just wraps OpenGL mode, so it can behave different than DirectX)
Added: 32-bit support for SpriteOutput() for DX and OpenGL
Added: #PB_EventType_Focus and #PB_EventType_LostFocus support to EditorGadget()
Added: #PB_EventType_RightClick support to ListViewGadget()
Added: #PB_EventType_Change support to PanelGadget() and DateGadget()
Added: #Prototype support to Defined()
Added: All Init() functions can be called more than once without issue (like InitSound(), InitNetwork() etc.)
Added: #PB_FileSystem_Force support to DeleteFile()
Added: #PB_FileSystem_NoExtension support to GetFilePart()
Added: Back color parameter to CreateImage()
Added: Gosub are now allowed again inside Procedure
Added: #PB_Entity_NbSubEntities to GetEntityAttribute()
Added: MeshIndexCount(), SetRenderQueue(), FetchEntityMaterial(), GetMeshData(), SetMeshData()
Added: CPUName(), Un/BindEvent(), Un/BindGadgetEvent(), Un/BindMenuEvent()
Added: Previous location is displayed when declaring a structure, interface, prototype or procedure twice.
Added: 2 license files to easy add the needed information when shipping PB programs (see reference documentation)
Added: Bool() is now evaluated at compile time if the whole expression is constant
Added: Debugger check for SortStructuredList() and SortList() to ensure the specified list is of correct type
Added: Linux executables created on new distribution should still work on old linux.
Optimized: Pixel sprite collision routines are now much faster with DirectX
Optimized: More peephole optimizations on x64 assembler output
Optimized: Faster compilation for big programs
Optimized: Linux build server have been upgraded, now using a better GCC which produce better code.
Changed: renamed ZoomSprite3D() to ZoomSprite()
Changed: renamed TransformSprite3D() to TransformSprite()
Changed: renamed RotateSprite3D() to RotateSprite()
Changed: renamed Sprite3DQuality() to SpriteQuality()
Changed: renamed Sprite3DBlending() to SpriteBlending()
Changed: Packer plugin constant renamed to #PB_PackerPlugin_XXX
Updated: WebGadget() on Windows doesn't needs ATL.dll anymore
Updated: zlib to 1.2.7
Updated: pqlib (PostgreSQL) to 9.2.4
Updated: SCNotification scintilla structure
Removed: Mozilla ActiveX support for WebGadget() on Windows as the last ActiveX version is way too old (2005)
Removed: Sprite3D library (merged with regular sprite library)
Removed: Palette library (outdated)
Removed: DisplayTranslucentSprite() -> replaced with 'Alpha' parameter for DisplayTransparentSprite()
Removed: DisplaySolidSprite() -> replaced with 'Color' parameter for DisplayTransparentSprite()
Removed: DisplayRGBFilter() -> can be replaced with a zoomed sprite with color
Removed: DisplayShadowSprite() -> can be replaced with DisplayTransparentSprite() with color
Removed: StartSpecialFX(), StopSpecialFX(), DisplayAlphaSprite(), ChangeAlphaIntensity(), UseBuffer()
Removed: Carbon subsystem on OS X, it was too old be used with new libs
Added: Runtime library
Added: Dialog library
Added: GTK3 subsystem for Linux
Added: DirectX11 subsystem for Windows
Added: JoystickName(), JoystickZ()
Added: Optional #PB_Relative flag to JoystickX/Y/Z() to have more precise values
Added: Optional pad number to JoystickX/Y/Z() to handle more complex gamepads (full support of XBox 360 one for example)
Added: ZoomSprite() now accepts #PB_Default as Width/Height to reset to initial sprite size
Added: 'Color' and 'Alpha' parameter to DisplayTransparentSprite()
Added: ClipSprite() now support #PB_Default for individual parameter
Added: #PB_Sprite_PixelCollision flag to CreateSprite(), LoadSprite() to enable pixel collision
Added: Zoom support to SpritePixelCollision() and SpriteCollision()
Added: OpenGL support for SpriteBlending() (warning, it just wraps OpenGL mode, so it can behave different than DirectX)
Added: 32-bit support for SpriteOutput() for DX and OpenGL
Added: #PB_EventType_Focus and #PB_EventType_LostFocus support to EditorGadget()
Added: #PB_EventType_RightClick support to ListViewGadget()
Added: #PB_EventType_Change support to PanelGadget() and DateGadget()
Added: #Prototype support to Defined()
Added: All Init() functions can be called more than once without issue (like InitSound(), InitNetwork() etc.)
Added: #PB_FileSystem_Force support to DeleteFile()
Added: #PB_FileSystem_NoExtension support to GetFilePart()
Added: Back color parameter to CreateImage()
Added: Gosub are now allowed again inside Procedure
Added: #PB_Entity_NbSubEntities to GetEntityAttribute()
Added: MeshIndexCount(), SetRenderQueue(), FetchEntityMaterial(), GetMeshData(), SetMeshData()
Added: CPUName(), Un/BindEvent(), Un/BindGadgetEvent(), Un/BindMenuEvent()
Added: Previous location is displayed when declaring a structure, interface, prototype or procedure twice.
Added: 2 license files to easy add the needed information when shipping PB programs (see reference documentation)
Added: Bool() is now evaluated at compile time if the whole expression is constant
Added: Debugger check for SortStructuredList() and SortList() to ensure the specified list is of correct type
Added: Linux executables created on new distribution should still work on old linux.
Optimized: Pixel sprite collision routines are now much faster with DirectX
Optimized: More peephole optimizations on x64 assembler output
Optimized: Faster compilation for big programs
Optimized: Linux build server have been upgraded, now using a better GCC which produce better code.
Changed: renamed ZoomSprite3D() to ZoomSprite()
Changed: renamed TransformSprite3D() to TransformSprite()
Changed: renamed RotateSprite3D() to RotateSprite()
Changed: renamed Sprite3DQuality() to SpriteQuality()
Changed: renamed Sprite3DBlending() to SpriteBlending()
Changed: Packer plugin constant renamed to #PB_PackerPlugin_XXX
Updated: WebGadget() on Windows doesn't needs ATL.dll anymore
Updated: zlib to 1.2.7
Updated: pqlib (PostgreSQL) to 9.2.4
Updated: SCNotification scintilla structure
Removed: Mozilla ActiveX support for WebGadget() on Windows as the last ActiveX version is way too old (2005)
Removed: Sprite3D library (merged with regular sprite library)
Removed: Palette library (outdated)
Removed: DisplayTranslucentSprite() -> replaced with 'Alpha' parameter for DisplayTransparentSprite()
Removed: DisplaySolidSprite() -> replaced with 'Color' parameter for DisplayTransparentSprite()
Removed: DisplayRGBFilter() -> can be replaced with a zoomed sprite with color
Removed: DisplayShadowSprite() -> can be replaced with DisplayTransparentSprite() with color
Removed: StartSpecialFX(), StopSpecialFX(), DisplayAlphaSprite(), ChangeAlphaIntensity(), UseBuffer()
Removed: Carbon subsystem on OS X, it was too old be used with new libs
MODULE
Les modules permettent de protéger du code pour le réutiliser plus facilement.
Code : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | ; ; Quick module test ; ; All item declared in the module definition will be public ; Works for everything like array, list, structure, macro etc. ; DeclareModule Vehicule #VehiculeConstant = 10 #VehiculeConstant2 = 20 Declare NewAuto(Flags) Declare NewBoat() EndDeclareModule ; This procedure will be redefined in the module without issue ; Procedure Init() Debug "Main Init" EndProcedure ; The module implementation ; Only residents definition will be available here ; Module Vehicule #PrivateConstant = 30 Procedure Init() Debug "Vehicule Init" EndProcedure Procedure NewAuto(Flags) Init() Debug "NewAuto" EndProcedure Procedure NewBoat() Init() Debug "NewBoat" EndProcedure EndModule Init() Vehicule::NewAuto(Vehicule::#VehiculeConstant) Vehicule::NewBoat() ; Or with module import ; UseModule Vehicule NewAuto(#VehiculeConstant) NewBoat() HideModule Vehicule |
Code : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | Runtime Procedure RuntimeProcedure() Debug "RuntimeProcedure" EndProcedure RuntimeProcedure() Debug GetRuntimeInteger("RuntimeProcedure()") Debug @RuntimeProcedure() Runtime Enumeration #Runtime1 #Runtime2 #Runtime3 EndEnumeration Debug GetRuntimeInteger("#Runtime2") Debug GetRuntimeInteger("#Runtime3") Procedure TestProce() EndProcedure Runtime TestProce() #AnotherConstant = 54 jiji.l = 10 *Pointer = 52 Runtime TestProce(), #AnotherConstant, jiji, *Pointer Debug GetRuntimeInteger("jiji") jiji.l = 20 Debug GetRuntimeInteger("jiji") Debug GetRuntimeInteger("*Pointer") Debug IsRuntime("jiji") Debug IsRuntime("jiji2") ;Point.Point ;Runtime Point DeclareModule Common Enumeration Test #fred = 15 EndEnumeration EndDeclareModule Module Common Runtime Procedure RuntimeModuleProcedure() Debug "RuntimeModuleProcedure" Debug @RuntimeModuleProcedure() EndProcedure RuntimeModuleProcedure() EndModule Debug GetRuntimeInteger("Common::RuntimeModuleProcedure()") Enumeration Common::Test #fred2 EndEnumeration Debug Common::#fred Debug Common::#fred2 Runtime Common::#fred Debug GetRuntimeInteger("Common::#fred") |
Code : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | <?xml version="1.0"?> <!-- Window --> <window id="0" name="hello" text="Window" label="TestDialog" width="320" height="10" flags="#PB_Window_SizeGadget|#PB_Window_MaximizeGadget|#PB_Window_MinimizeGadget"> <splitter width="300" height="500"> <hbox> <checkbox name="checkbox1" text="Run only one Instance" disabled="yes" Flags=""/> <progressbar text="Vrey vreyv rye"/> <trackbar text="Ole" invisible="no" Flags="#PB_TrackBar_Ticks|#PB_TrackBar_Ticks|#PB_TrackBar_Ticks" width="150"/> <option text="option 1" name="option1" onevent="CheckBoxEvent()"/> <option text="option 2"/> </hbox> <vbox> <listview text="option 3" height="50"/> <button text="Ole 2"/> <listicon text="option 4" height="50"/> <string text="string content"/> <editor text="editorgadget" height="50"/> <text text="Text gadget"/> </vbox> </splitter> </window> |
Code : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | Runtime Procedure CheckBoxEvent() Debug "Option 1" EndProcedure Procedure Main() LoadXML(0, "ui.xml") CreateDialog(0) OpenXMLDialog(0, 0, "hello") HideWindow(0, 0) While WaitWindowEvent() <> #PB_Event_CloseWindow : Wend EndProcedure Main() |