Difference between revisions of "Oolite JavaScript OM Specification"

From Elite Wiki
m
m (Added Category:Oolite Development and WIP 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.
   
<tt><pre>
 
  +
'''Note:''' this is a work in progress. It should not be taken as a final specification.
  +
  +
<pre>
 
class Vector3
 
class Vector3
 
{
 
{
Line 80: Line 82:
 
integer launchVesselWithName(string name);
 
integer launchVesselWithName(string name);
 
}
 
}
</pre></tt>
+
</pre>
  +
  +
[[Category:Oolite Development]]

Revision as of 18:15, 25 March 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.

class Vector3
{
	float x, z, y;
}

class Quaternion
{
	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 Goto(Vector3 destination);
	void GotoEntity(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);
}