Difference between revisions of "Oolite JavaScript Reference: SystemInfo"
(→Special Witchspace Location) |
(Update for 1.75.) |
||
Line 1: | Line 1: | ||
<small>'''Prototype:''' <code>Object</code></small><br /> | <small>'''Prototype:''' <code>Object</code></small><br /> | ||
− | + | '''<code>SystemInfo</code>''' objects provide information about a specific system. <code>SystemInfo</code>s can be retrieved for any system in the current galaxy, but not systems in other galaxies. If you keep a reference to a <code>SystemInfo</code> object after the player goes to a different galaxy, attempts to read properties of the stored <code>SystemInfo</code> will cause an exception. | |
− | + | In interstellar space, <code>system.info</code> refers to a temporary <code>SystemInfo</code> object whose properties cannot be written to. Attempting to read properties of such a temporary <code>SystemInfo</code> after leaving interstellar space will raise an exception. | |
== Properties == | == Properties == | ||
Line 29: | Line 29: | ||
'''Example:''' | '''Example:''' | ||
− | <code> | + | <code>system.info.description = "This is a dull planet."</code> |
− | sets the description of the current planet | + | sets the description of the current planet to “This is a dull planet.” |
− | + | Modified properties are permanent and are stored in saved game. Changes made by scripts override those in ''[[planetinfo.plist]]''. Set a property to <code>null</code> to restore the ''[[planetinfo.plist]]'' value, or the default. | |
== Methods == | == Methods == | ||
Line 58: | Line 58: | ||
=== <code>systemsInRange</code> === | === <code>systemsInRange</code> === | ||
− | |||
function '''systemsInRange'''([range : Number]) : Array | function '''systemsInRange'''([range : Number]) : Array | ||
Returns an array of <code>SystemInfo</code>s in range (default: 7) from the given system. | Returns an array of <code>SystemInfo</code>s in range (default: 7) from the given system. | ||
'''Note:''' will not produce correct results if used in interstellar space. | '''Note:''' will not produce correct results if used in interstellar space. | ||
+ | |||
+ | '''Example:''' | ||
+ | system.info.systemsInRange(5); | ||
'''See also:''' <code>SystemInfo.[[#systemsInRange_2|systemsInRange()]]</code> (which always provides results relative to the current system). | '''See also:''' <code>SystemInfo.[[#systemsInRange_2|systemsInRange()]]</code> (which always provides results relative to the current system). | ||
Line 72: | Line 74: | ||
'''Example:''' | '''Example:''' | ||
− | // This is the actual implementation of <code>[[# | + | // This is the actual implementation of <code>[[#systemsInRange|systemsInRange()]]</code> in 1.75.1. |
− | SystemInfo.systemsInRange = function(range) | + | SystemInfo.prototype.systemsInRange = function systemsInRange(range) |
{ | { | ||
if (range === undefined) | if (range === undefined) | ||
Line 80: | Line 82: | ||
} | } | ||
− | |||
return SystemInfo.filteredSystems(this, function(other) | return SystemInfo.filteredSystems(this, function(other) | ||
{ | { | ||
− | return (other.systemID !== | + | return (other.systemID !== this.systemID) && (this.distanceToSystem(other) <= range); |
}); | }); | ||
} | } | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
[[Category:Oolite JavaScript Reference]] | [[Category:Oolite JavaScript Reference]] |
Revision as of 20:28, 20 February 2011
Prototype: Object
SystemInfo
objects provide information about a specific system. SystemInfo
s can be retrieved for any system in the current galaxy, but not systems in other galaxies. If you keep a reference to a SystemInfo
object after the player goes to a different galaxy, attempts to read properties of the stored SystemInfo
will cause an exception.
In interstellar space, system.info
refers to a temporary SystemInfo
object whose properties cannot be written to. Attempting to read properties of such a temporary SystemInfo
after leaving interstellar space will raise an exception.
Contents
Properties
coordinates
coordinates : Vector3D
(read-only)
The coordinates of the system in light years. e.g. for Lave: (8, 34.6, 0)
. The z component is always zero.
The upper left corner has the coordinate (0, 0, 0)
. Going right increases the x value while going down on the map increases the y value.
Example:
System.infoForSystem(galaxyNumber, 7).coordinates
returns the coordinates of the system with an ID number of 7 in the current galaxy. In the first galaxy that would be the coordinates for Lave: (8, 34.6, 0)
.
galaxyID
galaxyID : Number (read-only nonnegative integer)
The ID number of the galaxy.
systemID
systemID : Number (read-only nonnegative integer)
The ID number of the system.
More properties
In addition to the properties above, you can access many other system properties, using the same keys as planetinfo.plist.
Example:
system.info.description = "This is a dull planet."
sets the description of the current planet to “This is a dull planet.”
Modified properties are permanent and are stored in saved game. Changes made by scripts override those in planetinfo.plist. Set a property to null
to restore the planetinfo.plist value, or the default.
Methods
distanceToSystem
function distanceToSystem(system : SystemInfo) : Number
Returns the distance in light years to another SystemInfo
.
Example:
System.infoForSystem(galaxyNumber, 7).distanceToSystem(System.infoForSystem(galaxyNumber, 8))
If galaxyNumber is 0, this returns 92.8.
routeToSystem
function routeToSystem(system : SystemInfo [, "OPTIMIZED_BY_JUMPS" | "OPTIMIZED_BY_TIME"] ) : Object
Returns a dictionary containing the route information to another SystemInfo
. The dictionary contains the array of system IDs that belong to the route
found, the distance
and the time
corresponding to said route. Takes the optional parameter "OPTIMIZED_BY_JUMPS"
(default) or "OPTIMIZED_BY_TIME"
to calculate least number of jumps or fastest transit time routes respectively.
Example:
var myRoute = System.infoForSystem(galaxyNumber, 7).routeToSystem(System.infoForSystem(galaxyNumber, 8)) myRoute.route myRoute.distance myRoute.time
returns:
7,129,227,73,89,222,29,42,131,62,150,36,28,16,185,86,138,51,8 (the route) 96.40 (distance of added jumps) 530.40 (travelled time)
systemsInRange
function systemsInRange([range : Number]) : Array
Returns an array of SystemInfo
s in range (default: 7) from the given system.
Note: will not produce correct results if used in interstellar space.
Example:
system.info.systemsInRange(5);
See also: SystemInfo.systemsInRange()
(which always provides results relative to the current system).
Static methods
filteredSystems
function filteredSystems(this : Object, predicate : Function) : Array of SystemInfo
A list of the SystemInfo
s for which predicate
returns true
.
Example:
// This is the actual implementation of systemsInRange()
in 1.75.1.
SystemInfo.prototype.systemsInRange = function systemsInRange(range)
{
if (range === undefined)
{
range = 7;
}
return SystemInfo.filteredSystems(this, function(other)
{
return (other.systemID !== this.systemID) && (this.distanceToSystem(other) <= range);
});
}