Difference between revisions of "Mod:Utility Functions"
From Roll20 Wiki
Line 50: | Line 50: | ||
<pre data-language="javascript"> | <pre data-language="javascript"> | ||
β | on("change:graphic", function(obj) { | + | on("change:graphic", function(obj, prev) { |
β | var pixels_moved_left = obj.get("left") - | + | var pixels_moved_left = obj.get("left") - prev["left"] |
//How much distance is that? | //How much distance is that? | ||
var distance_moved_left = pixelsToDistance(pixels_moved_x); | var distance_moved_left = pixelsToDistance(pixels_moved_x); |
Revision as of 16:10, 25 April 2013
Roll20 Mod
Use Mods
- Use & Install
- Mod:Script Index & Suggestions
- Short Community Scripts
- Meta Scripts
- User Documentation
- Mod Scripts(Forum)
- Mod Update 2024π
- Macro Guide
Mod Development
Reference
- Objects
- Events
- Chat Events & Functions
- Utility Functions
- Function
- Roll20 object
- Token Markers
- Sandbox Model
- Debugging
Cookbook
Utility functions are provided to help you work with the Roll20 game space consistently. You can call a utility function from anywhere in your scripts (inside any event callback, for example).
Underscore.js
You have access to the Underscore.js library (via the _
global object) to help make things easier. Underscore provides helper functions for things like _.each
(to iterate through an array of objects). Check out the Underscore documentation for more information.
Logging
log(message)
You can use this function to log output to the API console on the Script Editor page. Useful for debugging your scripts and getting a better handle on what's going on inside the API sandbox.
on("change:graphic", function(obj) { log("Heard change for object ID: " + obj.id); )};
Distance Functions
A Note on Distances and Grids in Roll20
In Roll20, a "unit" is always 70 pixels on the screen. The "unit" is the building block that distance and the grid are built on top of. By default:
- 1 unit = 5 ft
- 1 unit = 1 grid square
- Therefore, 5 ft = 1 unit = 1 square
However, the GM can change both the size of the grid, as well as the scale of the distance. 1 unit is always 70 pixels, but the GM could change the settings such that 1 unit is now 10ft (meaning 70 pixels = 10ft), or that each grid space is 2 units (meaning each grid space is now 140 pixels). So it's important to use conversion functions (provided below) to make sure that you're respecting the game's settings.
distanceToPixels(distance) (NOT YET IMPLEMENTED)
returns: Number of pixels (e.g. 70)
This function will take in a distance and convert it to pixels based on the currently active page's settings for scale. It's easiest to think of distance in terms of feet, which is the default distance type. So if you pass in 5 for the distance
parameter, the function would return the number of pixels in 5 feet based on the scale settings (by default this would be 70 pixels).
distanceToPixels(5);//returns 70 distanceToPixels(1);//returns 14 //If the scale is 1 unit = 10ft distanceToPixels(5)//returns 35
pixelsToDistance(pixels) (NOT YET IMPLEMENTED)
returns: Number of distance (e.g. 5)
This function is the opposite of distanceToPixels, and will take in a number of pixels and tell you the distance that those pixels are based on the scale.
on("change:graphic", function(obj, prev) { var pixels_moved_left = obj.get("left") - prev["left"] //How much distance is that? var distance_moved_left = pixelsToDistance(pixels_moved_x); //And what type of distance? getObj("page", Campaign().playerpageid).get("scale_units"); // "ft", "m", "km", etc. });
distanceToUnits(distance) (NOT YET IMPLEMENTED)
returns: Number of units (e.g. 1)
You could use distanceToPixels and do some simple math to figure the number of units (remember: 1 unit is always 70 pixels), but this convenience function is here to help make your life easier.
//Default scale of 1 unit = 5ft distanceToUnits(5);//returns 1 //Modified scale of 1 unit = 10ft distanceToUnits(5);//returns 0.50
unitsToDistance(units) (NOT YET IMPLEMENTED)
returns: Number of distance (e.g. 5)
Opposite of distanceToUnits.