Difference between revisions of "Oolite JavaScript OM Specification"

From Elite Wiki
(Changed properties/instance variables to be consistently lowercase.)
(Removed already-implemented classes Vector and Quaternion, changed categories, expanded note.)
Line 1: Line 1:
 
Use this page to define the object model exposed by Oolite to the JavaScript interpreter.
 
Use this page to define the object model exposed by Oolite to the JavaScript interpreter.
  
'''Note:''' this is a work in progress. It should not be taken as a final specification.
+
'''Note:''' this is a work in progress. It should not be taken as a final specification. Much of the functionality has been redesigned already. See [[:Category:Oolite scripting]] for current documentation and [[:Category:Oolite scripting drafts]] for in-progress documentation.
  
<pre>
+
class Commodity
class Vector3
+
{
{
+
readonly string name;
float x, z, y;
+
readonly integer unitofMass; // grams, kgs, tons
}
+
}
 +
 +
class Consignment
 +
{
 +
Commodity commodity;
 +
float quantity;
 +
}
 +
 +
class Entity
 +
{
 +
readonly integer ID;
 +
readonly Entity[] subentities;
 +
Vector3 position;
 +
Vector3 velocity;
 +
Quaternion rotation;
 +
// some property to set change in rotation per second?
 +
 +
static Entity getEntityWithID(integer ID);
 +
 +
void setAI(string AIName);
 +
void pushAI(string AIName);
 +
void popAI();
 +
}
 +
 +
// Note all methods which take an Entity as an argument can also accept an entity ID instead.
 +
class <del>Vessel</del><ins>Ship</ins>
 +
{
 +
float foreShieldStrength;
 +
float aftShieldStrength;
 +
float energy;
 +
 +
float foreShieldMaxStrength;
 +
float aftShieldMaxStrength;
 +
float maxEnergy;
 +
 +
// something measure of max and current hull integrity?
 +
 +
// need to represent docking ports somehow
 +
 +
float cabinTemperature;
 +
integer maxCargoCapacity;
 +
integer freeCargoCapacity;
 +
 +
Consignment[] cargo;
 +
 +
Entity currentTarget;
 +
Entity[] escorts;
 +
 +
string roleName;
 +
string commanderName;
 +
 +
// short form of getScanClassRelativeTo(0) - ie the player
 +
integer getScanClass();
 +
integer getScanClassRelativeTo(Entity other);
 +
 +
float getDistanceFrom(Entity other);
 +
void noto(Vector3 destination);
 +
void notoEntity(Entity other, integer minimumDistance);
 +
 +
// These methods return the ID of the launched entity, or -1 on error or if the target vessel cannot
 +
// launch other vessels.
 +
integer launchVesselWithRole(string role);
 +
integer launchVesselWithName(string name);
 +
}
  
class Quaternion
+
[[Category:Oolite scripting drafts]]
{
 
float x, y, z, w;
 
}
 
 
 
class Commodity
 
{
 
readonly string name;
 
readonly integer unitofMass; // grams, kgs, tons
 
}
 
 
 
class Consignment
 
{
 
Commodity commodity;
 
float quantity;
 
}
 
 
 
class Entity
 
{
 
readonly integer ID;
 
readonly Entity[] subentities;
 
Vector3 position;
 
Vector3 velocity;
 
Quaternion rotation;
 
// some property to set change in rotation per second?
 
 
 
static Entity getEntityWithID(integer ID);
 
 
void setAI(string AIName);
 
void pushAI(string AIName);
 
void popAI();
 
}
 
 
 
// Note all methods which take an Entity as an argument can also accept an entity ID instead.
 
class Vessel
 
{
 
float foreShieldStrength;
 
float aftShieldStrength;
 
float energy;
 
 
 
float foreShieldMaxStrength;
 
float aftShieldMaxStrength;
 
float maxEnergy;
 
 
 
// something measure of max and current hull integrity?
 
 
 
// need to represent docking ports somehow
 
 
 
float cabinTemperature;
 
integer maxCargoCapacity;
 
integer freeCargoCapacity;
 
 
 
Consignment[] cargo;
 
 
 
Entity currentTarget;
 
Entity[] escorts;
 
 
 
string roleName;
 
string commanderName;
 
 
// short form of getScanClassRelativeTo(0) - ie the player
 
integer getScanClass();
 
integer getScanClassRelativeTo(Entity other);
 
 
 
float getDistanceFrom(Entity other);
 
void noto(Vector3 destination);
 
void notoEntity(Entity other, integer minimumDistance);
 
 
 
// These methods return the ID of the launched entity, or -1 on error or if the target vessel cannot
 
// launch other vessels.
 
integer launchVesselWithRole(string role);
 
integer launchVesselWithName(string name);
 
}
 
</pre>
 
 
 
[[Category:Oolite Development]]
 

Revision as of 14:42, 3 August 2007

Use this page to define the object model exposed by Oolite to the JavaScript interpreter.

Note: this is a work in progress. It should not be taken as a final specification. Much of the functionality has been redesigned already. See Category:Oolite scripting for current documentation and Category:Oolite scripting drafts for in-progress documentation.

class Commodity
{
	readonly string name;
	readonly integer unitofMass; // grams, kgs, tons
}

class Consignment
{
	Commodity commodity;
	float quantity;
}

class Entity
{
	readonly integer ID;
	readonly Entity[] subentities;
	Vector3 position;
	Vector3 velocity;
	Quaternion rotation;
	// some property to set change in rotation per second?

	static Entity getEntityWithID(integer ID);
	
	void setAI(string AIName);
	void pushAI(string AIName);
	void popAI();
}

// Note all methods which take an Entity as an argument can also accept an entity ID instead.
class VesselShip
{
	float foreShieldStrength;
	float aftShieldStrength;
	float energy;

	float foreShieldMaxStrength;
	float aftShieldMaxStrength;
	float maxEnergy;

	// something measure of max and current hull integrity?

	// need to represent docking ports somehow

	float cabinTemperature;
	integer maxCargoCapacity;
	integer freeCargoCapacity;

	Consignment[] cargo;

	Entity currentTarget;
	Entity[] escorts;

	string roleName;
	string commanderName;
	
	// short form of getScanClassRelativeTo(0) - ie the player
	integer getScanClass();
	integer getScanClassRelativeTo(Entity other);

	float getDistanceFrom(Entity other);
	void noto(Vector3 destination);
	void notoEntity(Entity other, integer minimumDistance);

	// These methods return the ID of the launched entity, or -1 on error or if the target vessel cannot
	// launch other vessels.
	integer launchVesselWithRole(string role);
	integer launchVesselWithName(string name);
}