diff --git a/Resources/Scripts/oolite-global-prefix.js b/Resources/Scripts/oolite-global-prefix.js index 43d732ca..128fcd84 100644 --- a/Resources/Scripts/oolite-global-prefix.js +++ b/Resources/Scripts/oolite-global-prefix.js @@ -116,7 +116,7 @@ this.defineCompatibilityWriteOnly = function (constructorName, oldName, funcName { let getter = function () { - special.jsWarning(constructorName + "." + oldName + " is deprecated and read-only."); + special.jsWarning(constructorName + "." + oldName + " is deprecated and write-only."); return undefined; } let setter = function (value) @@ -154,3 +154,7 @@ system.setSunNova = function(delay) special.jsWarning("system.setSunNova() is deprecated, use system.sun.goNova() instead."); if (this.sun) this.sun.goNova(delay); } + + +// To be removed after 1.73 +this.defineCompatibilityGetter("Ship", "maxCargo", "cargoCapacity"); diff --git a/src/Core/OOQuaternion.h b/src/Core/OOQuaternion.h index 3331a1cc..551b2c55 100644 --- a/src/Core/OOQuaternion.h +++ b/src/Core/OOQuaternion.h @@ -68,9 +68,6 @@ OOINLINE void quaternion_set_rotate_about_axis(Quaternion *quat, Vector axis, GL /* Inner product of two quaternions */ OOINLINE GLfloat quaternion_dot_product(Quaternion q1, Quaternion q2) CONST_FUNC; -/* Create a rotation matrix from a quaternion. */ -void quaternion_into_gl_matrix(Quaternion quat, GLfloat *glmat) NONNULL_FUNC; - /* Create basis vectors from a quaternion. */ Vector vector_forward_from_quaternion(Quaternion quat) CONST_FUNC; Vector vector_up_from_quaternion(Quaternion quat) CONST_FUNC; diff --git a/src/Core/OOQuaternion.m b/src/Core/OOQuaternion.m index c4b0caf1..12f0276b 100644 --- a/src/Core/OOQuaternion.m +++ b/src/Core/OOQuaternion.m @@ -58,34 +58,6 @@ void quaternion_set_random(Quaternion *quat) } -void quaternion_into_gl_matrix(Quaternion quat, GLfloat *glmat) -{ - GLfloat w, wz, wy, wx; - GLfloat x, xz, xy, xx; - GLfloat y, yz, yy; - GLfloat z, zz; - - Quaternion q = quat; - quaternion_normalize(&q); - - w = q.w; - z = q.z; - y = q.y; - x = q.x; - - xx = 2.0f * x; yy = 2.0f * y; zz = 2.0f * z; - wx = w * xx; wy = w * yy; wz = w * zz; - xx = x * xx; xy = x * yy; xz = x * zz; - yy = y * yy; yz = y * zz; - zz = z * zz; - - glmat[ 0] = 1.0f - yy - zz; glmat[ 4] = xy + wz; glmat[ 8] = xz - wy; glmat[12] = 0.0f; - glmat[ 1] = xy - wz; glmat[ 5] = 1.0f - xx - zz; glmat[ 9] = yz + wx; glmat[13] = 0.0f; - glmat[ 2] = xz + wy; glmat[ 6] = yz - wx; glmat[10] = 1.0f - xx - yy; glmat[14] = 0.0f; - glmat[ 3] = 0.0f; glmat[ 7] = 0.0f; glmat[11] = 0.0f; glmat[15] = 1.0f; -} - - Vector vector_forward_from_quaternion(Quaternion quat) { GLfloat w, wy, wx; diff --git a/src/Core/Scripting/OOJSShip.m b/src/Core/Scripting/OOJSShip.m index c06ea5e6..6f6985b4 100644 --- a/src/Core/Scripting/OOJSShip.m +++ b/src/Core/Scripting/OOJSShip.m @@ -113,7 +113,9 @@ enum kShip_scannerRange, // scanner range, double, read-only kShip_reportAIMessages, // report AI messages, boolean, read/write kShip_withinStationAegis, // within main station aegis, boolean, read/write - kShip_maxCargo, // maximum cargo, integer, read-only + kShip_cargoCapacity, // free cargo space, integer, read-only + kShip_cargoSpaceUsed, // cargo on board, integer, read-only + kShip_availableCargoSpace, // maximum cargo, integer, read-only kShip_speed, // current flight speed, double, read-only kShip_desiredSpeed, // AI desired flight speed, double, read/write kShip_maxSpeed, // maximum flight speed, double, read-only @@ -125,7 +127,10 @@ enum kShip_isTrader, // is trader, boolean, read-only kShip_isPirateVictim, // is pirate victim, boolean, read-only kShip_scriptInfo, // arbitrary data for scripts, dictionary, read-only - kShip_trackCloseContacts // generate close contact events, boolean, read/write + kShip_trackCloseContacts, // generate close contact events, boolean, read/write + kShip_passengerCount, // number of passengers on ship, integer, read-only + kShip_passengerCapacity // amount of passenger space on ship, integer, read-only + }; @@ -153,7 +158,10 @@ static JSPropertySpec sShipProperties[] = { "isPolice", kShip_isPolice, JSPROP_PERMANENT | JSPROP_ENUMERATE | JSPROP_READONLY }, { "isThargoid", kShip_isThargoid, JSPROP_PERMANENT | JSPROP_ENUMERATE | JSPROP_READONLY }, { "isTrader", kShip_isTrader, JSPROP_PERMANENT | JSPROP_ENUMERATE | JSPROP_READONLY }, - { "maxCargo", kShip_maxCargo, JSPROP_PERMANENT | JSPROP_ENUMERATE | JSPROP_READONLY }, +// "cargo" reserved for array of cargo pods or similar. + { "cargoSpaceUsed", kShip_cargoSpaceUsed, JSPROP_PERMANENT | JSPROP_ENUMERATE | JSPROP_READONLY }, + { "cargoCapacity", kShip_cargoCapacity, JSPROP_PERMANENT | JSPROP_ENUMERATE | JSPROP_READONLY }, + { "availableCargoSpace", kShip_availableCargoSpace, JSPROP_PERMANENT | JSPROP_ENUMERATE | JSPROP_READONLY }, { "maxSpeed", kShip_maxSpeed, JSPROP_PERMANENT | JSPROP_ENUMERATE | JSPROP_READONLY }, { "potentialCollider", kShip_potentialCollider, JSPROP_PERMANENT | JSPROP_ENUMERATE | JSPROP_READONLY }, { "primaryRole", kShip_primaryRole, JSPROP_PERMANENT | JSPROP_ENUMERATE }, @@ -173,6 +181,9 @@ static JSPropertySpec sShipProperties[] = { "weaponRange", kShip_weaponRange, JSPROP_PERMANENT | JSPROP_ENUMERATE | JSPROP_READONLY }, { "withinStationAegis", kShip_withinStationAegis, JSPROP_PERMANENT | JSPROP_ENUMERATE | JSPROP_READONLY }, { "trackCloseContacts", kShip_trackCloseContacts, JSPROP_PERMANENT | JSPROP_ENUMERATE }, +// "passengers" reserved for array of characters or similar. + { "passengerCount", kShip_passengerCount, JSPROP_PERMANENT | JSPROP_ENUMERATE | JSPROP_READONLY }, + { "passengerCapacity", kShip_passengerCapacity, JSPROP_PERMANENT | JSPROP_ENUMERATE | JSPROP_READONLY }, { 0 } }; @@ -375,12 +386,22 @@ static JSBool ShipGetProperty(JSContext *context, JSObject *this, jsval name, js *outValue = BOOLToJSVal([entity withinStationAegis]); OK = YES; break; - - case kShip_maxCargo: + + case kShip_cargoCapacity: *outValue = INT_TO_JSVAL([entity maxCargo]); OK = YES; break; + case kShip_cargoSpaceUsed: + *outValue = INT_TO_JSVAL([entity maxCargo] - [entity availableCargoSpace]); + OK = YES; + break; + + case kShip_availableCargoSpace: + *outValue = INT_TO_JSVAL([entity availableCargoSpace]); + OK = YES; + break; + case kShip_speed: OK = JS_NewDoubleValue(context, [entity flightSpeed], outValue); break; @@ -437,6 +458,16 @@ static JSBool ShipGetProperty(JSContext *context, JSObject *this, jsval name, js *outValue = BOOLToJSVal([entity trackCloseContacts]); OK = YES; break; + + case kShip_passengerCount: + *outValue = INT_TO_JSVAL([entity passengerCount]); + OK = YES; + break; + + case kShip_passengerCapacity: + *outValue = INT_TO_JSVAL([entity passengerCapacity]); + OK = YES; + break; default: OOReportJSBadPropertySelector(context, @"Ship", JSVAL_TO_INT(name));