This is 3.6.2 - Beta 3
Includes all the fixes from v3.6.1 - P8
Own changes:
Editor:
- In "Start New Game Wizard" game template selection now displays template's description right in the dialog.
- "Game statistics" now have Ctrl + F2 shortcut instead of F2.
- F2 can be used for starting editing names of items in the Project Tree (ones that support that) and folders in the Sprite Manager.
- Added a multiline Text edit window for Button and Label controls, that may be called by Ctrl+E, from context menu, or by pressing "..." button of the Text property in the Properties grid.
- In Room Editor, during any area drawing mode Ctrl + LMB now works as area picker regardless of the currently selected tool.
- Editor will now report any missing script functions that are assigned to events but not present in script as warnings when compiling the game.
- Fixed font preview not updating after importing a new font over. (regression in 3.6.2 Beta)
- Fixed editing Color property of multiple selected GUI controls.
Scripting:
- Dynamic arrays now have Length readonly property that returns their number of elements.
Script API:
- Events eEventGUIMouseDown and eEventGUIMouseUp now get additional parameters: mouse button, mouse x and y positions.
- Added RestoredSaveInfo struct which contains information about game save's contents,
- Support "validate_restored_save" callback, which lets user to validate restored saves with mismatching data and request cancellation or continuation of restoring this save.
- Added FileSortStyle and SortDirection enum, and File.GetFiles() function that returns a dynamic array of filenames found using certain pattern, and optionally sorted by name or time, in ascending or descending order.
- Added SaveGameSortStyle enum and Game.GetSaveSlots() function that returns a dynamic array of save slot indexes, optionally sorted in certain way.
- Added Game.ScanSaveSlots() that scans a range of game saves and tests them for compatibility, using "validate_restored_save" too if it's present in user script. This action is not run immediately, but is scheduled to be executed after current script ends. It reports of scanning completion by sending eEventSavesScanComplete event.
- Added optional "fileSortStyle" and "sortDirection" parameters to ListBox.FillDirList().
- Added optional saveSortStyle and sortDirection parameters to ListBox.FillSaveGameList().
- Added ListBox.FillSaveGameSlots(), which initializes a list of saves from a dynamic array of save slot indexes.
- Added Object.DestinationX and DestinationY properties, complementing ones in Character.
- Added SendEvent() function that allows to trigger "on_event" function calls in script. Special event value eEventUserEvent may be used as a base index for user-defined events.
- Add SaveComponentSelection enum and game option OPT_SAVECOMPONENTSIGNORE, which lets to skip certain components when saving or restoring a game. This has dual purpose: reduce number of things in game that may break older saves by simply not having them in a save, and also reducing the size of game saves on disk (e.g. in case of dynamic sprites). Note that all things that were not restored from the save will retain their current state.
Engine:
- Engine now potentially supports reading saves made in older game versions with different content, so long as these saves have less data in any given type (i.e. less Characters, or less controls on a certain GUI, or less variables in script, and so forth). This feature is enabled by having a special "validate_restored_save" function anywhere in the game script, that accepts an argument of type RestoredSaveInfo. RestoredSaveInfo contains various information about the restored save, and "Cancel" property, that must be explicitly set to "false" in script in order to allow to restore such save.
- Engine supports returning to previously saved rooms which have less script data. It's important to remember though that it does no validation of restored room state on its own.
- Engine no longer quits with error in case a script function assigned to a Room event is missing. Logs warnings about missing script functions assigned to any events.
- Support calling StopDialog() inside a dialog script, that will schedule dialog's stop command at the end of the current option script.
- Added new config setting to "access" section called "textreadspeed" which lets to override game's text reading speed parameter.
- Fixed calling Dialog.Start() inside a dialog script would create a nested "dialog state", which could eventually lead to internal mistakes and program stack overflow. Dialog.Start() will now schedule a proper dialog topic switch, equivalent to "goto-dialog" command.
- Fixed Character may get stuck in "move without animating" state if Move called before Walk. (regression in 3.6.2 Beta)
- Fixed 8-bit room bgs in 32-bit game are imported filled with "magenta". (regression in 3.6.2 Beta)
- Fixed crash on game quit if there was any queued music. (regression in 3.6.2 Beta)
WinSetup:
- Added "Text reading speed" to "Accessibility" settings tab.
- Fixed setup could save wrong setting values in categories located on other tabs, if player never opened these tabs.
- In "disabled" section of config "access_skipstyle" setting lets disable all options in setup related to the speech and text skipping.