What's new:
- Audio feature enhancement: We had to re-think our approach with this one, trying to keep the ability to play the advertised audio formats from any accessible location, while pushing forward toward having a reliable local cache for faster future playback. The changes are too numerous to explain here but here're the more important aspects:
- A local cache for all (i.e. remotely streamed, locally sourced) played sound is found in the Mote data directory folder under "audio"). This cache runs on details that are stored in a database only accessible through the application.
- This audio folder has several services that maintain the "health" of the audio system. Manually adding audio files while Mote is running will process these files into suitable forms. Manually deleting files will signal the application to cleanup references to this asset, which are now obsolete. If anything was missed, restarting Mote will trigger a similar cleanup process.
- Valid audio assets are indexed using the hash of the original call that played them the first time. Basically, you might end up with multiple copies of the same audio asset if these came from different locations. On the other hand, the assurance is that only one copy of the implied resource from a location will be stored in the audio cache.
- The macro functions to play audio can now accept Windows-style paths e.g. C:\users\user\desktop\audio.ext.
- Strict validation of passed resource links to audio assets: The audio asset's file format must be one of the supported types (wav, mp3, snd, au, aiff, aifc, snd, ogg), and all resource locations passed to the macro functions must either have them in the resource location itself (for local files and files fetched from ftp), or be supplied within the value for alternate ID (as stated above for remote assets accessed through http or https).
- The master volume control now determines the initial audio volume of a played audio asset, if none was set. Furthermore, moving this slider will proportionally affect all sounds on playback, instead of setting everything to the master value, giving more control over the audio environment. Lastly, the master volume setting will persist as a preference in between sessions.
- Code wrappers: similar to the comment function (i.e. <!-- -- >) doing Alt + the (bold) letters representing the following display roll options: e (expanded), g (gm), h (hidden), r (result), u (unformatted), and w (whisper) will perform the appropriate wrap as per context. For s (self), and t (tooltip), there are exceptions, these require Ctrl+Alt, along with their corresponding letters, to generate. This only wraps, and can be undone and redone using the typical undo/redo (i.e. Ctrl+Z/Y). After wrapping, the cursor will always be placed before the wrap option passed. This is so users can easily add other display options to the roll.The contexts are:
- Empty line - this creates an empty wrap ready to be filled e.g. [h: |] (with the '|' representing the cursor).
- Line w/ content - wraps the content e.g. "abcd" becomes "[h: "abcd"]"
- Multiple lines w/ content - wraps the content in code block with the appropriate roll option e.g. [h, code:{ content here }]
- Roll template inserts: As the name suggests, these are inserts for the other roll options. Note that these are "dumb" inserts of the more common forms of the rolls, and will insert the template wherever the caret position is, so use judiciously (nothing that undo/redo cannot fix). After insertion, the caret will be placed before the roll option, (again) so the user can type in other roll options, minding the colon rule. The inserts and corresponding hotkeys are:
- Alt+D - Dialog Roll Option
- Alt+I - If Roll Option w/ Code Block
- Alt+M - Macro Roll Option
- Alt+C - Count Roll Option w/ Code Block
- Alt+F - ForEach Roll Option
- Alt+Ctrl+F - For Roll Option
- Alt+Ctrl+Shift+F - Frame Roll Option
- Alt+T - Token Roll Option w/ Code Block
- Alt+S - Switch Roll Option w/ 1 Case + Code Block
- Alt+W - While Roll Option w/ Code Block
- More improvements to the auto complete behavior for macro editors
- Log Viewer is now a dock. Removed the sizing control and replaced it with the more helpful control to erase a log's content, useful for debugging. There is also a new control to force a manual update from the log file. The current hotkeys (and none other) associated with this viewer are:
- V - when the map is in focus or when the viewer has focus, toggles the viewer' visibility
- Escape - toggles the viewer's visibility when the viewer has focus.
- F5 - force manual update, when the log viewer has focus.
- F7 - clears the active log's contents, both on the viewer, and in file.
- Numbers 1 to 6 - when the viewer is in focus, these switch to a corresponding tab, activating the relative log.
- Logs show a reverse view, with the newest logged event showing up top.
- Moved the location of the logging files and backup logs for a cleaner data directory.
- Started implementing Java 7 I/O where it would be beneficial e.g. campaign loading.
- Shift+Enter is an alternative to F11 in macro editors to execute the macro in context.
- Switched jpg formatting to png in several parts of the old code. A side-effect of this is that previously saved campaign thumbnails are obsolete and unusable. A new thumbnail will be associated with the campaign on the next save done by the user.
- Change to dragging and dropping macros behavior:
- Drag start will "lift" macro properties out of the source
- Drag end will transfer said properties to location
- Enforcement against duplicates is now active.
- Minor improvements to functionality and aesthetics, e.g. larger thumbnails for quick campaign load items.
Bug fixes:
- Fixed macro panel refreshing when switching between library tokens on the same, and different maps.
- Fixed chat notification bugs.
- Fixed issue with path resolution for data directories.
- Proposed fixes for SE tickets for issues #79 - 97 (excepting OS X specific tickets)