Skip to content

Commit

Permalink
Merge pull request #903 from RPTools/release-1.5.7
Browse files Browse the repository at this point in the history
Release 1.5.7 back to master.
  • Loading branch information
JamzTheMan authored Nov 15, 2019
2 parents f020ee4 + ee46e10 commit 1115146
Show file tree
Hide file tree
Showing 100 changed files with 3,471 additions and 1,333 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ Thumbs.db
# Others
################################################################################
.gradle
.gradletasknamecache
build/
/bin/
target/
Expand Down
97 changes: 92 additions & 5 deletions CHANGE_LOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,90 @@
Maptool 1.5.7
=====

**Highlights**
- New accessibility features allows the user to apply [Perlin noise](https://en.wikipedia.org/wiki/Perlin_noise) to tiled textures to reduce obvious patterning.
- New user preference (Edit -> Preferences -> Application -> Performance) for Max Frame Rate allows users to set a desired Max Frame Rate.
- More updated macro functions for improved performance and reliability.
- New GM macro panel for GM only macros. These macros are saved as part of the campaign.
- Bug fixes!

Enhancements
-----
- [#878][i878] ISO 8601 time date field added to result of `getInfo("client")`.
- [#872][i872] Metadata added to JSON returned from `getMacroProps` function to add in external managment of macros.
- [#850][i850] New macro function `log.trace` added for log messages at `TRACE` level.
- [#848][i848] File Sync Directory preference setting adding to `getInfo("client")` result.
- [#829][i829] New macro function `capitalize` will change the first character at each word break to upper case. e.g. "jolly green giant" -> "Jolly Green Giant".
- [#810][i810] New macro function `playClip` more suited for short sound FX clips. New convenience function `defineAudioSource` to allow you to assign a nickname to audio sources and refer to the nickname in the audio functions. Two existing audio functions were renamed as part of the other changes: `stopStream` -> `stopSound`, `getStreamProperties` -> `getSoundProperties`.
- [#804][i804] Chat notification flash now picks flash color based on task bar color.
- [#801][i801] Macro function `getTokenStates` now accepts Token ID and Map Name parameters.
- [#790][i790] New `execFunction` macro that works like `execLink` but is used for built-in macro functions and UDFs.
- [#784][i784] Macro function `json.toVars` now accepts JSON arrays as well as objects.
- [#782][i782] Macro function `broadcast` no accepts "not-gm", "not-self" and "not-gm-self" as targets.
- [#766][i766] New perlin noise overlay on tiled textures to reduce visible repetition.
- [#761][i761] Bulk macro function changes.
- These functions no longer force whole token updates when used: addToInitiative, setInitiative, setInitiativeHold, setBar, setBarVisible, setName, setGMName, setHalo, setTokenOpacity, setTokenImage, setTokenPortrait, getTokenHandout, setLabel, resetProperty, setTerrainModifier, setVisible, setOwnerOnlyVisible, setAlwaysVisible, setTokenVBL
- These functions now accept additional Token ID and Map Name parameters: setBar, getBar, isBarVisible, setBarVisible, addToInitiative, setInitiative, setInitiativeHold
- [#745][i745] Macro functions `getTokens` and `getTokenNames` now take optional Light condition for getting tokens with lights.
- [#642][i642] New GM macro panel can be opened from the Window menu. Macros on the GM panel are not visible to players.

Bug Fixes
-----
- [#883][i883] Command key shortcuts on MacOS not working. Fixed.
- [#874][i874] `REST.delete` did not support a header and payload. Fixed.
- [#846][i846] `getInfo("server")` was returning true/false instead of 1/0 for "hosting server". Fixed.
- [#831][i831] Macro function `json.path.read` was returning numbers as strings. Fixed.
- [#822][i822] `playStream` was ignoring stream parameters set with `editStream`. Fixed.
- [#820][i820] Functions `execLink` and `execFunction` were not running immediately on local client. Fixed.
- [#814][i814] Some `update` keywords for `copyToken` were producing exceptions. Fixed. Alternate keywords *tokenPortrait* and *tokenHandout* added
- [#803][i803] `getStreamProps` was returning malformed JSON. Fixed.
- [#800][i800] Incorrect tooltip on Chat Notification Background preference. Fixed.
- [#788][i788] Player clients were showing the last campaign file they had loaded in the title bar when connected to servers. Fixed.
- [#786][i786] Bugs with the various bar functions returning incorrect error messages or no error when passed a bad bar name. Fixed.
- [#775][i775] `json.path.read` was returning invalid JSON for JSON arrays of objects. Fixed.
- [#769][i769] Tokens created with `copyToken` could not be modified in same macro without jumping through hoops. Fixed.
- [#767][i767] A recent change to improve program responsiveness had capped frame rate at 30 fps making for jerky map panning. Default is now 60 fps and can be adjusted in preferences under Application -> Performance -> Max Frame Rate. Note either reloading the current campaign or restarting MapTool is required after making a change.
- [#740][i740] Selecting New Map in the Library image pane with no image underneath would thrown an exception. Fixed.
- [#687][i687] The table functions `addTableEntry`, `createTable`, `setTableImage` and `setTableEntry` if passed an empty `AssetID` string would incorrectly put an empty "Asset://" into the entries asset id field. Fixed. `getTableImage` would thrown an exeption if no table image was set. Fixed.
- [#640][i640] Workaround for errors which occured when three monitors are in use. Related exceptions caught and information is logged.
- [#627][i627] Version check on MapTool startup should no longer prompt for updates when using release candidates.
- [#529][i529] Smileys are now working again.

[i883]: https://github.com/RPTools/maptool/issues/883
[i878]: https://github.com/RPTools/maptool/issues/878
[i874]: https://github.com/RPTools/maptool/issues/874
[i872]: https://github.com/RPTools/maptool/issues/872
[i850]: https://github.com/RPTools/maptool/issues/850
[i848]: https://github.com/RPTools/maptool/issues/848
[i846]: https://github.com/RPTools/maptool/issues/846
[i831]: https://github.com/RPTools/maptool/issues/831
[i829]: https://github.com/RPTools/maptool/issues/829
[i822]: https://github.com/RPTools/maptool/issues/822
[i820]: https://github.com/RPTools/maptool/issues/820
[i814]: https://github.com/RPTools/maptool/issues/814
[i810]: https://github.com/RPTools/maptool/issues/810
[i804]: https://github.com/RPTools/maptool/issues/804
[i803]: https://github.com/RPTools/maptool/issues/803
[i801]: https://github.com/RPTools/maptool/issues/801
[i800]: https://github.com/RPTools/maptool/issues/800
[i790]: https://github.com/RPTools/maptool/issues/790
[i788]: https://github.com/RPTools/maptool/issues/788
[i786]: https://github.com/RPTools/maptool/issues/786
[i784]: https://github.com/RPTools/maptool/issues/784
[i782]: https://github.com/RPTools/maptool/issues/782
[i775]: https://github.com/RPTools/maptool/issues/775
[i769]: https://github.com/RPTools/maptool/issues/769
[i767]: https://github.com/RPTools/maptool/issues/767
[i766]: https://github.com/RPTools/maptool/issues/766
[i761]: https://github.com/RPTools/maptool/issues/761
[i745]: https://github.com/RPTools/maptool/issues/745
[i740]: https://github.com/RPTools/maptool/issues/740
[i687]: https://github.com/RPTools/maptool/issues/687
[i642]: https://github.com/RPTools/maptool/issues/642
[i640]: https://github.com/RPTools/maptool/issues/640
[i627]: https://github.com/RPTools/maptool/issues/627
[i529]: https://github.com/RPTools/maptool/issues/529

Maptool 1.5.6
=====
Emergency fix for MacOS. Otherwise the same as 1.5.5.
Expand Down Expand Up @@ -318,7 +405,7 @@ Enhancements
* [getRolled][igrd]()
* [getNewRolls][ignr]()
* [clearRolls][icrl]()
* [#406][i406] - New [dice expression](http://www.lmwcs.com/rptools/wiki/Dice_Expressions) **XdYdhZ** (drop highest) and 7 others.
* [#406][i406] - New [dice expression](http://www.lmwcs.com/rptools/wiki/Dice_Expressions) **XdYdhZ** (drop highest) and 7 others.
* [#355][i355] - Macro Editor details tab reorganized to give some fields more room. Macro button tooltip entry field made into a larger text area with HTML highlighting. Checkbox to enable/disable hotkey display on button. UDFs now show in auto-complete of macro editor with their tooltip as help text.
* [#426][i426] - New Line & Radius templates that start at cells. New icons for all template types.
* [#424][i424] - Auto-completion in macro editor now works even if complete function name has already been entered.
Expand All @@ -330,7 +417,7 @@ Enhancements
* [#106][i106] - Reset Size added to right-click menu for tokens/stamps.
* [#299][i299] - Mouse pointer now visible when dragging tokens.
* [#389][i389] - File -> Export -> Campaign File As... now supports converting back to non-decimal map units-per-cell values.
* [#332][i332] - Added support for multiple personal lights and setting color for personal lights.
* [#332][i332] - Added support for multiple personal lights and setting color for personal lights.

[igrd]: http://www.lmwcs.com/rptools/wiki/getRolled
[ignr]: http://www.lmwcs.com/rptools/wiki/getNewRolls
Expand Down Expand Up @@ -389,8 +476,8 @@ Enhancements



[i50]: https://github.com/RPTools/maptool/issues/50
[i107]: https://github.com/RPTools/maptool/issues/107
[i50]: https://github.com/RPTools/maptool/issues/50
[i107]: https://github.com/RPTools/maptool/issues/107
[i189]: https://github.com/RPTools/maptool/issues/189
[i255]: https://github.com/RPTools/maptool/issues/255
[i278]: https://github.com/RPTools/maptool/issues/278
Expand Down Expand Up @@ -461,7 +548,7 @@ A new shift+ctrl+spacebar command along with a new pointer image is now availabl
* New RESTful functions getRequest & postRequest to send GET & POST requests to a URI. *Note: You must first turn access on in Preferences for these macro functions to work.
* New function exportData exportData(FilePath file, String data, boolean appendToFile) which saves string data to external file.
* New function getEnvironmentVariable(String name), Returns the value stored in the Environment Variable.
* New menu option added to the "Connections" window. Right clicking a player will offer a "Whisper" command that prepopulates the chat window with a whisper macro.
* New menu option added to the "Connections" window. Right clicking a player will offer a "Whisper" command that prepopulates the chat window with a whisper macro.
* [#237][i237] - Added support to use shift-enter to insert newlines into the command entry box (also known as the chat entry box)
* [#239][i239] - MapToolScriptTokenMaker now handles function names with . notation and dynamically pulls in all functions names. TokenMakerMaker no longer needs to be ran upon changes to MTScript.
* [#240][i240] - Macro Editor now has Auto-Completion for macro functions! A brief description and summary can be displayed (these will be added as time permits)
Expand Down
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
| Branch | Travis | AppVeyor |
| :--- | :--: | :--: |
| Branch | Travis | AppVeyor | Localization |
| :--- | :--: | :--: | :--: |
| master | [![Build Status](https://travis-ci.org/RPTools/maptool.svg?branch=master)](https://travis-ci.org/RPTools/maptool) | [![Build status](https://ci.appveyor.com/api/projects/status/1fccyq1tqp8py6c5/branch/master?svg=true)](https://ci.appveyor.com/project/rptools-automation/maptool/branch/master)
| develop | [![Build Status](https://travis-ci.org/RPTools/maptool.svg?branch=develop)](https://travis-ci.org/RPTools/maptool) | [![Build status](https://ci.appveyor.com/api/projects/status/1fccyq1tqp8py6c5/branch/develop?svg=true)](https://ci.appveyor.com/project/rptools-automation/maptool/branch/develop)
| develop | [![Build Status](https://travis-ci.org/RPTools/maptool.svg?branch=develop)](https://travis-ci.org/RPTools/maptool) | [![Build status](https://ci.appveyor.com/api/projects/status/1fccyq1tqp8py6c5/branch/develop?svg=true)](https://ci.appveyor.com/project/rptools-automation/maptool/branch/develop) | [![Crowdin](https://badges.crowdin.net/maptool/localized.svg)](https://crowdin.com/project/maptool)|



Expand Down
7 changes: 6 additions & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -235,7 +235,7 @@ dependencies {
// For syntax highlighting in macro editor
implementation group: 'com.fifesoft', name: 'rsyntaxtextarea', version: '3.0.2' // https://mvnrepository.com/artifact/com.fifesoft/rsyntaxtextarea
implementation group: 'com.fifesoft', name: 'rstaui', version: '3.0.0' // https://mvnrepository.com/artifact/com.fifesoft/rstaui
implementation group: 'com.fifesoft', name: 'autocomplete', version: '3.0.0' // https://mvnrepository.com/artifact/com.fifesoft/autocomplete
implementation group: 'com.fifesoft', name: 'autocomplete', version: '3.0.2' // https://mvnrepository.com/artifact/com.fifesoft/autocomplete

// For simple xml work in Hero Lab integration
implementation group: 'com.jcabi', name: 'jcabi-xml', version: '0.18.1' // https://mvnrepository.com/artifact/com.jcabi/jcabi-xml
Expand Down Expand Up @@ -265,6 +265,11 @@ dependencies {
// using jitpack.io for now
// compile ('net.rptools.dicelib:dicelib:1.5.2')
implementation 'com.github.RPTools:dicelib:1.5.5'


// Noise Generator
implementation 'com.github.cwisniew:NoiseLib:1.0.0-rc3'

}


Expand Down
3 changes: 3 additions & 0 deletions crowdin.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
files:
- source: /src/main/resources/net/rptools/maptool/language/i18n.properties
translation: /%original_path%/%file_name%_%two_letters_code%.%file_extension%
34 changes: 20 additions & 14 deletions doc/Code_Style_and_Guidelines.md
Original file line number Diff line number Diff line change
@@ -1,20 +1,26 @@
# Code Style and Guidelines

Please follow the following rules when working on MapTool. Failure to follow these will typically result in your patch being rejected.
Please observe the following rules when working on MapTool. Failure to do so will typically result in your pull request being rejected.

For now patches should be posted to the Testers forum. Access to that forum is by request only; send a PM to [jfrazierjr](http://forums.rptools.net/memberlist.php?mode=viewprofile&u=773) here on the [forums](http://forums.rptools.net/) and he'll add you to the group. You may then visit that hidden forum and review information on how to post patches for submission.

1. Thou shalt always highlight the content of any Java source code thee hath modified and select **Source -> Format**. Note: this requires that the user reset the line length in the Eclipse properties: Trevor wants the line length set to 200 characters. *(But see the attached preferences import file as the formatting settings are implemented there.)*
2. Thou shalt always select **Source -> Reorganize Imports.**
3. Thou shalt always submit code that includes Javadoc comments for public classes and methods. (T'would be nice to require full Javadoc for everything, but alas, that is unlikely.)
4. Thou shalt always use the `/* */` style of comments in front of classes and methods and may use single-line comments in front of member variables and small snippets of code, but **See Rule #3**!
5. Thou shalt always use parameter names different from member field names so that disambiguation using **this** is not necessary. *(Exception: code generated by Eclipse's Source menu items is exempt from this requirement as a productivity enhancement.)*
6. Thou shalt always clearly delineate private constructors with comments so that those who come after thee may retain thy sanity.
7. Thou shalt never use hard-coded strings in code when a property from an external file can be used. (In MapTool's case, this means calling `I18N.getText(propertyKey)` and adding a definition for the `propertyKey` to `i18n.properties`. Also, all of the `show*()` methods in MapTool, such as `showError()` and `showWarning()`, take `propertyKeys` as well as strings -- only use `propertyKeys`!)
8. Thou shalt always use `static final String` when hard-coded strings _are_ appropriate. Examples include resources that are embedded inside the MapTool JAR, such as **unknown.png** -- the question mark image. Other image names that may be considered part of the "theme", such as toolbar images, button images, and so forth, should be retrieved from an images property file; I propose `images.properties` since we already have `sounds.properties`. A string in the code should reference a pathname in the property file.
9. Thou shalt report all exceptions that are true errors. `InterruptedException` while waiting for a timer can be ignored, for example. But all other errors should be handled by calling `MapTool.showError(propertyKey)` or similar and passing both a `propertyKey` and the `Throwable` object representing the exception. Note that the various "show" methods already provide logging to the `.maptool/log.txt` file, but separate logging should be performed in the class if possible, since the XML configuration is an all-or-nothing for `net.rptools.maptool.client.MapTool`.
10. Thou shalt always use defined properties instead of hard-coded strings when possible. Such as `File.separator` instead of **"/"** and now `AppActions.menuShortcut` instead of **"ctrl"**.
1. The [Google Java Style Guide](https://google.github.io/styleguide/javaguide.html) is incorporated by reference. Submitted code shall follow those guidelines unless modified by one or more of the following rules.
2. Use parameter names different from member field names so that disambiguation using **this** is not necessary. This rule is relaxed for simple short methods (e.g. setters).
3. Avoid hard-coded strings in code when a property from an external file can be used. In MapTool's case, this means calling `I18N.getText(propertyKey)` and adding a definition for the `propertyKey` to `i18n.properties`. Also, all of the `show*()` methods in MapTool, such as `showError()` and `showWarning()`, take `propertyKeys` as well as strings -- only use `propertyKeys`!)
4. Use `static final String` when hard-coded strings _are_ appropriate. Examples include resources that are embedded inside the MapTool JAR, such as **unknown.png** -- the question mark image.
5. Report to the user all exceptions that are true errors. `InterruptedException` while waiting for a timer can be ignored, for example. But all other errors should be handled by calling `MapTool.showError(propertyKey)` or similar and passing both a `propertyKey` and the `Throwable` object representing the exception. Note that the various "show" methods already provide logging to the `.maptool/log.txt` file.
6. Use the language-defined static variables instead of hard-coded strings when possible. Examples include `File.separator` instead of **"/"** and `AppActions.menuShortcut` instead of **"ctrl"**.

There are surely others that you (the contributors) may want added and that we (the dev team) determine to be acceptable. Please speak up. :)

An exported set of Eclipse Preferences as a ZIP file is available [here](http://forums.rptools.net/download/file.php?id=4151). Unpack the ZIP and use **File > Import...** to read them. These preferences only include Java appearance and style-related settings, plus Task tag definitions. (Keyboard shortcuts and other settings are left untouched.)
## Formatting Source Files

### Formatting with your IDE
Most IDEs include some Source Formatting functionality and using that functionality can make following the guidelines easier. You will need to ensure that using any such functionality does follow the guidelines.

Example for Eclipse:
* Source -> Format
* Source -> Reorganize Imports

An exported set of Eclipse Preferences can be found in the GitHub repo under `build-resources/eclipse`. Other IDEs/editors may be able to import those preference files. If you create one for your preferred environment, you can always create a Pull Request to submit it to the MapTool repo.

### Formatting with Spotless
The gradle build file for MapTool includes the Spotless targets: spotlessCheck and spotlessApply. Make use of them by doing a `gradlew spotlessCheck` and/or `spotlessApply` prior to committing or pushing your changes. Spotless will enforce the majority of the rules but not all.
Loading

0 comments on commit 1115146

Please sign in to comment.