mirror of
https://bitbucket.org/theswgsource/src-1.2.git
synced 2026-07-31 01:15:48 -04:00
4163 lines
193 KiB
C++
Executable File
4163 lines
193 KiB
C++
Executable File
// ======================================================================
|
|
//
|
|
// ScriptMethodsShip.cpp
|
|
// Copyright 2003, Sony Online Entertainment, Inc.
|
|
// All rights reserved.
|
|
//
|
|
// ======================================================================
|
|
|
|
#include "serverScript/FirstServerScript.h"
|
|
#include "serverScript/JavaLibrary.h"
|
|
|
|
#include "UnicodeUtils.h"
|
|
#include "serverGame/AiShipController.h"
|
|
#include "serverGame/ConfigServerGame.h"
|
|
#include "serverGame/ConnectionServerConnection.h"
|
|
#include "serverGame/ContainerInterface.h"
|
|
#include "serverGame/CreatureObject.h"
|
|
#include "serverGame/GameServer.h"
|
|
#include "serverGame/MiningAsteroidController.h"
|
|
#include "serverGame/Missile.h"
|
|
#include "serverGame/MissileManager.h"
|
|
#include "serverGame/Pvp.h"
|
|
#include "serverGame/ServerObjectTemplate.h"
|
|
#include "serverGame/ServerWorld.h"
|
|
#include "serverGame/ShipInternalDamageOverTime.h"
|
|
#include "serverGame/ShipInternalDamageOverTimeManager.h"
|
|
#include "serverGame/ShipObject.h"
|
|
#include "serverGame/SpaceVisibilityManager.h"
|
|
#include "serverNetworkMessages/GameConnectionServerMessages.h"
|
|
#include "sharedNetworkMessages/MessageQueueShipHit.h"
|
|
#include "sharedFoundation/ConstCharCrcLowerString.h"
|
|
#include "sharedFoundation/ConstCharCrcString.h"
|
|
#include "sharedFoundation/Crc.h"
|
|
#include "sharedFoundation/GameControllerMessage.h"
|
|
#include "sharedGame/Nebula.h"
|
|
#include "sharedGame/NebulaManager.h"
|
|
#include "sharedGame/ShipChassis.h"
|
|
#include "sharedGame/ShipChassisSlot.h"
|
|
#include "sharedGame/ShipComponentData.h"
|
|
#include "sharedGame/ShipComponentDescriptor.h"
|
|
#include "sharedGame/ShipComponentWeaponManager.h"
|
|
#include "sharedNetworkMessages/DestroyShipComponentMessage.h"
|
|
#include "sharedNetworkMessages/DestroyShipMessage.h"
|
|
#include "sharedNetworkMessages/GameNetworkMessage.h"
|
|
#include "sharedNetworkMessages/GenericValueTypeMessage.h"
|
|
#include "sharedNetworkMessages/MessageQueueGenericValueType.h"
|
|
#include "sharedNetworkMessages/ShipDamageMessage.h"
|
|
#include "sharedObject/Appearance.h"
|
|
#include "sharedObject/CellProperty.h"
|
|
#include "sharedObject/Controller.h"
|
|
#include "sharedObject/NetworkIdManager.h"
|
|
#include "sharedObject/ObjectTemplateList.h"
|
|
|
|
using namespace JNIWrappersNamespace;
|
|
|
|
|
|
// ======================================================================
|
|
|
|
namespace ScriptMethodsShipNamespace
|
|
{
|
|
bool verifyShipsEnabled()
|
|
{
|
|
if (!ConfigServerGame::getShipsEnabled())
|
|
{
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("Ship support is not enabled. Make sure [GameServer] shipsEnabled=1 is in your config file."));
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
ShipChassisSlotType::Type getSlotType(int slotType)
|
|
{
|
|
if(slotType < ShipChassisSlotType::SCST_first || slotType > ShipChassisSlotType::SCST_num_types)
|
|
return ShipChassisSlotType::SCST_num_types;
|
|
else
|
|
return static_cast<ShipChassisSlotType::Type>(slotType);
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
ShipObject * const getShipThrowTestSlot(JNIEnv * env, jlong jobject_shipId, char const * const functionName, bool throwIfNotOnServer, int chassisSlot)
|
|
{
|
|
//-- Make sure ships are enabled
|
|
if (!verifyShipsEnabled())
|
|
return nullptr;
|
|
|
|
char buf[256];
|
|
snprintf(buf, sizeof(buf), "JavaLibrary::%s: ship obj_id did not resolve to a ShipObject", functionName);
|
|
ShipObject * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, buf, throwIfNotOnServer);
|
|
if (!shipObject)
|
|
return nullptr;
|
|
|
|
if (chassisSlot != ShipChassisSlotType::SCST_num_types && !shipObject->isSlotInstalled(chassisSlot))
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::%s chassisSlot [%d] not installed", functionName, chassisSlot));
|
|
|
|
return shipObject;
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
void sendGameNetworkMessageToObservers(ServerObject const & sourceObject, GameNetworkMessage const & message, bool sendToSourceObject)
|
|
{
|
|
// send the projectile to all clients observing the owner except the owner
|
|
// time is in the context of the connection server's sync stamp, so we need a unique message per connection server
|
|
typedef std::map<ConnectionServerConnection *, std::vector<NetworkId> > DistributionList;
|
|
DistributionList distributionList;
|
|
|
|
//-- Build distribution list of clients observing object, but don't include the client doing the firing
|
|
{
|
|
typedef std::set<Client *> ObserverList;
|
|
ObserverList const & observers = sourceObject.getObservers();
|
|
for (ObserverList::const_iterator iter = observers.begin(); iter != observers.end(); ++iter)
|
|
{
|
|
Client * const client = *iter;
|
|
if (sendToSourceObject || client != sourceObject.getClient())
|
|
distributionList[client->getConnection()].push_back(client->getCharacterObjectId());
|
|
}
|
|
}
|
|
|
|
//-- Send message to distribution list
|
|
{
|
|
for (DistributionList::const_iterator iter = distributionList.begin(); iter != distributionList.end(); ++iter)
|
|
{
|
|
GameClientMessage const gameClientMessage(iter->second, true, message);
|
|
iter->first->send(gameClientMessage, true);
|
|
}
|
|
}
|
|
}
|
|
|
|
bool install();
|
|
|
|
jboolean JNICALL pilotShip(JNIEnv *env, jobject self, jlong pilotId, jlong shipIdId);
|
|
jboolean JNICALL unpilotShip(JNIEnv *env, jobject self, jlong pilotId);
|
|
jlong JNICALL getShipPilot(JNIEnv * env, jobject self, jlong shipId);
|
|
jlong JNICALL getPilotedShip(JNIEnv * env, jobject self, jlong pilotId);
|
|
jboolean JNICALL getShipHasWings(JNIEnv * env, jobject self, jlong shipId);
|
|
jfloat JNICALL getShipCurrentSpeed(JNIEnv * env, jobject self, jlong shipId);
|
|
jboolean JNICALL setShipSlideDampener(JNIEnv * env, jobject self, jlong shipId, jfloat slideDampener);
|
|
jfloat JNICALL getShipSlideDampener(JNIEnv * env, jobject self, jlong shipId);
|
|
jboolean JNICALL setShipCurrentYaw(JNIEnv * env, jobject self, jlong shipId, jfloat currentYaw);
|
|
jfloat JNICALL getShipCurrentYaw(JNIEnv * env, jobject self, jlong shipId);
|
|
jboolean JNICALL setShipCurrentPitch(JNIEnv * env, jobject self, jlong shipId, jfloat currentPitch);
|
|
jfloat JNICALL getShipCurrentPitch(JNIEnv * env, jobject self, jlong shipId);
|
|
jboolean JNICALL setShipCurrentRoll(JNIEnv * env, jobject self, jlong shipId, jfloat currentRoll);
|
|
jfloat JNICALL getShipCurrentRoll(JNIEnv * env, jobject self, jlong shipId);
|
|
jboolean JNICALL setShipCurrentChassisHitPoints(JNIEnv * env, jobject self, jlong shipId, jfloat currentChassisHitPoints);
|
|
jfloat JNICALL getShipCurrentChassisHitPoints(JNIEnv * env, jobject self, jlong shipId);
|
|
jboolean JNICALL setShipMaximumChassisHitPoints(JNIEnv * env, jobject self, jlong shipId, jfloat maximumChassisHitPoints);
|
|
jfloat JNICALL getShipMaximumChassisHitPoints(JNIEnv * env, jobject self, jlong shipId);
|
|
jboolean JNICALL launchMissile(JNIEnv * env, jobject self, jlong player, jlong ship, jlong target, jint missileInfo, jint targetedComponent);
|
|
jboolean JNICALL launchCountermeasure(JNIEnv * env, jobject self, jlong ship, jint targettedMissile, jboolean successful, jint countermeasureType);
|
|
jint JNICALL getNearestUnlockedMissileForTarget(JNIEnv * env, jobject self, jlong target);
|
|
jintArray JNICALL getAllUnlockedMissilesForTarget(JNIEnv * env, jobject self, jlong jtarget);
|
|
jboolean JNICALL destroyMissile(JNIEnv * env, jobject self, jint missileId);
|
|
jint JNICALL getTypeByMissile(JNIEnv * env, jobject self, jint missileId);
|
|
jint JNICALL getWeaponIndexByMissile(JNIEnv * env, jobject self, jint missileId);
|
|
jint JNICALL getTimeSinceFiredByMissile(JNIEnv * env, jobject self, jint missileId);
|
|
jint JNICALL getTotalTimeByMissile(JNIEnv * env, jobject self, jint missileId);
|
|
jlong JNICALL getWhoFiredByMissile(JNIEnv * env, jobject self, jint missileId);
|
|
jboolean JNICALL setLookAtTargetShipComponent(JNIEnv * env, jobject self, jlong ship, jint targetedComponent);
|
|
jint JNICALL getLookAtTargetShipComponent(JNIEnv * env, jobject self, jlong ship);
|
|
jlongArray JNICALL getObservedShips(JNIEnv *env, jobject self, jlong jsource, jboolean excludeSource);
|
|
jlongArray JNICALL getObservedPlayerShips(JNIEnv *env, jobject self, jlong jsource, jboolean excludeSource);
|
|
jlongArray JNICALL getObservedEnemyShips(JNIEnv *env, jobject self, jlong jsource);
|
|
jlongArray JNICALL getObservedEnemyPlayerShips(JNIEnv *env, jobject self, jlong jsource);
|
|
void JNICALL notifyShipDamage(JNIEnv * env, jobject self, jlong victim, jlong attacker, jfloat totalDamage);
|
|
jfloat JNICALL getShipChassisSpeedMaximumModifier (JNIEnv * env, jobject self, jlong shipId);
|
|
void JNICALL setShipChassisSpeedMaximumModifier (JNIEnv * env, jobject self, jlong shipId, jfloat value);
|
|
jfloat JNICALL getShipActualAccelerationRate (JNIEnv * env, jobject self, jlong shipId);
|
|
jfloat JNICALL getShipActualDecelerationRate (JNIEnv * env, jobject self, jlong shipId);
|
|
jfloat JNICALL getShipActualPitchAccelerationRateDegrees (JNIEnv * env, jobject self, jlong shipId);
|
|
jfloat JNICALL getShipActualYawAccelerationRateDegrees (JNIEnv * env, jobject self, jlong shipId);
|
|
jfloat JNICALL getShipActualRollAccelerationRateDegrees (JNIEnv * env, jobject self, jlong shipId);
|
|
jfloat JNICALL getShipActualPitchRateMaximumDegrees (JNIEnv * env, jobject self, jlong shipId);
|
|
jfloat JNICALL getShipActualYawRateMaximumDegrees (JNIEnv * env, jobject self, jlong shipId);
|
|
jfloat JNICALL getShipActualRollRateMaximumDegrees (JNIEnv * env, jobject self, jlong shipId);
|
|
jfloat JNICALL getShipActualSpeedMaximum (JNIEnv * env, jobject self, jlong shipId);
|
|
jstring JNICALL getShipChassisType (JNIEnv * env, jobject self, jlong shipId);
|
|
jfloat JNICALL getChassisComponentMassCurrent (JNIEnv * env, jobject self, jlong shipId);
|
|
jfloat JNICALL getChassisComponentMassMaximum (JNIEnv * env, jobject self, jlong shipId);
|
|
jboolean JNICALL setChassisComponentMassMaximum (JNIEnv * env, jobject self, jlong shipId, jfloat chassisComponentMassMaximum);
|
|
jboolean JNICALL isShipSlotInstalled (JNIEnv * env, jobject self, jlong shipId, jint chassisSlot);
|
|
jboolean JNICALL isShipComponentDisabled (JNIEnv * env, jobject self, jlong shipId, jint chassisSlot);
|
|
jboolean JNICALL isShipComponentLowPower (JNIEnv * env, jobject self, jlong shipId, jint chassisSlot);
|
|
jboolean JNICALL isShipComponentDisabledNeedsPower (JNIEnv * env, jobject self, jlong shipId, jint chassisSlot);
|
|
jfloat JNICALL getShipComponentArmorHitpointsMaximum (JNIEnv * env, jobject self, jlong shipId, jint chassisSlot);
|
|
jfloat JNICALL getShipComponentArmorHitpointsCurrent (JNIEnv * env, jobject self, jlong shipId, jint chassisSlot);
|
|
jfloat JNICALL getShipComponentEfficiencyGeneral (JNIEnv * env, jobject self, jlong shipId, jint chassisSlot);
|
|
jfloat JNICALL getShipComponentEfficiencyEnergy (JNIEnv * env, jobject self, jlong shipId, jint chassisSlot);
|
|
jfloat JNICALL getShipComponentEnergyMaintenanceRequirement (JNIEnv * env, jobject self, jlong shipId, jint chassisSlot);
|
|
jfloat JNICALL getShipComponentMass (JNIEnv * env, jobject self, jlong shipId, jint chassisSlot);
|
|
jint JNICALL getShipComponentCrc (JNIEnv * env, jobject self, jlong shipId, jint chassisSlot);
|
|
jfloat JNICALL getShipComponentHitpointsCurrent (JNIEnv * env, jobject self, jlong shipId, jint chassisSlot);
|
|
jfloat JNICALL getShipComponentHitpointsMaximum (JNIEnv * env, jobject self, jlong shipId, jint chassisSlot);
|
|
jint JNICALL getShipComponentFlags (JNIEnv * env, jobject self, jlong shipId, jint chassisSlot);
|
|
jstring JNICALL getShipComponentName (JNIEnv * env, jobject self, jlong shipId, jint chassisSlot);
|
|
jfloat JNICALL getShipWeaponDamageMaximum (JNIEnv * env, jobject self, jlong shipId, jint chassisSlot);
|
|
jfloat JNICALL getShipWeaponDamageMinimum (JNIEnv * env, jobject self, jlong shipId, jint chassisSlot);
|
|
jfloat JNICALL getShipWeaponEffectivenessShields (JNIEnv * env, jobject self, jlong shipId, jint chassisSlot);
|
|
jfloat JNICALL getShipWeaponEffectivenessArmor (JNIEnv * env, jobject self, jlong shipId, jint chassisSlot);
|
|
jfloat JNICALL getShipWeaponEnergyPerShot (JNIEnv * env, jobject self, jlong shipId, jint chassisSlot);
|
|
jfloat JNICALL getShipWeaponRefireRate (JNIEnv * env, jobject self, jlong shipId, jint chassisSlot);
|
|
jfloat JNICALL getShipWeaponActualRefireRate (JNIEnv * env, jobject self, jlong shipId, jint chassisSlot);
|
|
jfloat JNICALL getShipWeaponEfficiencyRefireRate (JNIEnv * env, jobject self, jlong shipId, jint chassisSlot);
|
|
jint JNICALL getShipWeaponAmmoCurrent (JNIEnv * env, jobject self, jlong shipId, jint chassisSlot);
|
|
jint JNICALL getShipWeaponAmmoMaximum (JNIEnv * env, jobject self, jlong shipId, jint chassisSlot);
|
|
jint JNICALL getShipWeaponAmmoType (JNIEnv * env, jobject self, jlong shipId, jint chassisSlot);
|
|
jfloat JNICALL getShipShieldHitpointsFrontCurrent (JNIEnv * env, jobject self, jlong shipId);
|
|
jfloat JNICALL getShipShieldHitpointsFrontMaximum (JNIEnv * env, jobject self, jlong shipId);
|
|
jfloat JNICALL getShipShieldHitpointsBackCurrent (JNIEnv * env, jobject self, jlong shipId);
|
|
jfloat JNICALL getShipShieldHitpointsBackMaximum (JNIEnv * env, jobject self, jlong shipId);
|
|
jfloat JNICALL getShipShieldRechargeRate (JNIEnv * env, jobject self, jlong shipId);
|
|
jfloat JNICALL getShipCapacitorEnergyCurrent (JNIEnv * env, jobject self, jlong shipId);
|
|
jfloat JNICALL getShipCapacitorEnergyMaximum (JNIEnv * env, jobject self, jlong shipId);
|
|
jfloat JNICALL getShipCapacitorEnergyRechargeRate (JNIEnv * env, jobject self, jlong shipId);
|
|
jfloat JNICALL getShipEngineAccelerationRate (JNIEnv * env, jobject self, jlong shipId);
|
|
jfloat JNICALL getShipEngineDecelerationRate (JNIEnv * env, jobject self, jlong shipId);
|
|
jfloat JNICALL getShipEnginePitchAccelerationRateDegrees (JNIEnv * env, jobject self, jlong shipId);
|
|
jfloat JNICALL getShipEngineYawAccelerationRateDegrees (JNIEnv * env, jobject self, jlong shipId);
|
|
jfloat JNICALL getShipEngineRollAccelerationRateDegrees (JNIEnv * env, jobject self, jlong shipId);
|
|
jfloat JNICALL getShipEnginePitchRateMaximumDegrees (JNIEnv * env, jobject self, jlong shipId);
|
|
jfloat JNICALL getShipEngineYawRateMaximumDegrees (JNIEnv * env, jobject self, jlong shipId);
|
|
jfloat JNICALL getShipEngineRollRateMaximumDegrees (JNIEnv * env, jobject self, jlong shipId);
|
|
jfloat JNICALL getShipEngineSpeedMaximum (JNIEnv * env, jobject self, jlong shipId);
|
|
jfloat JNICALL getShipEngineSpeedRotationFactorMaximum (JNIEnv * env, jobject self, jlong shipId);
|
|
jfloat JNICALL getShipEngineSpeedRotationFactorMinimum (JNIEnv * env, jobject self, jlong shipId);
|
|
jfloat JNICALL getShipEngineSpeedRotationFactorOptimal (JNIEnv * env, jobject self, jlong shipId);
|
|
jfloat JNICALL getShipReactorEnergyGenerationRate (JNIEnv * env, jobject self, jlong shipId);
|
|
jfloat JNICALL getShipBoosterEnergyCurrent (JNIEnv * env, jobject self, jlong shipId);
|
|
jfloat JNICALL getShipBoosterEnergyMaximum (JNIEnv * env, jobject self, jlong shipId);
|
|
jfloat JNICALL getShipBoosterEnergyRechargeRate (JNIEnv * env, jobject self, jlong shipId);
|
|
jfloat JNICALL getShipBoosterEnergyConsumptionRate (JNIEnv * env, jobject self, jlong shipId);
|
|
jfloat JNICALL getShipBoosterAcceleration (JNIEnv * env, jobject self, jlong shipId);
|
|
jfloat JNICALL getShipBoosterSpeedMaximum (JNIEnv * env, jobject self, jlong shipId);
|
|
jboolean JNICALL isShipBoosterActive (JNIEnv * env, jobject self, jlong shipId);
|
|
jfloat JNICALL getShipDroidInterfaceCommandSpeed (JNIEnv * env, jobject self, jlong shipId);
|
|
int JNICALL getShipCargoHoldContentsMaximum (JNIEnv * env, jobject self, jlong shipId);
|
|
int JNICALL getShipCargoHoldContentsCurrent (JNIEnv * env, jobject self, jlong shipId);
|
|
void JNICALL setShipComponentArmorHitpointsMaximum (JNIEnv * env, jobject self, jlong shipId, jint chassisSlot, jfloat componentArmorHitpointsMaximum);
|
|
void JNICALL setShipComponentArmorHitpointsCurrent (JNIEnv * env, jobject self, jlong shipId, jint chassisSlot, jfloat componentArmorHitpointsCurrent);
|
|
void JNICALL setShipComponentEfficiencyGeneral (JNIEnv * env, jobject self, jlong shipId, jint chassisSlot, jfloat componentEfficiencyGeneral);
|
|
void JNICALL setShipComponentEfficiencyEnergy (JNIEnv * env, jobject self, jlong shipId, jint chassisSlot, jfloat componentEfficiencyEnergy);
|
|
void JNICALL setShipComponentEnergyMaintenanceRequirement (JNIEnv * env, jobject self, jlong shipId, jint chassisSlot, jfloat componentEnergyMaintenanceRequirement);
|
|
void JNICALL setShipComponentMass (JNIEnv * env, jobject self, jlong shipId, jint chassisSlot, jfloat componentMass);
|
|
void JNICALL setShipComponentHitpointsCurrent (JNIEnv * env, jobject self, jlong shipId, jint chassisSlot, jfloat componentHitpointsCurrent);
|
|
void JNICALL setShipComponentHitpointsMaximum (JNIEnv * env, jobject self, jlong shipId, jint chassisSlot, jfloat componentHitpointsMaximum);
|
|
void JNICALL setShipComponentFlags (JNIEnv * env, jobject self, jlong shipId, jint chassisSlot, jint componentFlags);
|
|
void JNICALL setShipComponentName (JNIEnv * env, jobject self, jlong shipId, jint chassisSlot, jstring componentName);
|
|
void JNICALL setShipComponentDisabled (JNIEnv * env, jobject self, jlong shipId, jint chassisSlot, jboolean componentDisabled);
|
|
void JNICALL setShipComponentLowPower (JNIEnv * env, jobject self, jlong shipId, jint chassisSlot, jboolean componentLowPower);
|
|
void JNICALL setShipComponentDisabledNeedsPower (JNIEnv * env, jobject self, jlong shipId, jint chassisSlot, jboolean componentDisabledNeedsPower);
|
|
void JNICALL setShipWeaponDamageMaximum (JNIEnv * env, jobject self, jlong shipId, jint chassisSlot, jfloat weaponDamageMaximum);
|
|
void JNICALL setShipWeaponDamageMinimum (JNIEnv * env, jobject self, jlong shipId, jint chassisSlot, jfloat weaponDamageMinimum);
|
|
void JNICALL setShipWeaponEffectivenessShields (JNIEnv * env, jobject self, jlong shipId, jint chassisSlot, jfloat weaponEffectivenessShields);
|
|
void JNICALL setShipWeaponEffectivenessArmor (JNIEnv * env, jobject self, jlong shipId, jint chassisSlot, jfloat weaponEffectivenessArmor);
|
|
void JNICALL setShipWeaponEnergyPerShot (JNIEnv * env, jobject self, jlong shipId, jint chassisSlot, jfloat weaponEnergyPerShot);
|
|
void JNICALL setShipWeaponRefireRate (JNIEnv * env, jobject self, jlong shipId, jint chassisSlot, jfloat weaponRefireRate);
|
|
void JNICALL setShipWeaponEfficiencyRefireRate (JNIEnv * env, jobject self, jlong shipId, jint chassisSlot, jfloat weaponEfficiencyRefireRate);
|
|
void JNICALL setShipWeaponAmmoCurrent (JNIEnv * env, jobject self, jlong shipId, jint chassisSlot, jint ammoCurrent);
|
|
void JNICALL setShipWeaponAmmoMaximum (JNIEnv * env, jobject self, jlong shipId, jint chassisSlot, jint ammoMaximum);
|
|
void JNICALL setShipWeaponAmmoType (JNIEnv * env, jobject self, jlong shipId, jint chassisSlot, jint ammoType);
|
|
void JNICALL setShipShieldHitpointsFrontCurrent (JNIEnv * env, jobject self, jlong shipId, jfloat shieldHitpointsFrontCurrent);
|
|
void JNICALL setShipShieldHitpointsFrontMaximum (JNIEnv * env, jobject self, jlong shipId, jfloat shieldHitpointsFrontMaximum);
|
|
void JNICALL setShipShieldHitpointsBackCurrent (JNIEnv * env, jobject self, jlong shipId, jfloat shieldHitpointsBackCurrent);
|
|
void JNICALL setShipShieldHitpointsBackMaximum (JNIEnv * env, jobject self, jlong shipId, jfloat shieldHitpointsBackMaximum);
|
|
void JNICALL setShipShieldRechargeRate (JNIEnv * env, jobject self, jlong shipId, jfloat shieldRechargeRate);
|
|
void JNICALL setShipCapacitorEnergyCurrent (JNIEnv * env, jobject self, jlong shipId, jfloat capacitorEnergyCurrent);
|
|
void JNICALL setShipCapacitorEnergyMaximum (JNIEnv * env, jobject self, jlong shipId, jfloat capacitorEnergyMaximum);
|
|
void JNICALL setShipCapacitorEnergyRechargeRate (JNIEnv * env, jobject self, jlong shipId, jfloat capacitorEnergyRechargeRate);
|
|
void JNICALL setShipEngineAccelerationRate (JNIEnv * env, jobject self, jlong shipId, jfloat engineAccelerationRate);
|
|
void JNICALL setShipEngineDecelerationRate (JNIEnv * env, jobject self, jlong shipId, jfloat engineDecelerationRate);
|
|
void JNICALL setShipEnginePitchAccelerationRateDegrees (JNIEnv * env, jobject self, jlong shipId, jfloat enginePitchAccelerationRateDegrees);
|
|
void JNICALL setShipEngineYawAccelerationRateDegrees (JNIEnv * env, jobject self, jlong shipId, jfloat engineYawAccelerationRateDegrees);
|
|
void JNICALL setShipEngineRollAccelerationRateDegrees (JNIEnv * env, jobject self, jlong shipId, jfloat engineRollAccelerationRateDegrees);
|
|
void JNICALL setShipEnginePitchRateMaximumDegrees (JNIEnv * env, jobject self, jlong shipId, jfloat enginePitchRateMaximumDegrees);
|
|
void JNICALL setShipEngineYawRateMaximumDegrees (JNIEnv * env, jobject self, jlong shipId, jfloat engineYawRateMaximumDegrees);
|
|
void JNICALL setShipEngineRollRateMaximumDegrees (JNIEnv * env, jobject self, jlong shipId, jfloat engineRollRateMaximumDegrees);
|
|
void JNICALL setShipEngineSpeedMaximum (JNIEnv * env, jobject self, jlong shipId, jfloat engineSpeedMaximum);
|
|
void JNICALL setShipEngineSpeedRotationFactorMaximum (JNIEnv * env, jobject self, jlong shipId, jfloat engineSpeedRotationFactorMaximum);
|
|
void JNICALL setShipEngineSpeedRotationFactorMinimum (JNIEnv * env, jobject self, jlong shipId, jfloat engineSpeedRotationFactorMinimum);
|
|
void JNICALL setShipEngineSpeedRotationFactorOptimal (JNIEnv * env, jobject self, jlong shipId, jfloat engineSpeedRotationFactorOptimal);
|
|
void JNICALL setShipReactorEnergyGenerationRate (JNIEnv * env, jobject self, jlong shipId, jfloat reactorEnergyGenerationRate);
|
|
void JNICALL setShipBoosterEnergyCurrent (JNIEnv * env, jobject self, jlong shipId, jfloat boosterEnergyCurrent);
|
|
void JNICALL setShipBoosterEnergyMaximum (JNIEnv * env, jobject self, jlong shipId, jfloat boosterEnergyMaximum);
|
|
void JNICALL setShipBoosterEnergyRechargeRate (JNIEnv * env, jobject self, jlong shipId, jfloat boosterEnergyRechargeRate);
|
|
void JNICALL setShipBoosterEnergyConsumptionRate (JNIEnv * env, jobject self, jlong shipId, jfloat boosterEnergyConsumptionRate);
|
|
void JNICALL setShipBoosterAcceleration (JNIEnv * env, jobject self, jlong shipId, jfloat boosterAcceleration);
|
|
void JNICALL setShipBoosterSpeedMaximum (JNIEnv * env, jobject self, jlong shipId, jfloat boosterSpeedMaximum);
|
|
void JNICALL setShipDroidInterfaceCommandSpeed (JNIEnv * env, jobject self, jlong shipId, jfloat droidInterfaceCommandSpeed);
|
|
void JNICALL setShipCargoHoldContentsMaximum (JNIEnv * env, jobject self, jlong shipId, jint contentsMaximum);
|
|
void JNICALL setShipCargoHoldContent (JNIEnv * env, jobject self, jlong shipId, jlong resourceTypeId, jint amount);
|
|
jint JNICALL getShipCargoHoldContent (JNIEnv * env, jobject self, jlong shipId, jlong resourceTypeId);
|
|
jlongArray JNICALL getShipCargoHoldContentsResourceTypes (JNIEnv * env, jobject self, jlong shipId);
|
|
jintArray JNICALL getShipCargoHoldContentsAmounts (JNIEnv * env, jobject self, jlong shipId);
|
|
jboolean JNICALL shipCanInstallComponent (JNIEnv * env, jobject self, jlong shipId, jint chassisSlot, jlong component);
|
|
jboolean JNICALL shipPseudoInstallComponent (JNIEnv * env, jobject self, jlong jship, jint chassisSlot, jint componentCrc);
|
|
jboolean JNICALL shipInstallComponent (JNIEnv * env, jobject self, jlong installerId, jlong shipId, jint chassisSlot, jlong component);
|
|
jlong JNICALL shipUninstallComponent (JNIEnv * env, jobject self, jlong uninstallerId, jlong shipId, jint chassisSlot, jlong containerTarget);
|
|
// allow an uninstalled component to overflow the container.
|
|
jlong JNICALL shipUninstallComponentAllowOverload (JNIEnv * env, jobject self, jlong uninstallerId, jlong shipId, jint chassisSlot, jlong containerTarget);
|
|
jlong JNICALL shipUninstallComponentBase (JNIEnv * env, jobject self, jlong uninstallerId, jlong shipId, jint chassisSlot, jlong containerTarget, bool allowOverload);
|
|
jintArray JNICALL getShipChassisSlots (JNIEnv * env, jobject self, jlong shipId);
|
|
void JNICALL setShipSlotTargetable (JNIEnv * env, jobject self, jlong shipId, jint chassisSlot, jboolean targetable);
|
|
jboolean JNICALL isShipSlotTargetable (JNIEnv * env, jobject self, jlong shipId, jint chassisSlot);
|
|
jint JNICALL getShipComponentDescriptorType (JNIEnv * env, jobject self, jlong component);
|
|
jint JNICALL getShipComponentDescriptorTypeByName (JNIEnv * env, jobject self, jstring typeName);
|
|
jstring JNICALL getShipComponentDescriptorTypeName (JNIEnv * env, jobject self, jint componentType);
|
|
jint JNICALL getShipComponentDescriptorCrc (JNIEnv * env, jobject self, jlong component);
|
|
jstring JNICALL getShipComponentDescriptorCrcName (JNIEnv * env, jobject self, jint componentCrc);
|
|
jstring JNICALL getShipComponentDescriptorCompatibility (JNIEnv * env, jobject self, jint componentCrc);
|
|
jboolean JNICALL getShipComponentDescriptorWeaponIsAmmoConsuming (JNIEnv * env, jobject self, jint componentCrc);
|
|
jboolean JNICALL getShipComponentDescriptorWeaponIsMissile (JNIEnv * env, jobject self, jint componentCrc);
|
|
jboolean JNICALL getShipComponentDescriptorWeaponIsCountermeasure (JNIEnv * env, jobject self, jint componentCrc);
|
|
jboolean JNICALL getShipComponentDescriptorWeaponIsMining (JNIEnv * env, jobject self, jint componentCrc);
|
|
jboolean JNICALL getShipComponentDescriptorWeaponIsTractor (JNIEnv * env, jobject self, jint componentCrc);
|
|
jfloat JNICALL getShipComponentDescriptorWeaponRange (JNIEnv * env, jobject self, jint componentCrc);
|
|
jfloat JNICALL getShipComponentDescriptorWeaponProjectileSpeed (JNIEnv * env, jobject self, jint componentCrc);
|
|
jlong JNICALL getDroidControlDeviceForShip (JNIEnv * env, jobject self, jlong jship);
|
|
jboolean JNICALL associateDroidControlDeviceWithShip (JNIEnv * env, jobject self, jlong jship, jlong jdroidControlDevice);
|
|
jboolean JNICALL removeDroidControlDeviceFromShip (JNIEnv * env, jobject self, jlong jship);
|
|
jlong JNICALL launchShipFromHangar (JNIEnv * env, jobject self, jlong jshipId, jstring templateToSpawn, jobject deltaFromHangarHardpoint);
|
|
void JNICALL commPlayers (JNIEnv * env, jobject self, jlong jtaunter, jstring appearanceOverloadServerTemplate, jstring soundeffect, jfloat duration, jlongArray jplayers, jstring jtauntOob, jboolean chronicles);
|
|
void JNICALL handleShipDestruction(JNIEnv * env, jobject self, jlong ship, jfloat severity);
|
|
void JNICALL handleShipComponentDestruction(JNIEnv * env, jobject self, jlong ship, jint chassisSlot, jfloat severity);
|
|
jboolean JNICALL setShipInternalDamageOverTime(JNIEnv * env, jobject self, jlong ship, jint chassisSlot, jfloat damageRate, jfloat damageThreshold);
|
|
jboolean JNICALL removeShipInternalDamageOverTime(JNIEnv * env, jobject self, jlong ship, jint chassisSlot);
|
|
jfloat JNICALL getShipInternalDamageOverTimeDamageRate(JNIEnv * env, jobject self, jlong ship, jint chassisSlot);
|
|
jfloat JNICALL getShipInternalDamageOverTimeDamageThreshold(JNIEnv * env, jobject self, jlong ship, jint chassisSlot);
|
|
jboolean JNICALL hasShipInternalDamageOverTime(JNIEnv * env, jobject self, jlong ship, jint chassisSlot);
|
|
jint JNICALL shipGetSpaceFaction(JNIEnv *env, jobject self, jlong jship);
|
|
jintArray JNICALL shipGetSpaceFactionAllies(JNIEnv *env, jobject self, jlong jship);
|
|
jintArray JNICALL shipGetSpaceFactionEnemies(JNIEnv *env, jobject self, jlong jship);
|
|
jboolean JNICALL shipGetSpaceFactionIsAggro(JNIEnv *env, jobject self, jlong jship);
|
|
void JNICALL shipSetSpaceFaction(JNIEnv *env, jobject self, jlong jship, jint spaceFaction);
|
|
void JNICALL shipSetSpaceFactionAllies(JNIEnv *env, jobject self, jlong jship, jintArray jfactionList);
|
|
void JNICALL shipSetSpaceFactionEnemies(JNIEnv *env, jobject self, jlong jship, jintArray jfactionList);
|
|
void JNICALL shipSetSpaceFactionIsAggro(JNIEnv *env, jobject self, jlong jship, jboolean isAggro);
|
|
jboolean JNICALL shipIsInNebula(JNIEnv *env, jobject self, jlong ship, jstring nebulaName);
|
|
jboolean JNICALL setShipWingName(JNIEnv *env, jobject self, jlong target, jstring str);
|
|
jstring JNICALL getShipWingName(JNIEnv *env, jobject self, jlong target);
|
|
jboolean JNICALL setShipTypeName(JNIEnv *env, jobject self, jlong target, jstring str);
|
|
jstring JNICALL getShipTypeName(JNIEnv *env, jobject self, jlong target);
|
|
jboolean JNICALL setShipDifficulty(JNIEnv *env, jobject self, jlong target, jstring str);
|
|
jstring JNICALL getShipDifficulty(JNIEnv *env, jobject self, jlong target);
|
|
jboolean JNICALL setShipFaction(JNIEnv *env, jobject self, jlong target, jstring str);
|
|
jstring JNICALL getShipFaction(JNIEnv *env, jobject self, jlong target);
|
|
jboolean JNICALL addMissionCriticalObject(JNIEnv *env, jobject self, jlong playerObjectId, jlong missionCriticalObjectId);
|
|
jboolean JNICALL removeMissionCriticalObject(JNIEnv *env, jobject self, jlong playerObjectId, jlong missionCriticalObjectId);
|
|
jboolean JNICALL clearMissionCriticalObjects(JNIEnv *env, jobject self, jlong playerObjectId);
|
|
jboolean JNICALL isMissionCriticalObject(JNIEnv *env, jobject self, jlong playerObjectId, jlong missionCriticalObjectId);
|
|
jstring JNICALL getShipComponentDebugString(JNIEnv * env, jobject self, jlong jobject_shipId, jint chassisSlot);
|
|
void JNICALL notifyShipHit(JNIEnv * env, jobject self, jlong jobject_shipId, jobject jobject_vectorUp_w, jobject jobject_vectorHitLocation_o, jint type, jfloat integrity, jfloat previousIntegrity);
|
|
void JNICALL setDynamicMiningAsteroidVelocity(JNIEnv * env, jobject self, jlong jobject_asteroidId, jobject jobject_velocity_w);
|
|
jobject JNICALL getDynamicMiningAsteroidVelocity(JNIEnv * env, jobject self, jlong jobject_asteroidId);
|
|
void JNICALL openSpaceMiningUi(JNIEnv * env, jobject self, jlong player, jlong spaceStation, jstring spaceStationName);
|
|
}
|
|
|
|
using namespace ScriptMethodsShipNamespace;
|
|
|
|
|
|
//========================================================================
|
|
// install
|
|
//========================================================================
|
|
|
|
bool ScriptMethodsShipNamespace::install()
|
|
{
|
|
const JNINativeMethod NATIVES[] = {
|
|
#define JF(a,b,c) {a,b,(void*)(ScriptMethodsShipNamespace::c)}
|
|
JF("_pilotShip", "(JJ)Z", pilotShip),
|
|
JF("_unpilotShip", "(J)Z", unpilotShip),
|
|
JF("_getPilotId", "(J)J", getShipPilot),
|
|
JF("_getShipPilot", "(J)J", getShipPilot),
|
|
JF("_getPilotedShip", "(J)J", getPilotedShip),
|
|
JF("_getShipHasWings", "(J)Z", getShipHasWings),
|
|
JF("_getShipCurrentSpeed", "(J)F", getShipCurrentSpeed),
|
|
JF("_setShipSlideDampener", "(JF)Z", setShipSlideDampener),
|
|
JF("_getShipSlideDampener", "(J)F", getShipSlideDampener),
|
|
JF("_setShipCurrentYaw", "(JF)Z", setShipCurrentYaw),
|
|
JF("_getShipCurrentYaw", "(J)F", getShipCurrentYaw),
|
|
JF("_setShipCurrentPitch", "(JF)Z", setShipCurrentPitch),
|
|
JF("_getShipCurrentPitch", "(J)F", getShipCurrentPitch),
|
|
JF("_setShipCurrentRoll", "(JF)Z", setShipCurrentRoll),
|
|
JF("_getShipCurrentRoll", "(J)F", getShipCurrentRoll),
|
|
JF("_setShipCurrentChassisHitPoints", "(JF)Z", setShipCurrentChassisHitPoints),
|
|
JF("_getShipCurrentChassisHitPoints", "(J)F", getShipCurrentChassisHitPoints),
|
|
JF("_setShipMaximumChassisHitPoints", "(JF)Z", setShipMaximumChassisHitPoints),
|
|
JF("_getShipMaximumChassisHitPoints", "(J)F", getShipMaximumChassisHitPoints),
|
|
JF("_launchMissile", "(JJJII)Z", launchMissile),
|
|
JF("_launchCountermeasure", "(JIZI)Z", launchCountermeasure),
|
|
JF("_getNearestUnlockedMissileForTarget", "(J)I", getNearestUnlockedMissileForTarget),
|
|
JF("_getAllUnlockedMissilesForTarget", "(J)[I", getAllUnlockedMissilesForTarget),
|
|
JF("destroyMissile", "(I)Z", destroyMissile),
|
|
JF("getTypeByMissile","(I)I", getTypeByMissile),
|
|
JF("getWeaponIndexByMissile","(I)I",getWeaponIndexByMissile),
|
|
JF("getTimeSinceFiredByMissile","(I)I",getTimeSinceFiredByMissile),
|
|
JF("getTotalTimeByMissile","(I)I",getTotalTimeByMissile),
|
|
JF("_getWhoFiredByMissile","(I)J",getWhoFiredByMissile),
|
|
JF("_setLookAtTargetShipComponent", "(JI)Z", setLookAtTargetShipComponent),
|
|
JF("_getLookAtTargetShipComponent", "(J)I", getLookAtTargetShipComponent),
|
|
JF("_getObservedShips", "(JZ)[J", getObservedShips),
|
|
JF("_getObservedPlayerShips", "(JZ)[J", getObservedPlayerShips),
|
|
JF("_getObservedEnemyShips", "(J)[J", getObservedEnemyShips),
|
|
JF("_getObservedEnemyPlayerShips", "(J)[J", getObservedEnemyPlayerShips),
|
|
JF("_notifyShipDamage", "(JJF)V", notifyShipDamage),
|
|
JF("_getShipChassisSpeedMaximumModifier", "(J)F", getShipChassisSpeedMaximumModifier),
|
|
JF("_setShipChassisSpeedMaximumModifier", "(JF)V", setShipChassisSpeedMaximumModifier),
|
|
JF("_getShipActualAccelerationRate", "(J)F", getShipActualAccelerationRate),
|
|
JF("_getShipActualDecelerationRate", "(J)F", getShipActualDecelerationRate),
|
|
JF("_getShipActualPitchAccelerationRateDegrees", "(J)F", getShipActualPitchAccelerationRateDegrees),
|
|
JF("_getShipActualYawAccelerationRateDegrees", "(J)F", getShipActualYawAccelerationRateDegrees),
|
|
JF("_getShipActualRollAccelerationRateDegrees", "(J)F", getShipActualRollAccelerationRateDegrees),
|
|
JF("_getShipActualPitchRateMaximumDegrees", "(J)F", getShipActualPitchRateMaximumDegrees),
|
|
JF("_getShipActualYawRateMaximumDegrees", "(J)F", getShipActualYawRateMaximumDegrees),
|
|
JF("_getShipActualRollRateMaximumDegrees", "(J)F", getShipActualRollRateMaximumDegrees),
|
|
JF("_getShipActualSpeedMaximum", "(J)F", getShipActualSpeedMaximum),
|
|
JF("_handleShipDestruction", "(JF)V", handleShipDestruction),
|
|
JF("_handleShipComponentDestruction", "(JIF)V", handleShipComponentDestruction),
|
|
JF("_setShipInternalDamageOverTime", "(JIFF)Z", setShipInternalDamageOverTime),
|
|
JF("_removeShipInternalDamageOverTime", "(JI)Z", removeShipInternalDamageOverTime),
|
|
JF("_getShipInternalDamageOverTimeDamageRate", "(JI)F", getShipInternalDamageOverTimeDamageRate),
|
|
JF("_getShipInternalDamageOverTimeDamageThreshold", "(JI)F", getShipInternalDamageOverTimeDamageThreshold),
|
|
JF("_hasShipInternalDamageOverTime", "(JI)Z", hasShipInternalDamageOverTime),
|
|
JF("_shipGetSpaceFaction", "(J)I", shipGetSpaceFaction),
|
|
JF("_shipGetSpaceFactionAllies", "(J)[I", shipGetSpaceFactionAllies),
|
|
JF("_shipGetSpaceFactionEnemies", "(J)[I", shipGetSpaceFactionEnemies),
|
|
JF("_shipGetSpaceFactionIsAggro", "(J)Z", shipGetSpaceFactionIsAggro),
|
|
JF("_shipSetSpaceFaction", "(JI)V", shipSetSpaceFaction),
|
|
JF("_shipSetSpaceFactionAllies", "(J[I)V", shipSetSpaceFactionAllies),
|
|
JF("_shipSetSpaceFactionEnemies", "(J[I)V", shipSetSpaceFactionEnemies),
|
|
JF("_shipSetSpaceFactionIsAggro", "(JZ)V", shipSetSpaceFactionIsAggro),
|
|
JF("_getShipChassisType", "(J)Ljava/lang/String;", getShipChassisType),
|
|
JF("_getChassisComponentMassCurrent", "(J)F", getChassisComponentMassCurrent),
|
|
JF("_getChassisComponentMassMaximum", "(J)F", getChassisComponentMassMaximum),
|
|
JF("_setChassisComponentMassMaximum", "(JF)Z", setChassisComponentMassMaximum),
|
|
JF("_isShipSlotInstalled", "(JI)Z", isShipSlotInstalled),
|
|
JF("_isShipComponentDisabled", "(JI)Z", isShipComponentDisabled),
|
|
JF("_isShipComponentLowPower", "(JI)Z", isShipComponentLowPower),
|
|
JF("_isShipComponentDisabledNeedsPower", "(JI)Z", isShipComponentDisabledNeedsPower),
|
|
JF("_getShipComponentArmorHitpointsMaximum", "(JI)F", getShipComponentArmorHitpointsMaximum),
|
|
JF("_getShipComponentArmorHitpointsCurrent", "(JI)F", getShipComponentArmorHitpointsCurrent),
|
|
JF("_getShipComponentEfficiencyGeneral", "(JI)F", getShipComponentEfficiencyGeneral),
|
|
JF("_getShipComponentEfficiencyEnergy", "(JI)F", getShipComponentEfficiencyEnergy),
|
|
JF("_getShipComponentEnergyMaintenanceRequirement", "(JI)F", getShipComponentEnergyMaintenanceRequirement),
|
|
JF("_getShipComponentMass", "(JI)F", getShipComponentMass),
|
|
JF("_getShipComponentCrc", "(JI)I", getShipComponentCrc),
|
|
JF("_getShipComponentHitpointsCurrent", "(JI)F", getShipComponentHitpointsCurrent),
|
|
JF("_getShipComponentHitpointsMaximum", "(JI)F", getShipComponentHitpointsMaximum),
|
|
JF("_getShipComponentFlags", "(JI)I", getShipComponentFlags),
|
|
JF("_getShipComponentName", "(JI)Ljava/lang/String;", getShipComponentName),
|
|
JF("_getShipWeaponDamageMaximum", "(JI)F", getShipWeaponDamageMaximum),
|
|
JF("_getShipWeaponDamageMinimum", "(JI)F", getShipWeaponDamageMinimum),
|
|
JF("_getShipWeaponEffectivenessShields", "(JI)F", getShipWeaponEffectivenessShields),
|
|
JF("_getShipWeaponEffectivenessArmor", "(JI)F", getShipWeaponEffectivenessArmor),
|
|
JF("_getShipWeaponEnergyPerShot", "(JI)F", getShipWeaponEnergyPerShot),
|
|
JF("_getShipWeaponRefireRate", "(JI)F", getShipWeaponRefireRate),
|
|
JF("_getShipWeaponActualRefireRate", "(JI)F", getShipWeaponActualRefireRate),
|
|
JF("_getShipWeaponEfficiencyRefireRate", "(JI)F", getShipWeaponEfficiencyRefireRate),
|
|
JF("_getShipWeaponAmmoCurrent", "(JI)I", getShipWeaponAmmoCurrent),
|
|
JF("_getShipWeaponAmmoMaximum", "(JI)I", getShipWeaponAmmoMaximum),
|
|
JF("_getShipWeaponAmmoType", "(JI)I", getShipWeaponAmmoType),
|
|
JF("_getShipShieldHitpointsFrontCurrent", "(J)F", getShipShieldHitpointsFrontCurrent),
|
|
JF("_getShipShieldHitpointsFrontMaximum", "(J)F", getShipShieldHitpointsFrontMaximum),
|
|
JF("_getShipShieldHitpointsBackCurrent", "(J)F", getShipShieldHitpointsBackCurrent),
|
|
JF("_getShipShieldHitpointsBackMaximum", "(J)F", getShipShieldHitpointsBackMaximum),
|
|
JF("_getShipShieldRechargeRate", "(J)F", getShipShieldRechargeRate),
|
|
JF("_getShipCapacitorEnergyCurrent", "(J)F", getShipCapacitorEnergyCurrent),
|
|
JF("_getShipCapacitorEnergyMaximum", "(J)F", getShipCapacitorEnergyMaximum),
|
|
JF("_getShipCapacitorEnergyRechargeRate", "(J)F", getShipCapacitorEnergyRechargeRate),
|
|
JF("_getShipEngineAccelerationRate", "(J)F", getShipEngineAccelerationRate),
|
|
JF("_getShipEngineDecelerationRate", "(J)F", getShipEngineDecelerationRate),
|
|
JF("_getShipEnginePitchAccelerationRateDegrees", "(J)F", getShipEnginePitchAccelerationRateDegrees),
|
|
JF("_getShipEngineYawAccelerationRateDegrees", "(J)F", getShipEngineYawAccelerationRateDegrees),
|
|
JF("_getShipEngineRollAccelerationRateDegrees", "(J)F", getShipEngineRollAccelerationRateDegrees),
|
|
JF("_getShipEnginePitchRateMaximumDegrees", "(J)F", getShipEnginePitchRateMaximumDegrees),
|
|
JF("_getShipEngineYawRateMaximumDegrees", "(J)F", getShipEngineYawRateMaximumDegrees),
|
|
JF("_getShipEngineRollRateMaximumDegrees", "(J)F", getShipEngineRollRateMaximumDegrees),
|
|
JF("_getShipEngineSpeedMaximum", "(J)F", getShipEngineSpeedMaximum),
|
|
JF("_getShipEngineSpeedRotationFactorMaximum", "(J)F", getShipEngineSpeedRotationFactorMaximum),
|
|
JF("_getShipEngineSpeedRotationFactorMinimum", "(J)F", getShipEngineSpeedRotationFactorMinimum),
|
|
JF("_getShipEngineSpeedRotationFactorOptimal", "(J)F", getShipEngineSpeedRotationFactorOptimal),
|
|
JF("_getShipReactorEnergyGenerationRate", "(J)F", getShipReactorEnergyGenerationRate),
|
|
JF("_getShipBoosterEnergyCurrent", "(J)F", getShipBoosterEnergyCurrent),
|
|
JF("_getShipBoosterEnergyMaximum", "(J)F", getShipBoosterEnergyMaximum),
|
|
JF("_getShipBoosterEnergyRechargeRate", "(J)F", getShipBoosterEnergyRechargeRate),
|
|
JF("_getShipBoosterEnergyConsumptionRate", "(J)F", getShipBoosterEnergyConsumptionRate),
|
|
JF("_getShipBoosterAcceleration", "(J)F", getShipBoosterAcceleration),
|
|
JF("_getShipBoosterSpeedMaximum", "(J)F", getShipBoosterSpeedMaximum),
|
|
JF("_isShipBoosterActive", "(J)Z", isShipBoosterActive),
|
|
JF("_getShipDroidInterfaceCommandSpeed", "(J)F", getShipDroidInterfaceCommandSpeed),
|
|
JF("_getShipCargoHoldContentsMaximum", "(J)I", getShipCargoHoldContentsMaximum),
|
|
JF("_getShipCargoHoldContentsCurrent", "(J)I", getShipCargoHoldContentsCurrent),
|
|
JF("_setShipComponentArmorHitpointsMaximum", "(JIF)V", setShipComponentArmorHitpointsMaximum),
|
|
JF("_setShipComponentArmorHitpointsCurrent", "(JIF)V", setShipComponentArmorHitpointsCurrent),
|
|
JF("_setShipComponentEfficiencyGeneral", "(JIF)V", setShipComponentEfficiencyGeneral),
|
|
JF("_setShipComponentEfficiencyEnergy", "(JIF)V", setShipComponentEfficiencyEnergy),
|
|
JF("_setShipComponentEnergyMaintenanceRequirement", "(JIF)V", setShipComponentEnergyMaintenanceRequirement),
|
|
JF("_setShipComponentMass", "(JIF)V", setShipComponentMass),
|
|
JF("_setShipComponentHitpointsCurrent", "(JIF)V", setShipComponentHitpointsCurrent),
|
|
JF("_setShipComponentHitpointsMaximum", "(JIF)V", setShipComponentHitpointsMaximum),
|
|
JF("_setShipComponentFlags", "(JII)V", setShipComponentFlags),
|
|
JF("_setShipComponentName", "(JILjava/lang/String;)V", setShipComponentName),
|
|
JF("_setShipComponentDisabled", "(JIZ)V", setShipComponentDisabled),
|
|
JF("_setShipComponentLowPower", "(JIZ)V", setShipComponentLowPower),
|
|
JF("_setShipComponentDisabledNeedsPower", "(JIZ)V", setShipComponentDisabledNeedsPower),
|
|
JF("_setShipWeaponDamageMaximum", "(JIF)V", setShipWeaponDamageMaximum),
|
|
JF("_setShipWeaponDamageMinimum", "(JIF)V", setShipWeaponDamageMinimum),
|
|
JF("_setShipWeaponEffectivenessShields", "(JIF)V", setShipWeaponEffectivenessShields),
|
|
JF("_setShipWeaponEffectivenessArmor", "(JIF)V", setShipWeaponEffectivenessArmor),
|
|
JF("_setShipWeaponEnergyPerShot", "(JIF)V", setShipWeaponEnergyPerShot),
|
|
JF("_setShipWeaponRefireRate", "(JIF)V", setShipWeaponRefireRate),
|
|
JF("_setShipWeaponEfficiencyRefireRate", "(JIF)V", setShipWeaponEfficiencyRefireRate),
|
|
JF("_setShipWeaponAmmoCurrent", "(JII)V", setShipWeaponAmmoCurrent),
|
|
JF("_setShipWeaponAmmoMaximum", "(JII)V", setShipWeaponAmmoMaximum),
|
|
JF("_setShipWeaponAmmoType", "(JII)V", setShipWeaponAmmoType),
|
|
JF("_setShipShieldHitpointsFrontCurrent", "(JF)V", setShipShieldHitpointsFrontCurrent),
|
|
JF("_setShipShieldHitpointsFrontMaximum", "(JF)V", setShipShieldHitpointsFrontMaximum),
|
|
JF("_setShipShieldHitpointsBackCurrent", "(JF)V", setShipShieldHitpointsBackCurrent),
|
|
JF("_setShipShieldHitpointsBackMaximum", "(JF)V", setShipShieldHitpointsBackMaximum),
|
|
JF("_setShipShieldRechargeRate", "(JF)V", setShipShieldRechargeRate),
|
|
JF("_setShipCapacitorEnergyCurrent", "(JF)V", setShipCapacitorEnergyCurrent),
|
|
JF("_setShipCapacitorEnergyMaximum", "(JF)V", setShipCapacitorEnergyMaximum),
|
|
JF("_setShipCapacitorEnergyRechargeRate", "(JF)V", setShipCapacitorEnergyRechargeRate),
|
|
JF("_setShipEngineAccelerationRate", "(JF)V", setShipEngineAccelerationRate),
|
|
JF("_setShipEngineDecelerationRate", "(JF)V", setShipEngineDecelerationRate),
|
|
JF("_setShipEnginePitchAccelerationRateDegrees", "(JF)V", setShipEnginePitchAccelerationRateDegrees),
|
|
JF("_setShipEngineYawAccelerationRateDegrees", "(JF)V", setShipEngineYawAccelerationRateDegrees),
|
|
JF("_setShipEngineRollAccelerationRateDegrees", "(JF)V", setShipEngineRollAccelerationRateDegrees),
|
|
JF("_setShipEnginePitchRateMaximumDegrees", "(JF)V", setShipEnginePitchRateMaximumDegrees),
|
|
JF("_setShipEngineYawRateMaximumDegrees", "(JF)V", setShipEngineYawRateMaximumDegrees),
|
|
JF("_setShipEngineRollRateMaximumDegrees", "(JF)V", setShipEngineRollRateMaximumDegrees),
|
|
JF("_setShipEngineSpeedMaximum", "(JF)V", setShipEngineSpeedMaximum),
|
|
JF("_setShipEngineSpeedRotationFactorMaximum", "(JF)V", setShipEngineSpeedRotationFactorMaximum),
|
|
JF("_setShipEngineSpeedRotationFactorMinimum", "(JF)V", setShipEngineSpeedRotationFactorMinimum),
|
|
JF("_setShipEngineSpeedRotationFactorOptimal", "(JF)V", setShipEngineSpeedRotationFactorOptimal),
|
|
JF("_setShipReactorEnergyGenerationRate", "(JF)V", setShipReactorEnergyGenerationRate),
|
|
JF("_setShipBoosterEnergyCurrent", "(JF)V", setShipBoosterEnergyCurrent),
|
|
JF("_setShipBoosterEnergyMaximum", "(JF)V", setShipBoosterEnergyMaximum),
|
|
JF("_setShipBoosterEnergyRechargeRate", "(JF)V", setShipBoosterEnergyRechargeRate),
|
|
JF("_setShipBoosterEnergyConsumptionRate", "(JF)V", setShipBoosterEnergyConsumptionRate),
|
|
JF("_setShipBoosterAcceleration", "(JF)V", setShipBoosterAcceleration),
|
|
JF("_setShipBoosterSpeedMaximum", "(JF)V", setShipBoosterSpeedMaximum),
|
|
JF("_setShipDroidInterfaceCommandSpeed", "(JF)V", setShipDroidInterfaceCommandSpeed),
|
|
JF("_setShipCargoHoldContentsMaximum", "(JI)V", setShipCargoHoldContentsMaximum),
|
|
JF("_setShipCargoHoldContent", "(JJI)V", setShipCargoHoldContent),
|
|
JF("_getShipCargoHoldContent", "(JJ)I", getShipCargoHoldContent),
|
|
JF("_getShipCargoHoldContentsResourceTypes", "(J)[J", getShipCargoHoldContentsResourceTypes),
|
|
JF("_getShipCargoHoldContentsAmounts", "(J)[I", getShipCargoHoldContentsAmounts),
|
|
JF("_shipCanInstallComponent", "(JIJ)Z", shipCanInstallComponent),
|
|
JF("_shipPseudoInstallComponent", "(JII)Z", shipPseudoInstallComponent),
|
|
JF("_shipInstallComponent", "(JJIJ)Z", shipInstallComponent),
|
|
JF("_shipUninstallComponent", "(JJIJ)J", shipUninstallComponent),
|
|
JF("_shipUninstallComponentAllowOverload", "(JJIJ)J", shipUninstallComponentAllowOverload),
|
|
JF("_getShipChassisSlots", "(J)[I", getShipChassisSlots),
|
|
JF("_setShipSlotTargetable", "(JIZ)V", setShipSlotTargetable),
|
|
JF("_isShipSlotTargetable", "(JI)Z", isShipSlotTargetable),
|
|
JF("_getShipComponentDescriptorType", "(J)I", getShipComponentDescriptorType),
|
|
JF("getShipComponentDescriptorTypeName", "(I)Ljava/lang/String;", getShipComponentDescriptorTypeName),
|
|
JF("getShipComponentDescriptorTypeByName", "(Ljava/lang/String;)I", getShipComponentDescriptorTypeByName),
|
|
JF("_getShipComponentDescriptorCrc", "(J)I", getShipComponentDescriptorCrc),
|
|
JF("getShipComponentDescriptorCrcName", "(I)Ljava/lang/String;", getShipComponentDescriptorCrcName),
|
|
JF("getShipComponentDescriptorCompatibility", "(I)Ljava/lang/String;", getShipComponentDescriptorCompatibility),
|
|
JF("getShipComponentDescriptorWeaponIsAmmoConsuming", "(I)Z", getShipComponentDescriptorWeaponIsAmmoConsuming),
|
|
JF("getShipComponentDescriptorWeaponIsMissile", "(I)Z", getShipComponentDescriptorWeaponIsMissile),
|
|
JF("getShipComponentDescriptorWeaponIsCountermeasure","(I)Z", getShipComponentDescriptorWeaponIsCountermeasure),
|
|
JF("getShipComponentDescriptorWeaponIsMining", "(I)Z", getShipComponentDescriptorWeaponIsMining),
|
|
JF("getShipComponentDescriptorWeaponIsTractor", "(I)Z", getShipComponentDescriptorWeaponIsTractor),
|
|
JF("getShipComponentDescriptorWeaponRange", "(I)F", getShipComponentDescriptorWeaponRange),
|
|
JF("getShipComponentDescriptorWeaponProjectileSpeed", "(I)F", getShipComponentDescriptorWeaponProjectileSpeed),
|
|
JF("_getDroidControlDeviceForShip", "(J)J", getDroidControlDeviceForShip),
|
|
JF("_associateDroidControlDeviceWithShip", "(JJ)Z", associateDroidControlDeviceWithShip),
|
|
JF("_removeDroidControlDeviceFromShip", "(J)Z", removeDroidControlDeviceFromShip),
|
|
JF("_launchShipFromHangar", "(JLjava/lang/String;Lscript/transform;)J", launchShipFromHangar),
|
|
JF("__commPlayers", "(JLjava/lang/String;Ljava/lang/String;F[JLjava/lang/String;Z)V", commPlayers),
|
|
JF("_shipIsInNebula", "(JLjava/lang/String;)Z", shipIsInNebula),
|
|
JF("_setShipWingName", "(JLjava/lang/String;)Z", setShipWingName),
|
|
JF("_getShipWingName", "(J)Ljava/lang/String;", getShipWingName),
|
|
JF("_setShipTypeName", "(JLjava/lang/String;)Z", setShipTypeName),
|
|
JF("_getShipTypeName", "(J)Ljava/lang/String;", getShipTypeName),
|
|
JF("_setShipDifficulty", "(JLjava/lang/String;)Z", setShipDifficulty),
|
|
JF("_getShipDifficulty", "(J)Ljava/lang/String;", getShipDifficulty),
|
|
JF("_setShipFaction", "(JLjava/lang/String;)Z", setShipFaction),
|
|
JF("_getShipFaction", "(J)Ljava/lang/String;", getShipFaction),
|
|
JF("_addMissionCriticalObject", "(JJ)Z", addMissionCriticalObject),
|
|
JF("_removeMissionCriticalObject", "(JJ)Z", removeMissionCriticalObject),
|
|
JF("_clearMissionCriticalObjects", "(J)Z", clearMissionCriticalObjects),
|
|
JF("_isMissionCriticalObject", "(JJ)Z", isMissionCriticalObject),
|
|
JF("_getShipComponentDebugString", "(JI)Ljava/lang/String;", getShipComponentDebugString),
|
|
JF("_notifyShipHit", "(JLscript/vector;Lscript/vector;IFF)V", notifyShipHit),
|
|
JF("_setDynamicMiningAsteroidVelocity", "(JLscript/vector;)V", setDynamicMiningAsteroidVelocity),
|
|
JF("_getDynamicMiningAsteroidVelocity", "(J)Lscript/vector;", getDynamicMiningAsteroidVelocity),
|
|
JF("_openSpaceMiningUi", "(JJLjava/lang/String;)V", openSpaceMiningUi),
|
|
};
|
|
|
|
return JavaLibrary::registerNatives(NATIVES, sizeof(NATIVES)/sizeof(NATIVES[0]));
|
|
}
|
|
|
|
|
|
// ======================================================================
|
|
|
|
jboolean JNICALL ScriptMethodsShipNamespace::pilotShip(JNIEnv *env, jobject /*self*/, jlong pilotId, jlong pilotSlotId)
|
|
{
|
|
//-- Make sure ships are enabled
|
|
if (!verifyShipsEnabled())
|
|
return JNI_FALSE;
|
|
|
|
//-- Get the pilot object.
|
|
CreatureObject * const pilotObject = JavaLibrary::getCreatureThrow(env, pilotId, "pilotShip(): error in pilotId arg");
|
|
if (!pilotObject)
|
|
return JNI_FALSE;
|
|
|
|
//-- Ensure that the pilot is not already piloting a ship.
|
|
if (pilotObject->getPilotedShip())
|
|
{
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::pilotShip(): pilot id=[%s] is already riding a ship.", pilotObject->getNetworkId().getValueString().c_str()));
|
|
return JNI_FALSE;
|
|
}
|
|
|
|
//-- Get the pilot slot object.
|
|
ServerObject * pilotSlotObject = 0;
|
|
if (!JavaLibrary::getObject(pilotSlotId, pilotSlotObject))
|
|
{
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::pilotShip: could not resolve pilotSlotObject"));
|
|
return JNI_FALSE;
|
|
}
|
|
|
|
//-- Make sure the ship is a player controlled ship
|
|
if (pilotObject->isPlayerControlled())
|
|
{
|
|
//-- Get the containing ship
|
|
ShipObject * const shipObject = ShipObject::getContainingShipObject(pilotSlotObject);
|
|
if (!shipObject)
|
|
{
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::pilotShip: pilotSlotObject [id=%s, template=%s] does not have a containing ship", pilotSlotObject->getNetworkId().getValueString().c_str(), pilotSlotObject->getObjectTemplateName()));
|
|
return JNI_FALSE;
|
|
}
|
|
|
|
if (!shipObject->isPlayerShip())
|
|
return JNI_FALSE;
|
|
}
|
|
|
|
//-- Have the pilot mount the ship.
|
|
if (!pilotObject->pilotShip(*pilotSlotObject))
|
|
return JNI_FALSE;
|
|
|
|
return JNI_TRUE;
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
jboolean JNICALL ScriptMethodsShipNamespace::unpilotShip(JNIEnv *env, jobject /*self*/, jlong pilotId)
|
|
{
|
|
//-- Make sure ships are enabled
|
|
if (!verifyShipsEnabled())
|
|
return JNI_FALSE;
|
|
|
|
//-- Get the pilot.
|
|
CreatureObject * const pilotObject = JavaLibrary::getCreatureThrow(env, pilotId, "unpilotShip(): error in pilotId arg");
|
|
if (!pilotObject)
|
|
return JNI_FALSE;
|
|
|
|
//-- Get the ship.
|
|
ShipObject * const shipObject = pilotObject->getPilotedShip();
|
|
if (!shipObject)
|
|
{
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::unpilotShip(): pilot id=[%s] is not piloting a ship.", pilotObject->getNetworkId().getValueString().c_str()));
|
|
return JNI_FALSE;
|
|
}
|
|
|
|
//-- Detach the pilot from the ship.
|
|
if (!pilotObject->unpilotShip())
|
|
return JNI_FALSE;
|
|
|
|
return JNI_TRUE;
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
jlong JNICALL ScriptMethodsShipNamespace::getShipPilot(JNIEnv * env, jobject /*self*/, jlong jobject_shipId)
|
|
{
|
|
//-- Make sure ships are enabled
|
|
if (!verifyShipsEnabled())
|
|
return 0;
|
|
|
|
//-- Get the ship object.
|
|
ShipObject const * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "getShipPilot(): obj_id shipId did not resolve to a ShipObject", false);
|
|
if (!shipObject)
|
|
return 0;
|
|
|
|
//-- Get the pilot object
|
|
CreatureObject const * const pilotObject = shipObject->getPilot();
|
|
NetworkId const pilotNetworkId = (pilotObject ? pilotObject->getNetworkId() : NetworkId::cms_invalid);
|
|
|
|
return pilotNetworkId.getValue();
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
jlong JNICALL ScriptMethodsShipNamespace::getPilotedShip(JNIEnv * env, jobject /*self*/, jlong jobject_pilotId)
|
|
{
|
|
//-- Make sure ships are enabled
|
|
if (!verifyShipsEnabled())
|
|
return 0;
|
|
|
|
//-- Get the pilot object.
|
|
CreatureObject const * const creatureObject = JavaLibrary::getCreatureThrow(env, jobject_pilotId, "getPilotedShip(): obj_id pilotId did not resolve to a ShipObject", false);
|
|
if (!creatureObject)
|
|
return 0;
|
|
|
|
ShipObject const * const shipObject = creatureObject->getPilotedShip();
|
|
NetworkId const shipNetworkId = (shipObject ? shipObject->getNetworkId() : NetworkId::cms_invalid);
|
|
|
|
return shipNetworkId.getValue();
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
jboolean JNICALL ScriptMethodsShipNamespace::getShipHasWings(JNIEnv * env, jobject /*self*/, jlong jobject_shipId)
|
|
{
|
|
//-- Make sure ships are enabled
|
|
if (!verifyShipsEnabled())
|
|
return JNI_FALSE;
|
|
|
|
ShipObject const * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "getShipHasWings(): shipId obj_id did not resolve to a ShipObject", false);
|
|
if (!shipObject)
|
|
return JNI_FALSE;
|
|
|
|
if (!shipObject->hasWings())
|
|
return JNI_FALSE;
|
|
|
|
return JNI_TRUE;
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
jfloat JNICALL ScriptMethodsShipNamespace::getShipCurrentSpeed(JNIEnv * env, jobject /*self*/, jlong jobject_shipId)
|
|
{
|
|
//-- Make sure ships are enabled
|
|
if (!verifyShipsEnabled())
|
|
return 0.f;
|
|
|
|
ShipObject const * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "getShipCurrentSpeed(): shipId obj_id did not resolve to a ShipObject", false);
|
|
if (!shipObject)
|
|
return 0.f;
|
|
|
|
return shipObject->getCurrentSpeed();
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
jboolean JNICALL ScriptMethodsShipNamespace::setShipSlideDampener(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jfloat jfloat_slideDampener)
|
|
{
|
|
//-- Make sure ships are enabled
|
|
if (!verifyShipsEnabled())
|
|
return JNI_FALSE;
|
|
|
|
ShipObject * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "setShipSlideDampener(): shipId obj_id did not resolve to a ShipObject", false);
|
|
if (!shipObject)
|
|
return JNI_FALSE;
|
|
|
|
bool const result = shipObject->setSlideDampener(jfloat_slideDampener);
|
|
if (!result)
|
|
{
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::setShipSlideDampener(): could not set value %1.2f (possibly out of range)", jfloat_slideDampener));
|
|
return JNI_FALSE;
|
|
}
|
|
|
|
return JNI_TRUE;
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
jfloat JNICALL ScriptMethodsShipNamespace::getShipSlideDampener(JNIEnv * env, jobject /*self*/, jlong jobject_shipId)
|
|
{
|
|
//-- Make sure ships are enabled
|
|
if (!verifyShipsEnabled())
|
|
return 0.f;
|
|
|
|
ShipObject const * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "getShipSlideDampener(): shipId obj_id did not resolve to a ShipObject", false);
|
|
if (!shipObject)
|
|
return 0.f;
|
|
|
|
return shipObject->getSlideDampener();
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
jboolean JNICALL ScriptMethodsShipNamespace::setShipCurrentYaw(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jfloat jfloat_currentYaw)
|
|
{
|
|
//-- Make sure ships are enabled
|
|
if (!verifyShipsEnabled())
|
|
return JNI_FALSE;
|
|
|
|
ShipObject * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "setShipCurrentYaw(): shipId obj_id did not resolve to a ShipObject", false);
|
|
if (!shipObject)
|
|
return JNI_FALSE;
|
|
|
|
bool const result = shipObject->setCurrentYaw(jfloat_currentYaw);
|
|
if (!result)
|
|
{
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::setShipCurrentYaw(): could not set value %1.2f (possibly out of range)", jfloat_currentYaw));
|
|
return JNI_FALSE;
|
|
}
|
|
|
|
return JNI_TRUE;
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
jfloat JNICALL ScriptMethodsShipNamespace::getShipCurrentYaw(JNIEnv * env, jobject /*self*/, jlong jobject_shipId)
|
|
{
|
|
//-- Make sure ships are enabled
|
|
if (!verifyShipsEnabled())
|
|
return 0.f;
|
|
|
|
ShipObject const * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "getShipCurrentYaw(): shipId obj_id did not resolve to a ShipObject", false);
|
|
if (!shipObject)
|
|
return 0.f;
|
|
|
|
return shipObject->getCurrentYaw();
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
jboolean JNICALL ScriptMethodsShipNamespace::setShipCurrentPitch(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jfloat jfloat_currentPitch)
|
|
{
|
|
//-- Make sure ships are enabled
|
|
if (!verifyShipsEnabled())
|
|
return JNI_FALSE;
|
|
|
|
ShipObject * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "setShipCurrentPitch(): shipId obj_id did not resolve to a ShipObject", false);
|
|
if (!shipObject)
|
|
return JNI_FALSE;
|
|
|
|
bool const result = shipObject->setCurrentPitch(jfloat_currentPitch);
|
|
if (!result)
|
|
{
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::setShipCurrentPitch(): could not set value %1.2f (possibly out of range)", jfloat_currentPitch));
|
|
return JNI_FALSE;
|
|
}
|
|
|
|
return JNI_TRUE;
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
jfloat JNICALL ScriptMethodsShipNamespace::getShipCurrentPitch(JNIEnv * env, jobject /*self*/, jlong jobject_shipId)
|
|
{
|
|
//-- Make sure ships are enabled
|
|
if (!verifyShipsEnabled())
|
|
return 0.f;
|
|
|
|
ShipObject const * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "getShipCurrentPitch(): shipId obj_id did not resolve to a ShipObject", false);
|
|
if (!shipObject)
|
|
return 0.f;
|
|
|
|
return shipObject->getCurrentPitch();
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
jboolean JNICALL ScriptMethodsShipNamespace::setShipCurrentRoll(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jfloat jfloat_currentRoll)
|
|
{
|
|
//-- Make sure ships are enabled
|
|
if (!verifyShipsEnabled())
|
|
return JNI_FALSE;
|
|
|
|
ShipObject * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "setShipCurrentRoll(): shipId obj_id did not resolve to a ShipObject", false);
|
|
if (!shipObject)
|
|
return JNI_FALSE;
|
|
|
|
bool const result = shipObject->setCurrentRoll(jfloat_currentRoll);
|
|
if (!result)
|
|
{
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::setShipCurrentRoll(): could not set value %1.2f (possibly out of range)", jfloat_currentRoll));
|
|
return JNI_FALSE;
|
|
}
|
|
|
|
return JNI_TRUE;
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
jfloat JNICALL ScriptMethodsShipNamespace::getShipCurrentRoll(JNIEnv * env, jobject /*self*/, jlong jobject_shipId)
|
|
{
|
|
//-- Make sure ships are enabled
|
|
if (!verifyShipsEnabled())
|
|
return 0.f;
|
|
|
|
ShipObject const * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "getShipCurrentRoll(): shipId obj_id did not resolve to a ShipObject", false);
|
|
if (!shipObject)
|
|
return 0.f;
|
|
|
|
return shipObject->getCurrentRoll();
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
jboolean JNICALL ScriptMethodsShipNamespace::setShipCurrentChassisHitPoints(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jfloat jfloat_currentChassisHitPoints)
|
|
{
|
|
//-- Make sure ships are enabled
|
|
if (!verifyShipsEnabled())
|
|
return JNI_FALSE;
|
|
|
|
ShipObject * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "setShipCurrentChassisHitPoints(): shipId obj_id did not resolve to a ShipObject", false);
|
|
if (!shipObject)
|
|
return JNI_FALSE;
|
|
|
|
bool const result = shipObject->setCurrentChassisHitPoints(jfloat_currentChassisHitPoints);
|
|
if (!result)
|
|
{
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::setShipCurrentChassisHitPoints(): could not set value %1.2f (possibly out of range)", jfloat_currentChassisHitPoints));
|
|
return JNI_FALSE;
|
|
}
|
|
|
|
return JNI_TRUE;
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
jfloat JNICALL ScriptMethodsShipNamespace::getShipCurrentChassisHitPoints(JNIEnv * env, jobject /*self*/, jlong jobject_shipId)
|
|
{
|
|
//-- Make sure ships are enabled
|
|
if (!verifyShipsEnabled())
|
|
return 0.f;
|
|
|
|
ShipObject const * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "getShipCurrentChassisHitPoints(): shipId obj_id did not resolve to a ShipObject", false);
|
|
if (!shipObject)
|
|
return 0.f;
|
|
|
|
return shipObject->getCurrentChassisHitPoints();
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
jboolean JNICALL ScriptMethodsShipNamespace::setShipMaximumChassisHitPoints(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jfloat jfloat_currentChassisHitPoints)
|
|
{
|
|
//-- Make sure ships are enabled
|
|
if (!verifyShipsEnabled())
|
|
return JNI_FALSE;
|
|
|
|
ShipObject * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "setShipMaximumChassisHitPoints(): shipId obj_id did not resolve to a ShipObject", false);
|
|
if (!shipObject)
|
|
return JNI_FALSE;
|
|
|
|
bool const result = shipObject->setMaximumChassisHitPoints(jfloat_currentChassisHitPoints);
|
|
if (!result)
|
|
{
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::setShipMaximumChassisHitPoints(): could not set value %1.2f (possibly out of range)", jfloat_currentChassisHitPoints));
|
|
return JNI_FALSE;
|
|
}
|
|
|
|
return JNI_TRUE;
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
jfloat JNICALL ScriptMethodsShipNamespace::getShipMaximumChassisHitPoints(JNIEnv * env, jobject /*self*/, jlong jobject_shipId)
|
|
{
|
|
//-- Make sure ships are enabled
|
|
if (!verifyShipsEnabled())
|
|
return 0.f;
|
|
|
|
ShipObject const * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "getShipMaximumChassisHitPoints(): shipId obj_id did not resolve to a ShipObject", false);
|
|
if (!shipObject)
|
|
return 0.f;
|
|
|
|
return shipObject->getMaximumChassisHitPoints();
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
//----------------------------------------------------------------------
|
|
//-- component system
|
|
//----------------------------------------------------------------------
|
|
//----------------------------------------------------------------------
|
|
|
|
//-- ship component methods
|
|
|
|
jfloat JNICALL ScriptMethodsShipNamespace::getShipActualAccelerationRate(JNIEnv * env, jobject /*self*/, jlong jobject_shipId)
|
|
{
|
|
//-- Make sure ships are enabled
|
|
if (!verifyShipsEnabled())
|
|
return 0.f;
|
|
|
|
ShipObject const * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "getShipActualAccelerationRate(): shipId obj_id did not resolve to a ShipObject", false);
|
|
if (!shipObject)
|
|
return 0.f;
|
|
|
|
return shipObject->getShipActualAccelerationRate();
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jfloat JNICALL ScriptMethodsShipNamespace::getShipActualDecelerationRate(JNIEnv * env, jobject /*self*/, jlong jobject_shipId)
|
|
{
|
|
//-- Make sure ships are enabled
|
|
if (!verifyShipsEnabled())
|
|
return 0.f;
|
|
|
|
ShipObject const * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "getShipActualDecelerationRate(): shipId obj_id did not resolve to a ShipObject", false);
|
|
if (!shipObject)
|
|
return 0.f;
|
|
|
|
return shipObject->getShipActualDecelerationRate();
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jfloat JNICALL ScriptMethodsShipNamespace::getShipActualPitchAccelerationRateDegrees(JNIEnv * env, jobject /*self*/, jlong jobject_shipId)
|
|
{
|
|
//-- Make sure ships are enabled
|
|
if (!verifyShipsEnabled())
|
|
return 0.f;
|
|
|
|
ShipObject const * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "getShipActualPitchAccelerationRate(): shipId obj_id did not resolve to a ShipObject", false);
|
|
if (!shipObject)
|
|
return 0.f;
|
|
|
|
return convertRadiansToDegrees(shipObject->getShipActualPitchAccelerationRate());
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jfloat JNICALL ScriptMethodsShipNamespace::getShipActualYawAccelerationRateDegrees(JNIEnv * env, jobject /*self*/, jlong jobject_shipId)
|
|
{
|
|
//-- Make sure ships are enabled
|
|
if (!verifyShipsEnabled())
|
|
return 0.f;
|
|
|
|
ShipObject const * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "getShipActualYawAccelerationRate(): shipId obj_id did not resolve to a ShipObject", false);
|
|
if (!shipObject)
|
|
return 0.f;
|
|
|
|
return convertRadiansToDegrees(shipObject->getShipActualYawAccelerationRate());
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jfloat JNICALL ScriptMethodsShipNamespace::getShipActualRollAccelerationRateDegrees(JNIEnv * env, jobject /*self*/, jlong jobject_shipId)
|
|
{
|
|
//-- Make sure ships are enabled
|
|
if (!verifyShipsEnabled())
|
|
return 0.f;
|
|
|
|
ShipObject const * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "getShipActualRollAccelerationRate(): shipId obj_id did not resolve to a ShipObject", false);
|
|
if (!shipObject)
|
|
return 0.f;
|
|
|
|
return convertRadiansToDegrees(shipObject->getShipActualRollAccelerationRate());
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jfloat JNICALL ScriptMethodsShipNamespace::getShipActualPitchRateMaximumDegrees(JNIEnv * env, jobject /*self*/, jlong jobject_shipId)
|
|
{
|
|
//-- Make sure ships are enabled
|
|
if (!verifyShipsEnabled())
|
|
return 0.f;
|
|
|
|
ShipObject const * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "getShipActualPitchRateMaximum(): shipId obj_id did not resolve to a ShipObject", false);
|
|
if (!shipObject)
|
|
return 0.f;
|
|
|
|
return convertRadiansToDegrees(shipObject->getShipActualPitchRateMaximum());
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jfloat JNICALL ScriptMethodsShipNamespace::getShipActualYawRateMaximumDegrees(JNIEnv * env, jobject /*self*/, jlong jobject_shipId)
|
|
{
|
|
//-- Make sure ships are enabled
|
|
if (!verifyShipsEnabled())
|
|
return 0.f;
|
|
|
|
ShipObject const * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "getShipActualYawRateMaximum(): shipId obj_id did not resolve to a ShipObject", false);
|
|
if (!shipObject)
|
|
return 0.f;
|
|
|
|
return convertRadiansToDegrees(shipObject->getShipActualYawRateMaximum());
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jfloat JNICALL ScriptMethodsShipNamespace::getShipActualRollRateMaximumDegrees(JNIEnv * env, jobject /*self*/, jlong jobject_shipId)
|
|
{
|
|
//-- Make sure ships are enabled
|
|
if (!verifyShipsEnabled())
|
|
return 0.f;
|
|
|
|
ShipObject const * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "getShipActualRollRateMaximum(): shipId obj_id did not resolve to a ShipObject", false);
|
|
if (!shipObject)
|
|
return 0.f;
|
|
|
|
return convertRadiansToDegrees(shipObject->getShipActualRollRateMaximum());
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jfloat JNICALL ScriptMethodsShipNamespace::getShipActualSpeedMaximum(JNIEnv * env, jobject /*self*/, jlong jobject_shipId)
|
|
{
|
|
//-- Make sure ships are enabled
|
|
if (!verifyShipsEnabled())
|
|
return 0.f;
|
|
|
|
ShipObject const * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "getShipActualSpeedMaximum(): shipId obj_id did not resolve to a ShipObject", false);
|
|
if (!shipObject)
|
|
return 0.f;
|
|
|
|
return shipObject->getShipActualSpeedMaximum();
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jstring JNICALL ScriptMethodsShipNamespace::getShipChassisType(JNIEnv * env, jobject /*self*/, jlong jobject_shipId)
|
|
{
|
|
//-- Make sure ships are enabled
|
|
if (!verifyShipsEnabled())
|
|
return nullptr;
|
|
|
|
ShipObject const * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "getShipChassisType(): shipId obj_id did not resolve to a ShipObject", false);
|
|
if (!shipObject)
|
|
return nullptr;
|
|
|
|
ShipChassis const * const shipChassis = ShipChassis::findShipChassisByCrc (shipObject->getChassisType());
|
|
if (shipChassis)
|
|
return JavaString(shipChassis->getName ().getString ()).getReturnValue();
|
|
|
|
return nullptr;
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jfloat JNICALL ScriptMethodsShipNamespace::getChassisComponentMassCurrent(JNIEnv * env, jobject /*self*/, jlong jobject_shipId)
|
|
{
|
|
//-- Make sure ships are enabled
|
|
if (!verifyShipsEnabled())
|
|
return 0.0f;
|
|
|
|
ShipObject const * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "getShipChassisType(): shipId obj_id did not resolve to a ShipObject", false);
|
|
if (!shipObject)
|
|
return 0.0f;
|
|
|
|
return shipObject->getChassisComponentMassCurrent();
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jfloat JNICALL ScriptMethodsShipNamespace::getChassisComponentMassMaximum(JNIEnv * env, jobject /*self*/, jlong jobject_shipId)
|
|
{
|
|
//-- Make sure ships are enabled
|
|
if (!verifyShipsEnabled())
|
|
return 0.0f;
|
|
|
|
ShipObject const * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "getShipChassisType(): shipId obj_id did not resolve to a ShipObject", false);
|
|
if (!shipObject)
|
|
return 0.0f;
|
|
|
|
return shipObject->getChassisComponentMassMaximum();
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jboolean JNICALL ScriptMethodsShipNamespace::setChassisComponentMassMaximum(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, float chassisComponentMassMaximum)
|
|
{
|
|
//-- Make sure ships are enabled
|
|
if (!verifyShipsEnabled())
|
|
return JNI_FALSE;
|
|
|
|
ShipObject * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "getShipChassisType(): shipId obj_id did not resolve to a ShipObject", false);
|
|
if (!shipObject)
|
|
return JNI_FALSE;
|
|
|
|
shipObject->setChassisComponentMassMaximum(chassisComponentMassMaximum);
|
|
|
|
return JNI_TRUE;
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jboolean JNICALL ScriptMethodsShipNamespace::isShipSlotInstalled(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jint chassisSlot)
|
|
{
|
|
//-- Make sure ships are enabled
|
|
if (!verifyShipsEnabled())
|
|
return false;
|
|
|
|
ShipObject * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "JavaLibrary::isShipSlotInstalled ship obj_id did not resolve to a ShipObject", false);
|
|
if (!shipObject)
|
|
return false;
|
|
|
|
return shipObject->isSlotInstalled(chassisSlot);
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jboolean JNICALL ScriptMethodsShipNamespace::isShipComponentDisabled(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jint chassisSlot)
|
|
{
|
|
ShipObject const * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "isShipComponentDisabled() invalid ship", false);
|
|
if (!shipObject)
|
|
return false;
|
|
|
|
return shipObject->isComponentDisabled(chassisSlot);
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jboolean JNICALL ScriptMethodsShipNamespace::isShipComponentDisabledNeedsPower(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jint chassisSlot)
|
|
{
|
|
ShipObject const * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "isShipComponentDisabledNeedsPower() invalid ship", false);
|
|
if (!shipObject)
|
|
return false;
|
|
|
|
return shipObject->isComponentDisabledNeedsPower(chassisSlot);
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jboolean JNICALL ScriptMethodsShipNamespace::isShipComponentLowPower(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jint chassisSlot)
|
|
{
|
|
ShipObject const * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "isShipComponentLowPower() invalid ship", false);
|
|
if (!shipObject)
|
|
return false;
|
|
|
|
return shipObject->isComponentLowPower(chassisSlot);
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jfloat JNICALL ScriptMethodsShipNamespace::getShipComponentArmorHitpointsMaximum(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jint chassisSlot)
|
|
{
|
|
ShipObject const * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "getShipComponentArmorHitpointsMaximum() invalid ship", false);
|
|
if (!shipObject)
|
|
return false;
|
|
|
|
return shipObject->getComponentArmorHitpointsMaximum(chassisSlot);
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jfloat JNICALL ScriptMethodsShipNamespace::getShipComponentArmorHitpointsCurrent(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jint chassisSlot)
|
|
{
|
|
ShipObject const * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "getShipComponentArmorHitpointsCurrent() invalid ship", false);
|
|
if (!shipObject)
|
|
return false;
|
|
|
|
return shipObject->getComponentArmorHitpointsCurrent(chassisSlot);
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jfloat JNICALL ScriptMethodsShipNamespace::getShipComponentEfficiencyGeneral(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jint chassisSlot)
|
|
{
|
|
ShipObject const * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "getShipComponentEfficiencyGeneral() invalid ship", false);
|
|
if (!shipObject)
|
|
return false;
|
|
|
|
return shipObject->getComponentEfficiencyGeneral(chassisSlot);
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jfloat JNICALL ScriptMethodsShipNamespace::getShipComponentEfficiencyEnergy(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jint chassisSlot)
|
|
{
|
|
ShipObject const * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "getShipComponentEfficiencyEnergy() invalid ship", false);
|
|
if (!shipObject)
|
|
return false;
|
|
|
|
return shipObject->getComponentEfficiencyEnergy(chassisSlot);
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jfloat JNICALL ScriptMethodsShipNamespace::getShipComponentEnergyMaintenanceRequirement(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jint chassisSlot)
|
|
{
|
|
ShipObject const * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "getShipComponentEnergyMaintenanceRequirement() invalid ship", false);
|
|
if (!shipObject)
|
|
return false;
|
|
|
|
return shipObject->getComponentEnergyMaintenanceRequirement(chassisSlot);
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jfloat JNICALL ScriptMethodsShipNamespace::getShipComponentMass(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jint chassisSlot)
|
|
{
|
|
ShipObject const * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "getShipComponentMass() invalid ship", false);
|
|
if (!shipObject)
|
|
return false;
|
|
|
|
return shipObject->getComponentMass(chassisSlot);
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jint JNICALL ScriptMethodsShipNamespace::getShipComponentCrc(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jint chassisSlot)
|
|
{
|
|
ShipObject const * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "getShipComponentCrc() invalid ship", false);
|
|
if (!shipObject)
|
|
return false;
|
|
|
|
return static_cast<int>(shipObject->getComponentCrc(chassisSlot));
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jfloat JNICALL ScriptMethodsShipNamespace::getShipComponentHitpointsCurrent(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jint chassisSlot)
|
|
{
|
|
ShipObject const * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "getShipComponentHitpointsCurrent() invalid ship", false);
|
|
if (!shipObject)
|
|
return false;
|
|
|
|
return shipObject->getComponentHitpointsCurrent(chassisSlot);
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jfloat JNICALL ScriptMethodsShipNamespace::getShipComponentHitpointsMaximum(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jint chassisSlot)
|
|
{
|
|
ShipObject const * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "getShipComponentHitpointsMaximum() invalid ship", false);
|
|
if (!shipObject)
|
|
return false;
|
|
|
|
return shipObject->getComponentHitpointsMaximum(chassisSlot);
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jint JNICALL ScriptMethodsShipNamespace::getShipComponentFlags(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jint chassisSlot)
|
|
{
|
|
ShipObject const * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "getShipComponentFlags() invalid ship", false);
|
|
if (!shipObject)
|
|
return false;
|
|
|
|
return shipObject->getComponentFlags(chassisSlot);
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jstring JNICALL ScriptMethodsShipNamespace::getShipComponentName(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jint chassisSlot)
|
|
{
|
|
ShipObject const * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "getShipComponentName() invalid ship", false);
|
|
if (!shipObject)
|
|
return nullptr;
|
|
|
|
Unicode::String const & name = shipObject->getComponentName(chassisSlot);
|
|
if (!name.empty())
|
|
return JavaString(name).getReturnValue();
|
|
|
|
ShipComponentDescriptor const * const shipComponentDescriptor = ShipComponentDescriptor::findShipComponentDescriptorByCrc(shipObject->getComponentCrc(chassisSlot));
|
|
if (shipComponentDescriptor)
|
|
{
|
|
ObjectTemplate const * const t = shipComponentDescriptor->getSharedObjectTemplate();
|
|
if (t)
|
|
{
|
|
SharedObjectTemplate const * const sharedTemplate = t->asSharedObjectTemplate();
|
|
if (sharedTemplate)
|
|
return JavaString("@"+sharedTemplate->getObjectName().getCanonicalRepresentation()).getReturnValue();
|
|
}
|
|
}
|
|
return JavaString("").getReturnValue();
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jfloat JNICALL ScriptMethodsShipNamespace::getShipWeaponDamageMaximum(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jint chassisSlot)
|
|
{
|
|
ShipObject const * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "getShipWeaponDamageMaximum() invalid ship", false);
|
|
if (!shipObject)
|
|
return false;
|
|
|
|
return shipObject->getWeaponDamageMaximum(chassisSlot);
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jfloat JNICALL ScriptMethodsShipNamespace::getShipWeaponDamageMinimum(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jint chassisSlot)
|
|
{
|
|
ShipObject const * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "getShipWeaponDamageMinimum() invalid ship", false);
|
|
if (!shipObject)
|
|
return false;
|
|
|
|
return shipObject->getWeaponDamageMinimum(chassisSlot);
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jfloat JNICALL ScriptMethodsShipNamespace::getShipWeaponEffectivenessShields(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jint chassisSlot)
|
|
{
|
|
ShipObject const * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "getShipWeaponEffectivenessShields() invalid ship", false);
|
|
if (!shipObject)
|
|
return false;
|
|
|
|
return shipObject->getWeaponEffectivenessShields(chassisSlot);
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jfloat JNICALL ScriptMethodsShipNamespace::getShipWeaponEffectivenessArmor(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jint chassisSlot)
|
|
{
|
|
ShipObject const * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "getShipWeaponEffectivenessArmor() invalid ship", false);
|
|
if (!shipObject)
|
|
return false;
|
|
|
|
return shipObject->getWeaponEffectivenessArmor(chassisSlot);
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jfloat JNICALL ScriptMethodsShipNamespace::getShipWeaponEnergyPerShot(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jint chassisSlot)
|
|
{
|
|
ShipObject const * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "getShipWeaponEnergyPerShot() invalid ship", false);
|
|
if (!shipObject)
|
|
return false;
|
|
|
|
return shipObject->getWeaponEnergyPerShot(chassisSlot);
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jfloat JNICALL ScriptMethodsShipNamespace::getShipWeaponRefireRate(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jint chassisSlot)
|
|
{
|
|
ShipObject const * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "getShipWeaponRefireRate() invalid ship", false);
|
|
if (!shipObject)
|
|
return false;
|
|
|
|
return shipObject->getWeaponRefireRate(chassisSlot);
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jfloat JNICALL ScriptMethodsShipNamespace::getShipWeaponActualRefireRate(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jint chassisSlot)
|
|
{
|
|
ShipObject const * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "getShipWeaponActualRefireRate() invalid ship", false);
|
|
if (!shipObject)
|
|
return false;
|
|
|
|
return shipObject->getWeaponActualRefireRate(chassisSlot);
|
|
}
|
|
//----------------------------------------------------------------------
|
|
|
|
jfloat JNICALL ScriptMethodsShipNamespace::getShipWeaponEfficiencyRefireRate(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jint chassisSlot)
|
|
{
|
|
ShipObject const * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "getShipWeaponEfficiencyRefireRate() invalid ship", false);
|
|
if (!shipObject)
|
|
return false;
|
|
|
|
return shipObject->getWeaponEfficiencyRefireRate(chassisSlot);
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jint JNICALL ScriptMethodsShipNamespace::getShipWeaponAmmoCurrent(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jint chassisSlot)
|
|
{
|
|
ShipObject const * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "getShipWeaponAmmoCurrent() invalid ship", false);
|
|
if (!shipObject)
|
|
return false;
|
|
|
|
return shipObject->getWeaponAmmoCurrent(chassisSlot);
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jint JNICALL ScriptMethodsShipNamespace::getShipWeaponAmmoMaximum(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jint chassisSlot)
|
|
{
|
|
ShipObject const * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "getShipWeaponAmmoMaximum() invalid ship", false);
|
|
if (!shipObject)
|
|
return false;
|
|
|
|
return shipObject->getWeaponAmmoMaximum(chassisSlot);
|
|
}
|
|
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jint JNICALL ScriptMethodsShipNamespace::getShipWeaponAmmoType(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jint chassisSlot)
|
|
{
|
|
ShipObject const * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "getShipWeaponAmmoType() invalid ship", false);
|
|
if (!shipObject)
|
|
return false;
|
|
|
|
return static_cast<int>(shipObject->getWeaponAmmoType(chassisSlot));
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jfloat JNICALL ScriptMethodsShipNamespace::getShipShieldHitpointsFrontCurrent(JNIEnv * env, jobject /*self*/, jlong jobject_shipId)
|
|
{
|
|
ShipObject const * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "getShipShieldHitpointsFrontCurrent() invalid ship", false);
|
|
if (!shipObject)
|
|
return false;
|
|
|
|
return shipObject->getShieldHitpointsFrontCurrent();
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jfloat JNICALL ScriptMethodsShipNamespace::getShipShieldHitpointsFrontMaximum(JNIEnv * env, jobject /*self*/, jlong jobject_shipId)
|
|
{
|
|
ShipObject const * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "getShipShieldHitpointsFrontMaximum() invalid ship", false);
|
|
if (!shipObject)
|
|
return false;
|
|
|
|
return shipObject->getShieldHitpointsFrontMaximum();
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jfloat JNICALL ScriptMethodsShipNamespace::getShipShieldHitpointsBackCurrent(JNIEnv * env, jobject /*self*/, jlong jobject_shipId)
|
|
{
|
|
ShipObject const * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "getShipShieldHitpointsBackCurrent() invalid ship", false);
|
|
if (!shipObject)
|
|
return false;
|
|
|
|
return shipObject->getShieldHitpointsBackCurrent();
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jfloat JNICALL ScriptMethodsShipNamespace::getShipShieldHitpointsBackMaximum(JNIEnv * env, jobject /*self*/, jlong jobject_shipId)
|
|
{
|
|
ShipObject const * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "getShipShieldHitpointsBackMaximum() invalid ship", false);
|
|
if (!shipObject)
|
|
return false;
|
|
|
|
return shipObject->getShieldHitpointsBackMaximum();
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jfloat JNICALL ScriptMethodsShipNamespace::getShipShieldRechargeRate(JNIEnv * env, jobject /*self*/, jlong jobject_shipId)
|
|
{
|
|
ShipObject const * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "getShipShieldRechargeRate() invalid ship", false);
|
|
if (!shipObject)
|
|
return false;
|
|
|
|
return shipObject->getShieldRechargeRate();
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jfloat JNICALL ScriptMethodsShipNamespace::getShipCapacitorEnergyCurrent(JNIEnv * env, jobject /*self*/, jlong jobject_shipId)
|
|
{
|
|
ShipObject const * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "getShipCapacitorEnergyCurrent() invalid ship", false);
|
|
if (!shipObject)
|
|
return false;
|
|
|
|
return shipObject->getCapacitorEnergyCurrent();
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jfloat JNICALL ScriptMethodsShipNamespace::getShipCapacitorEnergyMaximum(JNIEnv * env, jobject /*self*/, jlong jobject_shipId)
|
|
{
|
|
ShipObject const * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "getShipCapacitorEnergyMaximum() invalid ship", false);
|
|
if (!shipObject)
|
|
return false;
|
|
|
|
return shipObject->getCapacitorEnergyEffectiveMaximum();
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jfloat JNICALL ScriptMethodsShipNamespace::getShipCapacitorEnergyRechargeRate(JNIEnv * env, jobject /*self*/, jlong jobject_shipId)
|
|
{
|
|
ShipObject const * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "getShipCapacitorEnergyRechargeRate() invalid ship", false);
|
|
if (!shipObject)
|
|
return false;
|
|
|
|
return shipObject->getCapacitorEnergyRechargeRate();
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jfloat JNICALL ScriptMethodsShipNamespace::getShipEngineAccelerationRate(JNIEnv * env, jobject /*self*/, jlong jobject_shipId)
|
|
{
|
|
ShipObject const * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "getShipEngineAccelerationRate() invalid ship", false);
|
|
if (!shipObject)
|
|
return false;
|
|
|
|
return shipObject->getEngineAccelerationRate();
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jfloat JNICALL ScriptMethodsShipNamespace::getShipEngineDecelerationRate(JNIEnv * env, jobject /*self*/, jlong jobject_shipId)
|
|
{
|
|
ShipObject const * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "getShipEngineDecelerationRate() invalid ship", false);
|
|
if (!shipObject)
|
|
return false;
|
|
|
|
return shipObject->getEngineDecelerationRate();
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jfloat JNICALL ScriptMethodsShipNamespace::getShipEnginePitchAccelerationRateDegrees(JNIEnv * env, jobject /*self*/, jlong jobject_shipId)
|
|
{
|
|
ShipObject const * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "getShipEnginePitchAccelerationRateDegrees() invalid ship", false);
|
|
if (!shipObject)
|
|
return false;
|
|
|
|
return convertRadiansToDegrees(shipObject->getEnginePitchAccelerationRate());
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jfloat JNICALL ScriptMethodsShipNamespace::getShipEngineYawAccelerationRateDegrees(JNIEnv * env, jobject /*self*/, jlong jobject_shipId)
|
|
{
|
|
ShipObject const * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "getShipEngineYawAccelerationRateDegrees() invalid ship", false);
|
|
if (!shipObject)
|
|
return false;
|
|
|
|
return convertRadiansToDegrees(shipObject->getEngineYawAccelerationRate());
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jfloat JNICALL ScriptMethodsShipNamespace::getShipEngineRollAccelerationRateDegrees(JNIEnv * env, jobject /*self*/, jlong jobject_shipId)
|
|
{
|
|
ShipObject const * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "getShipEngineRollAccelerationRateDegrees() invalid ship", false);
|
|
if (!shipObject)
|
|
return false;
|
|
|
|
return convertRadiansToDegrees(shipObject->getEngineRollAccelerationRate());
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jfloat JNICALL ScriptMethodsShipNamespace::getShipEnginePitchRateMaximumDegrees(JNIEnv * env, jobject /*self*/, jlong jobject_shipId)
|
|
{
|
|
ShipObject const * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "getShipEnginePitchRateMaximumDegrees() invalid ship", false);
|
|
if (!shipObject)
|
|
return false;
|
|
|
|
return convertRadiansToDegrees(shipObject->getEnginePitchRateMaximum());
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jfloat JNICALL ScriptMethodsShipNamespace::getShipEngineYawRateMaximumDegrees(JNIEnv * env, jobject /*self*/, jlong jobject_shipId)
|
|
{
|
|
ShipObject const * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "getShipEngineYawRateMaximumDegrees() invalid ship", false);
|
|
if (!shipObject)
|
|
return false;
|
|
|
|
return convertRadiansToDegrees(shipObject->getEngineYawRateMaximum());
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jfloat JNICALL ScriptMethodsShipNamespace::getShipEngineRollRateMaximumDegrees(JNIEnv * env, jobject /*self*/, jlong jobject_shipId)
|
|
{
|
|
ShipObject const * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "getShipEngineRollRateMaximumDegrees() invalid ship", false);
|
|
if (!shipObject)
|
|
return false;
|
|
|
|
return convertRadiansToDegrees(shipObject->getEngineRollRateMaximum());
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jfloat JNICALL ScriptMethodsShipNamespace::getShipEngineSpeedMaximum(JNIEnv * env, jobject /*self*/, jlong jobject_shipId)
|
|
{
|
|
ShipObject const * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "getShipEngineSpeedMaximum() invalid ship", false);
|
|
if (!shipObject)
|
|
return false;
|
|
|
|
return shipObject->getEngineSpeedMaximum();
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jfloat JNICALL ScriptMethodsShipNamespace::getShipEngineSpeedRotationFactorMaximum(JNIEnv * env, jobject /*self*/, jlong jobject_shipId)
|
|
{
|
|
ShipObject const * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "getShipEngineSpeedRotationFactorMaximum() invalid ship", false);
|
|
if (!shipObject)
|
|
return false;
|
|
|
|
return shipObject->getEngineSpeedRotationFactorMaximum();
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jfloat JNICALL ScriptMethodsShipNamespace::getShipEngineSpeedRotationFactorMinimum(JNIEnv * env, jobject /*self*/, jlong jobject_shipId)
|
|
{
|
|
ShipObject const * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "getShipEngineSpeedRotationFactorMinimum() invalid ship", false);
|
|
if (!shipObject)
|
|
return false;
|
|
|
|
return shipObject->getEngineSpeedRotationFactorMinimum();
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jfloat JNICALL ScriptMethodsShipNamespace::getShipEngineSpeedRotationFactorOptimal(JNIEnv * env, jobject /*self*/, jlong jobject_shipId)
|
|
{
|
|
ShipObject const * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "getShipEngineSpeedRotationFactorOptimal() invalid ship", false);
|
|
if (!shipObject)
|
|
return false;
|
|
|
|
return shipObject->getEngineSpeedRotationFactorOptimal();
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jfloat JNICALL ScriptMethodsShipNamespace::getShipReactorEnergyGenerationRate(JNIEnv * env, jobject /*self*/, jlong jobject_shipId)
|
|
{
|
|
ShipObject const * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "getShipReactorEnergyGenerationRate() invalid ship", false);
|
|
if (!shipObject)
|
|
return false;
|
|
|
|
return shipObject->getReactorEnergyGenerationRate();
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jfloat JNICALL ScriptMethodsShipNamespace::getShipBoosterEnergyCurrent(JNIEnv * env, jobject /*self*/, jlong jobject_shipId)
|
|
{
|
|
ShipObject const * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "getShipBoosterEnergyCurrent() invalid ship", false);
|
|
if (!shipObject)
|
|
return false;
|
|
|
|
return shipObject->getBoosterEnergyCurrent();
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jfloat JNICALL ScriptMethodsShipNamespace::getShipBoosterEnergyMaximum(JNIEnv * env, jobject /*self*/, jlong jobject_shipId)
|
|
{
|
|
ShipObject const * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "getShipBoosterEnergyMaximum() invalid ship", false);
|
|
if (!shipObject)
|
|
return false;
|
|
|
|
return shipObject->getBoosterEnergyMaximum();
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jfloat JNICALL ScriptMethodsShipNamespace::getShipBoosterEnergyRechargeRate(JNIEnv * env, jobject /*self*/, jlong jobject_shipId)
|
|
{
|
|
ShipObject const * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "getShipBoosterEnergyRechargeRate() invalid ship", false);
|
|
if (!shipObject)
|
|
return false;
|
|
|
|
return shipObject->getBoosterEnergyRechargeRate();
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jfloat JNICALL ScriptMethodsShipNamespace::getShipBoosterEnergyConsumptionRate(JNIEnv * env, jobject /*self*/, jlong jobject_shipId)
|
|
{
|
|
ShipObject const * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "getShipBoosterEnergyConsumptionRate() invalid ship", false);
|
|
if (!shipObject)
|
|
return false;
|
|
|
|
return shipObject->getBoosterEnergyConsumptionRate();
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jfloat JNICALL ScriptMethodsShipNamespace::getShipBoosterAcceleration(JNIEnv * env, jobject /*self*/, jlong jobject_shipId)
|
|
{
|
|
ShipObject const * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "getShipBoosterAcceleration() invalid ship", false);
|
|
if (!shipObject)
|
|
return false;
|
|
|
|
return shipObject->getBoosterAcceleration();
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jfloat JNICALL ScriptMethodsShipNamespace::getShipBoosterSpeedMaximum(JNIEnv * env, jobject /*self*/, jlong jobject_shipId)
|
|
{
|
|
ShipObject const * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "getShipBoosterSpeedMaximum() invalid ship", false);
|
|
if (!shipObject)
|
|
return false;
|
|
|
|
return shipObject->getBoosterSpeedMaximum();
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jboolean JNICALL ScriptMethodsShipNamespace::isShipBoosterActive(JNIEnv * env, jobject /*self*/, jlong jobject_shipId)
|
|
{
|
|
ShipObject const * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "isShipBoosterActive() invalid ship", false);
|
|
if (!shipObject)
|
|
return false;
|
|
|
|
return shipObject->isBoosterActive();
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jfloat JNICALL ScriptMethodsShipNamespace::getShipDroidInterfaceCommandSpeed(JNIEnv * env, jobject /*self*/, jlong jobject_shipId)
|
|
{
|
|
ShipObject const * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "getShipDroidInterfaceCommandSpeed() invalid ship", false);
|
|
if (!shipObject)
|
|
return false;
|
|
|
|
return shipObject->getDroidInterfaceCommandSpeed();
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
//----------------------------------------------------------------------
|
|
// component setters
|
|
//----------------------------------------------------------------------
|
|
|
|
void JNICALL ScriptMethodsShipNamespace::setShipComponentArmorHitpointsMaximum(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jint chassisSlot, jfloat componentArmorHitpointsMaximum)
|
|
{
|
|
ShipObject * const shipObject = getShipThrowTestSlot(env, jobject_shipId, "setShipComponentArmorHitpointsMaximum()", false, chassisSlot);
|
|
if (!shipObject)
|
|
return;
|
|
|
|
if (!shipObject->setComponentArmorHitpointsMaximum(chassisSlot, componentArmorHitpointsMaximum))
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::setShipComponentArmorHitpointsMaximum (): component at slot [%d] error", chassisSlot));
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
void JNICALL ScriptMethodsShipNamespace::setShipComponentArmorHitpointsCurrent(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jint chassisSlot, jfloat componentArmorHitpointsCurrent)
|
|
{
|
|
ShipObject * const shipObject = getShipThrowTestSlot(env, jobject_shipId, "setShipComponentArmorHitpointsCurrent()", false, chassisSlot);
|
|
if (!shipObject)
|
|
return;
|
|
|
|
if (!shipObject->setComponentArmorHitpointsCurrent(chassisSlot, componentArmorHitpointsCurrent))
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::setShipComponentArmorHitpointsCurrent (): component at slot [%d] error", chassisSlot));
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
void JNICALL ScriptMethodsShipNamespace::setShipComponentEfficiencyGeneral(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jint chassisSlot, jfloat componentEfficiencyGeneral)
|
|
{
|
|
ShipObject * const shipObject = getShipThrowTestSlot(env, jobject_shipId, "setShipComponentEfficiencyGeneral()", false, chassisSlot);
|
|
if (!shipObject)
|
|
return;
|
|
|
|
if (!shipObject->setComponentEfficiencyGeneral(chassisSlot, componentEfficiencyGeneral))
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::setShipComponentEfficiencyGeneral (): component at slot [%d] error", chassisSlot));
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
void JNICALL ScriptMethodsShipNamespace::setShipComponentEfficiencyEnergy(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jint chassisSlot, jfloat componentEfficiencyEnergy)
|
|
{
|
|
ShipObject * const shipObject = getShipThrowTestSlot(env, jobject_shipId, "setShipComponentEfficiencyEnergy()", false, chassisSlot);
|
|
if (!shipObject)
|
|
return;
|
|
|
|
if (!shipObject->setComponentEfficiencyEnergy(chassisSlot, componentEfficiencyEnergy))
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::setShipComponentEfficiencyEnergy (): component at slot [%d] error", chassisSlot));
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
void JNICALL ScriptMethodsShipNamespace::setShipComponentEnergyMaintenanceRequirement(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jint chassisSlot, jfloat componentEnergyMaintenanceRequirement)
|
|
{
|
|
ShipObject * const shipObject = getShipThrowTestSlot(env, jobject_shipId, "setShipComponentEnergyMaintenanceRequirement()", false, chassisSlot);
|
|
if (!shipObject)
|
|
return;
|
|
|
|
if (!shipObject->setComponentEnergyMaintenanceRequirement(chassisSlot, componentEnergyMaintenanceRequirement))
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::setShipComponentEnergyMaintenanceRequirement (): component at slot [%d] error", chassisSlot));
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
void JNICALL ScriptMethodsShipNamespace::setShipComponentMass(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jint chassisSlot, jfloat componentMass)
|
|
{
|
|
ShipObject * const shipObject = getShipThrowTestSlot(env, jobject_shipId, "setShipComponentMass()", false, chassisSlot);
|
|
if (!shipObject)
|
|
return;
|
|
|
|
if (!shipObject->setComponentMass(chassisSlot, componentMass))
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::setShipComponentMass (): component at slot [%d] error", chassisSlot));
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
void JNICALL ScriptMethodsShipNamespace::setShipComponentHitpointsCurrent(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jint chassisSlot, jfloat componentHitpointsCurrent)
|
|
{
|
|
ShipObject * const shipObject = getShipThrowTestSlot(env, jobject_shipId, "setShipComponentHitpointsCurrent()", false, chassisSlot);
|
|
if (!shipObject)
|
|
return;
|
|
|
|
if (!shipObject->setComponentHitpointsCurrent(chassisSlot, componentHitpointsCurrent))
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::setShipComponentHitpointsCurrent (): component at slot [%d] error", chassisSlot));
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
void JNICALL ScriptMethodsShipNamespace::setShipComponentHitpointsMaximum(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jint chassisSlot, jfloat componentHitpointsMaximum)
|
|
{
|
|
ShipObject * const shipObject = getShipThrowTestSlot(env, jobject_shipId, "setShipComponentHitpointsMaximum()", false, chassisSlot);
|
|
if (!shipObject)
|
|
return;
|
|
|
|
if (!shipObject->setComponentHitpointsMaximum(chassisSlot, componentHitpointsMaximum))
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::setShipComponentHitpointsMaximum (): component at slot [%d] error", chassisSlot));
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
void JNICALL ScriptMethodsShipNamespace::setShipComponentFlags(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jint chassisSlot, jint componentFlags)
|
|
{
|
|
ShipObject * const shipObject = getShipThrowTestSlot(env, jobject_shipId, "setShipComponentFlags()", false, chassisSlot);
|
|
if (!shipObject)
|
|
return;
|
|
|
|
if (!shipObject->setComponentFlags(chassisSlot, componentFlags))
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::setShipComponentFlags (): component at slot [%d] error", chassisSlot));
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
void JNICALL ScriptMethodsShipNamespace::setShipComponentName(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jint chassisSlot, jstring componentName)
|
|
{
|
|
ShipObject * const shipObject = getShipThrowTestSlot(env, jobject_shipId, "setShipComponentName()", false, chassisSlot);
|
|
if (!shipObject)
|
|
return;
|
|
|
|
if (componentName == nullptr)
|
|
{
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::setShipComponentName (): nullptr name"));
|
|
return;
|
|
}
|
|
|
|
JavaStringParam const jsp(componentName);
|
|
Unicode::String nameString;
|
|
if (!JavaLibrary::convert(jsp, nameString))
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::setShipComponentName (): failed to convert name string"));
|
|
else
|
|
{
|
|
if (!shipObject->setComponentName(chassisSlot, nameString))
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::setShipComponentName (): component at slot [%d] error", chassisSlot));
|
|
}
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
void JNICALL ScriptMethodsShipNamespace::setShipComponentDisabled(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jint chassisSlot, jboolean componentDisabled)
|
|
{
|
|
ShipObject * const shipObject = getShipThrowTestSlot(env, jobject_shipId, "setShipComponentDisabled()", false, chassisSlot);
|
|
if (!shipObject)
|
|
return;
|
|
|
|
if (!shipObject->setComponentDisabled(chassisSlot, componentDisabled == JNI_TRUE))
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::setShipComponentDisabled (): component at slot [%d] error", chassisSlot));
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
void JNICALL ScriptMethodsShipNamespace::setShipComponentDisabledNeedsPower(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jint chassisSlot, jboolean componentDisabledNeedsPower)
|
|
{
|
|
ShipObject * const shipObject = getShipThrowTestSlot(env, jobject_shipId, "setShipComponentDisabledNeedsPower()", false, chassisSlot);
|
|
if (!shipObject)
|
|
return;
|
|
|
|
if (!shipObject->setComponentDisabledNeedsPower(chassisSlot, componentDisabledNeedsPower == JNI_TRUE))
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::setShipComponentDisabledNeedsPower(): component at slot [%d] error", chassisSlot));
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
void JNICALL ScriptMethodsShipNamespace::setShipComponentLowPower(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jint chassisSlot, jboolean componentLowPower)
|
|
{
|
|
ShipObject * const shipObject = getShipThrowTestSlot(env, jobject_shipId, "setShipComponentLowPower()", false, chassisSlot);
|
|
if (!shipObject)
|
|
return;
|
|
|
|
if (!shipObject->setComponentLowPower(chassisSlot, componentLowPower == JNI_TRUE))
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::setShipComponentLowPower (): component at slot [%d] error", chassisSlot));
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
void JNICALL ScriptMethodsShipNamespace::setShipWeaponDamageMaximum(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jint chassisSlot, jfloat weaponDamageMaximum)
|
|
{
|
|
ShipObject * const shipObject = getShipThrowTestSlot(env, jobject_shipId, "setShipWeaponDamageMaximum()", false, chassisSlot);
|
|
if (!shipObject)
|
|
return;
|
|
|
|
if (!shipObject->setWeaponDamageMaximum(chassisSlot, weaponDamageMaximum))
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::setShipWeaponDamageMaximum (): component at slot [%d] error", chassisSlot));
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
void JNICALL ScriptMethodsShipNamespace::setShipWeaponDamageMinimum(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jint chassisSlot, jfloat weaponDamageMinimum)
|
|
{
|
|
ShipObject * const shipObject = getShipThrowTestSlot(env, jobject_shipId, "setShipWeaponDamageMinimum()", false, chassisSlot);
|
|
if (!shipObject)
|
|
return;
|
|
|
|
if (!shipObject->setWeaponDamageMinimum(chassisSlot, weaponDamageMinimum))
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::setShipWeaponDamageMinimum (): component at slot [%d] error", chassisSlot));
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
void JNICALL ScriptMethodsShipNamespace::setShipWeaponEffectivenessShields(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jint chassisSlot, jfloat weaponEffectivenessShields)
|
|
{
|
|
ShipObject * const shipObject = getShipThrowTestSlot(env, jobject_shipId, "setShipWeaponEffectivenessShields()", false, chassisSlot);
|
|
if (!shipObject)
|
|
return;
|
|
|
|
if (!shipObject->setWeaponEffectivenessShields(chassisSlot, weaponEffectivenessShields))
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::setShipWeaponEffectivenessShields (): component at slot [%d] error", chassisSlot));
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
void JNICALL ScriptMethodsShipNamespace::setShipWeaponEffectivenessArmor(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jint chassisSlot, jfloat weaponEffectivenessArmor)
|
|
{
|
|
ShipObject * const shipObject = getShipThrowTestSlot(env, jobject_shipId, "setShipWeaponEffectivenessArmor()", false, chassisSlot);
|
|
if (!shipObject)
|
|
return;
|
|
|
|
if (!shipObject->setWeaponEffectivenessArmor(chassisSlot, weaponEffectivenessArmor))
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::setShipWeaponEffectivenessArmor (): component at slot [%d] error", chassisSlot));
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
void JNICALL ScriptMethodsShipNamespace::setShipWeaponEnergyPerShot(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jint chassisSlot, jfloat weaponEnergyPerShot)
|
|
{
|
|
ShipObject * const shipObject = getShipThrowTestSlot(env, jobject_shipId, "setShipWeaponEnergyPerShot()", false, chassisSlot);
|
|
if (!shipObject)
|
|
return;
|
|
|
|
if (!shipObject->setWeaponEnergyPerShot(chassisSlot, weaponEnergyPerShot))
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::setShipWeaponEnergyPerShot (): component at slot [%d] error", chassisSlot));
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
void JNICALL ScriptMethodsShipNamespace::setShipWeaponRefireRate(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jint chassisSlot, jfloat weaponRefireRate)
|
|
{
|
|
ShipObject * const shipObject = getShipThrowTestSlot(env, jobject_shipId, "setShipWeaponRefireRate()", false, chassisSlot);
|
|
if (!shipObject)
|
|
return;
|
|
|
|
if (!shipObject->setWeaponRefireRate(chassisSlot, weaponRefireRate))
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::setShipWeaponRefireRate (): component at slot [%d] error", chassisSlot));
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
void JNICALL ScriptMethodsShipNamespace::setShipWeaponEfficiencyRefireRate(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jint chassisSlot, jfloat weaponEfficiencyRefireRate)
|
|
{
|
|
ShipObject * const shipObject = getShipThrowTestSlot(env, jobject_shipId, "setShipWeaponEfficiencyRefireRate()", false, chassisSlot);
|
|
if (!shipObject)
|
|
return;
|
|
|
|
if (!shipObject->setWeaponEfficiencyRefireRate(chassisSlot, weaponEfficiencyRefireRate))
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::setShipWeaponEfficiencyRefireRate (): component at slot [%d] error", chassisSlot));
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
void JNICALL ScriptMethodsShipNamespace::setShipWeaponAmmoCurrent(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jint chassisSlot, jint weaponAmmoCurrent)
|
|
{
|
|
ShipObject * const shipObject = getShipThrowTestSlot(env, jobject_shipId, "setShipWeaponAmmoCurrent()", false, chassisSlot);
|
|
if (!shipObject)
|
|
return;
|
|
|
|
if (!shipObject->setWeaponAmmoCurrent(chassisSlot, weaponAmmoCurrent))
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::setShipWeaponAmmoCurrent (): component at slot [%d] error", chassisSlot));
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
void JNICALL ScriptMethodsShipNamespace::setShipWeaponAmmoMaximum(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jint chassisSlot, jint weaponAmmoMaximum)
|
|
{
|
|
ShipObject * const shipObject = getShipThrowTestSlot(env, jobject_shipId, "setShipWeaponAmmoMaximum()", false, chassisSlot);
|
|
if (!shipObject)
|
|
return;
|
|
|
|
if (!shipObject->setWeaponAmmoMaximum(chassisSlot, weaponAmmoMaximum))
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::setShipWeaponAmmoMaximum (): component at slot [%d] error", chassisSlot));
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
void JNICALL ScriptMethodsShipNamespace::setShipWeaponAmmoType(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jint chassisSlot, jint weaponAmmoType)
|
|
{
|
|
ShipObject * const shipObject = getShipThrowTestSlot(env, jobject_shipId, "setShipWeaponAmmoType()", false, chassisSlot);
|
|
if (!shipObject)
|
|
return;
|
|
|
|
if (!shipObject->setWeaponAmmoType(chassisSlot, static_cast<uint32>(weaponAmmoType)))
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::setShipWeaponAmmoType (): component at slot [%d] error", chassisSlot));
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
void JNICALL ScriptMethodsShipNamespace::setShipShieldHitpointsFrontCurrent(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jfloat shieldHitpointsFrontCurrent)
|
|
{
|
|
ShipObject * const shipObject = getShipThrowTestSlot(env, jobject_shipId, "setShipShieldHitpointsFrontCurrent()", false, ShipChassisSlotType::SCST_shield_0);
|
|
if (!shipObject)
|
|
return;
|
|
|
|
if (!shipObject->setShieldHitpointsFrontCurrent(shieldHitpointsFrontCurrent))
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::setShipShieldHitpointsFrontCurrent (): component error"));
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
void JNICALL ScriptMethodsShipNamespace::setShipShieldHitpointsFrontMaximum(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jfloat shieldHitpointsFrontMaximum)
|
|
{
|
|
ShipObject * const shipObject = getShipThrowTestSlot(env, jobject_shipId, "setShipShieldHitpointsFrontMaximum()", false, ShipChassisSlotType::SCST_shield_0);
|
|
if (!shipObject)
|
|
return;
|
|
|
|
if (!shipObject->setShieldHitpointsFrontMaximum(shieldHitpointsFrontMaximum))
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::setShipShieldHitpointsFrontMaximum (): component error"));
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
void JNICALL ScriptMethodsShipNamespace::setShipShieldHitpointsBackCurrent(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jfloat shieldHitpointsBackCurrent)
|
|
{
|
|
ShipObject * const shipObject = getShipThrowTestSlot(env, jobject_shipId, "setShipShieldHitpointsBackCurrent()", false, ShipChassisSlotType::SCST_shield_0);
|
|
if (!shipObject)
|
|
return;
|
|
|
|
if (!shipObject->setShieldHitpointsBackCurrent(shieldHitpointsBackCurrent))
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::setShipShieldHitpointsBackCurrent (): component error"));
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
void JNICALL ScriptMethodsShipNamespace::setShipShieldHitpointsBackMaximum(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jfloat shieldHitpointsBackMaximum)
|
|
{
|
|
ShipObject * const shipObject = getShipThrowTestSlot(env, jobject_shipId, "setShipShieldHitpointsBackMaximum()", false, ShipChassisSlotType::SCST_shield_0);
|
|
if (!shipObject)
|
|
return;
|
|
|
|
if (!shipObject->setShieldHitpointsBackMaximum(shieldHitpointsBackMaximum))
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::setShipShieldHitpointsBackMaximum (): component error"));
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
void JNICALL ScriptMethodsShipNamespace::setShipShieldRechargeRate(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jfloat shieldRechargeRate)
|
|
{
|
|
ShipObject * const shipObject = getShipThrowTestSlot(env, jobject_shipId, "setShipShieldRechargeRate()", false, ShipChassisSlotType::SCST_shield_0);
|
|
if (!shipObject)
|
|
return;
|
|
|
|
if (!shipObject->setShieldRechargeRate(shieldRechargeRate))
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::setShipShieldRechargeRate (): component error"));
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
void JNICALL ScriptMethodsShipNamespace::setShipCapacitorEnergyCurrent(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jfloat capacitorEnergyCurrent)
|
|
{
|
|
ShipObject * const shipObject = getShipThrowTestSlot(env, jobject_shipId, "setShipCapacitorEnergyCurrent()", false, ShipChassisSlotType::SCST_capacitor);
|
|
if (!shipObject)
|
|
return;
|
|
|
|
if (!shipObject->setCapacitorEnergyCurrent(capacitorEnergyCurrent))
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::setShipCapacitorEnergyCurrent (): component error"));
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
void JNICALL ScriptMethodsShipNamespace::setShipCapacitorEnergyMaximum(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jfloat capacitorEnergyMaximum)
|
|
{
|
|
ShipObject * const shipObject = getShipThrowTestSlot(env, jobject_shipId, "setShipCapacitorEnergyMaximum()", false, ShipChassisSlotType::SCST_capacitor);
|
|
if (!shipObject)
|
|
return;
|
|
|
|
if (!shipObject->setCapacitorEnergyMaximum(capacitorEnergyMaximum))
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::setShipCapacitorEnergyMaximum (): component error"));
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
void JNICALL ScriptMethodsShipNamespace::setShipCapacitorEnergyRechargeRate(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jfloat capacitorEnergyRechargeRate)
|
|
{
|
|
ShipObject * const shipObject = getShipThrowTestSlot(env, jobject_shipId, "setShipCapacitorEnergyRechargeRate()", false, ShipChassisSlotType::SCST_capacitor);
|
|
if (!shipObject)
|
|
return;
|
|
|
|
if (!shipObject->setCapacitorEnergyRechargeRate(capacitorEnergyRechargeRate))
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::setShipCapacitorEnergyRechargeRate (): component error"));
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
void JNICALL ScriptMethodsShipNamespace::setShipEngineAccelerationRate(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jfloat engineAccelerationRate)
|
|
{
|
|
ShipObject * const shipObject = getShipThrowTestSlot(env, jobject_shipId, "setShipEngineAccelerationRate()", false, ShipChassisSlotType::SCST_engine);
|
|
if (!shipObject)
|
|
return;
|
|
|
|
if (!shipObject->setEngineAccelerationRate(engineAccelerationRate))
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::setShipEngineAccelerationRate (): component error"));
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
void JNICALL ScriptMethodsShipNamespace::setShipEngineDecelerationRate(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jfloat engineDecelerationRate)
|
|
{
|
|
ShipObject * const shipObject = getShipThrowTestSlot(env, jobject_shipId, "setShipEngineDecelerationRate()", false, ShipChassisSlotType::SCST_engine);
|
|
if (!shipObject)
|
|
return;
|
|
|
|
if (!shipObject->setEngineDecelerationRate(engineDecelerationRate))
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::setShipEngineDecelerationRate (): component error"));
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
void JNICALL ScriptMethodsShipNamespace::setShipEnginePitchAccelerationRateDegrees(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jfloat enginePitchAccelerationRateDegrees)
|
|
{
|
|
ShipObject * const shipObject = getShipThrowTestSlot(env, jobject_shipId, "setShipEnginePitchAccelerationRateDegrees()", false, ShipChassisSlotType::SCST_engine);
|
|
if (!shipObject)
|
|
return;
|
|
|
|
if (!shipObject->setEnginePitchAccelerationRate(convertDegreesToRadians(enginePitchAccelerationRateDegrees)))
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::setShipEnginePitchAccelerationRateDegrees (): component error"));
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
void JNICALL ScriptMethodsShipNamespace::setShipEngineYawAccelerationRateDegrees(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jfloat engineYawAccelerationRateDegrees)
|
|
{
|
|
ShipObject * const shipObject = getShipThrowTestSlot(env, jobject_shipId, "setShipEngineYawAccelerationRateDegrees()", false, ShipChassisSlotType::SCST_engine);
|
|
if (!shipObject)
|
|
return;
|
|
|
|
if (!shipObject->setEngineYawAccelerationRate(convertDegreesToRadians(engineYawAccelerationRateDegrees)))
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::setShipEngineYawAccelerationRateDegrees (): component error"));
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
void JNICALL ScriptMethodsShipNamespace::setShipEngineRollAccelerationRateDegrees(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jfloat engineRollAccelerationRateDegrees)
|
|
{
|
|
ShipObject * const shipObject = getShipThrowTestSlot(env, jobject_shipId, "setShipEngineRollAccelerationRateDegrees()", false, ShipChassisSlotType::SCST_engine);
|
|
if (!shipObject)
|
|
return;
|
|
|
|
if (!shipObject->setEngineRollAccelerationRate(convertDegreesToRadians(engineRollAccelerationRateDegrees)))
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::setShipEngineRollAccelerationRateDegrees (): component error"));
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
void JNICALL ScriptMethodsShipNamespace::setShipEnginePitchRateMaximumDegrees(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jfloat enginePitchRateMaximumDegrees)
|
|
{
|
|
ShipObject * const shipObject = getShipThrowTestSlot(env, jobject_shipId, "setShipEnginePitchRateMaximumDegrees()", false, ShipChassisSlotType::SCST_engine);
|
|
if (!shipObject)
|
|
return;
|
|
|
|
if (!shipObject->setEnginePitchRateMaximum(convertDegreesToRadians(enginePitchRateMaximumDegrees)))
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::setShipEnginePitchRateMaximumDegrees (): component error"));
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
void JNICALL ScriptMethodsShipNamespace::setShipEngineYawRateMaximumDegrees(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jfloat engineYawRateMaximumDegrees)
|
|
{
|
|
ShipObject * const shipObject = getShipThrowTestSlot(env, jobject_shipId, "setShipEngineYawRateMaximumDegrees()", false, ShipChassisSlotType::SCST_engine);
|
|
if (!shipObject)
|
|
return;
|
|
|
|
if (!shipObject->setEngineYawRateMaximum(convertDegreesToRadians(engineYawRateMaximumDegrees)))
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::setShipEngineYawRateMaximumDegrees (): component error"));
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
void JNICALL ScriptMethodsShipNamespace::setShipEngineRollRateMaximumDegrees(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jfloat engineRollRateMaximumDegrees)
|
|
{
|
|
ShipObject * const shipObject = getShipThrowTestSlot(env, jobject_shipId, "setShipEngineRollRateMaximumDegrees()", false, ShipChassisSlotType::SCST_engine);
|
|
if (!shipObject)
|
|
return;
|
|
|
|
if (!shipObject->setEngineRollRateMaximum(convertDegreesToRadians(engineRollRateMaximumDegrees)))
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::setShipEngineRollRateMaximumDegrees (): component error"));
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
void JNICALL ScriptMethodsShipNamespace::setShipEngineSpeedMaximum(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jfloat engineSpeedMaximum)
|
|
{
|
|
ShipObject * const shipObject = getShipThrowTestSlot(env, jobject_shipId, "setShipEngineSpeedMaximum()", false, ShipChassisSlotType::SCST_engine);
|
|
if (!shipObject)
|
|
return;
|
|
|
|
if (!shipObject->setEngineSpeedMaximum(engineSpeedMaximum))
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::setShipEngineSpeedMaximum (): component error"));
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
void JNICALL ScriptMethodsShipNamespace::setShipEngineSpeedRotationFactorMaximum(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jfloat engineSpeedRotationRate)
|
|
{
|
|
ShipObject * const shipObject = getShipThrowTestSlot(env, jobject_shipId, "setShipEngineSpeedRotationFactorMaximum()", false, ShipChassisSlotType::SCST_engine);
|
|
if (!shipObject)
|
|
return;
|
|
|
|
if (!shipObject->setEngineSpeedRotationFactorMaximum(engineSpeedRotationRate))
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::setShipEngineSpeedRotationFactorMaximum(): component error %s", shipObject->getDebugInformation(false).c_str()));
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
void JNICALL ScriptMethodsShipNamespace::setShipEngineSpeedRotationFactorMinimum(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jfloat engineSpeedRotationRate)
|
|
{
|
|
ShipObject * const shipObject = getShipThrowTestSlot(env, jobject_shipId, "setShipEngineSpeedRotationFactorMinimum()", false, ShipChassisSlotType::SCST_engine);
|
|
if (!shipObject)
|
|
return;
|
|
|
|
if (!shipObject->setEngineSpeedRotationFactorMinimum(engineSpeedRotationRate))
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::setShipEngineSpeedRotationFactorMinimum(): component error %s", shipObject->getDebugInformation(false).c_str()));
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
void JNICALL ScriptMethodsShipNamespace::setShipEngineSpeedRotationFactorOptimal(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jfloat engineSpeedRotationRate)
|
|
{
|
|
ShipObject * const shipObject = getShipThrowTestSlot(env, jobject_shipId, "setShipEngineSpeedRotationFactorOptimal()", false, ShipChassisSlotType::SCST_engine);
|
|
if (!shipObject)
|
|
return;
|
|
|
|
if (!shipObject->setEngineSpeedRotationFactorOptimal(engineSpeedRotationRate))
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::setShipEngineSpeedRotationFactorOptimal(): component error %s", shipObject->getDebugInformation(false).c_str()));
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
void JNICALL ScriptMethodsShipNamespace::setShipReactorEnergyGenerationRate(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jfloat reactorEnergyGenerationRate)
|
|
{
|
|
ShipObject * const shipObject = getShipThrowTestSlot(env, jobject_shipId, "setShipReactorEnergyGenerationRate()", false, ShipChassisSlotType::SCST_reactor);
|
|
if (!shipObject)
|
|
return;
|
|
|
|
if (!shipObject->setReactorEnergyGenerationRate(reactorEnergyGenerationRate))
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::setShipReactorEnergyGenerationRate (): component error"));
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
void JNICALL ScriptMethodsShipNamespace::setShipBoosterEnergyCurrent(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jfloat boosterEnergyCurrent)
|
|
{
|
|
ShipObject * const shipObject = getShipThrowTestSlot(env, jobject_shipId, "setShipBoosterEnergyCurrent()", false, ShipChassisSlotType::SCST_booster);
|
|
if (!shipObject)
|
|
return;
|
|
|
|
if (!shipObject->setBoosterEnergyCurrent(boosterEnergyCurrent))
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::setShipBoosterEnergyCurrent (): component error"));
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
void JNICALL ScriptMethodsShipNamespace::setShipBoosterEnergyMaximum(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jfloat boosterEnergyMaximum)
|
|
{
|
|
ShipObject * const shipObject = getShipThrowTestSlot(env, jobject_shipId, "setShipBoosterEnergyMaximum()", false, ShipChassisSlotType::SCST_booster);
|
|
if (!shipObject)
|
|
return;
|
|
|
|
if (!shipObject->setBoosterEnergyMaximum(boosterEnergyMaximum))
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::setShipBoosterEnergyMaximum (): component error"));
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
void JNICALL ScriptMethodsShipNamespace::setShipBoosterEnergyRechargeRate(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jfloat boosterEnergyRechargeRate)
|
|
{
|
|
ShipObject * const shipObject = getShipThrowTestSlot(env, jobject_shipId, "setShipBoosterEnergyRechargeRate()", false, ShipChassisSlotType::SCST_booster);
|
|
if (!shipObject)
|
|
return;
|
|
|
|
if (!shipObject->setBoosterEnergyRechargeRate(boosterEnergyRechargeRate))
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::setShipBoosterEnergyRechargeRate (): component error"));
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
void JNICALL ScriptMethodsShipNamespace::setShipBoosterEnergyConsumptionRate(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jfloat boosterEnergyConsumptionRate)
|
|
{
|
|
ShipObject * const shipObject = getShipThrowTestSlot(env, jobject_shipId, "setShipBoosterEnergyConsumptionRate()", false, ShipChassisSlotType::SCST_booster);
|
|
if (!shipObject)
|
|
return;
|
|
|
|
if (!shipObject->setBoosterEnergyConsumptionRate(boosterEnergyConsumptionRate))
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::setShipBoosterEnergyConsumptionRate (): component error"));
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
void JNICALL ScriptMethodsShipNamespace::setShipBoosterAcceleration(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jfloat boosterAcceleration)
|
|
{
|
|
ShipObject * const shipObject = getShipThrowTestSlot(env, jobject_shipId, "setShipBoosterAcceleration()", false, ShipChassisSlotType::SCST_booster);
|
|
if (!shipObject)
|
|
return;
|
|
|
|
if (!shipObject->setBoosterAcceleration(boosterAcceleration))
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::setShipBoosterAcceleration (): component error"));
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
void JNICALL ScriptMethodsShipNamespace::setShipBoosterSpeedMaximum(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jfloat boosterSpeedMaximum)
|
|
{
|
|
ShipObject * const shipObject = getShipThrowTestSlot(env, jobject_shipId, "isShipSlotInstalledActual()", false, ShipChassisSlotType::SCST_booster);
|
|
if (!shipObject)
|
|
return;
|
|
|
|
if (!shipObject->setBoosterSpeedMaximum(boosterSpeedMaximum))
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::setShipBoosterSpeedMaximum (): component error"));
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
void JNICALL ScriptMethodsShipNamespace::setShipDroidInterfaceCommandSpeed(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jfloat droidInterfaceCommandSpeed)
|
|
{
|
|
ShipObject * const shipObject = getShipThrowTestSlot(env, jobject_shipId, "setShipDroidInterfaceCommandSpeed()", false, ShipChassisSlotType::SCST_droid_interface);
|
|
if (!shipObject)
|
|
return;
|
|
|
|
if (!shipObject->setDroidInterfaceCommandSpeed(droidInterfaceCommandSpeed))
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::setShipDroidInterfaceCommandSpeed (): component error"));
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
//-- component support
|
|
|
|
jboolean JNICALL ScriptMethodsShipNamespace::shipCanInstallComponent(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jint chassisSlot, jlong component)
|
|
{
|
|
//-- Make sure ships are enabled
|
|
if (!verifyShipsEnabled())
|
|
return false;
|
|
|
|
ShipObject const * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "shipCanInstallComponent(): shipId obj_id did not resolve to a ShipObject", false);
|
|
if (!shipObject)
|
|
return false;
|
|
|
|
TangibleObject * tangibleComponent = 0;
|
|
if (JavaLibrary::getObject (component, tangibleComponent) && tangibleComponent != nullptr)
|
|
return shipObject->canInstallComponent(chassisSlot, *tangibleComponent);
|
|
else
|
|
{
|
|
JAVA_THROW_SCRIPT_EXCEPTION (true, ("shipCanInstallComponent(): invalid component"));
|
|
return false;
|
|
}
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jboolean JNICALL ScriptMethodsShipNamespace::shipPseudoInstallComponent(JNIEnv *env, jobject, jlong jship, jint chassisSlot, jint componentCrc)
|
|
{
|
|
//-- Make sure ships are enabled
|
|
if (!verifyShipsEnabled())
|
|
return false;
|
|
|
|
ShipObject * const shipObject = JavaLibrary::getShipThrow(env, jship, "shipInstallComponent(): ship obj_id did not resolve to a ShipObject", false);
|
|
if (!shipObject)
|
|
return false;
|
|
|
|
return shipObject->pseudoInstallComponent(static_cast<int>(chassisSlot), static_cast<uint32>(componentCrc));
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jboolean JNICALL ScriptMethodsShipNamespace::shipInstallComponent(JNIEnv * env, jobject /*self*/, jlong jobject_installerId, jlong jobject_shipId, jint chassisSlot, jlong component)
|
|
{
|
|
//-- Make sure ships are enabled
|
|
if (!verifyShipsEnabled())
|
|
return false;
|
|
|
|
ShipObject * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "shipInstallComponent(): shipId obj_id did not resolve to a ShipObject", false);
|
|
if (!shipObject)
|
|
return false;
|
|
|
|
NetworkId installerId(jobject_installerId);
|
|
|
|
TangibleObject * tangibleComponent = 0;
|
|
if (JavaLibrary::getObject (component, tangibleComponent) && tangibleComponent != nullptr)
|
|
return shipObject->installComponent(installerId, chassisSlot, *tangibleComponent);
|
|
else
|
|
{
|
|
JAVA_THROW_SCRIPT_EXCEPTION (true, ("shipInstallComponent(): invalid component"));
|
|
return false;
|
|
}
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
jlong JNICALL ScriptMethodsShipNamespace::shipUninstallComponentAllowOverload(JNIEnv * env, jobject self, jlong jobject_uninstallerId, jlong jobject_shipId, jint chassisSlot, jlong containerTarget)
|
|
{
|
|
return shipUninstallComponentBase(env, self, jobject_uninstallerId, jobject_shipId, chassisSlot, containerTarget, true);
|
|
}
|
|
|
|
jlong JNICALL ScriptMethodsShipNamespace::shipUninstallComponent(JNIEnv * env, jobject self, jlong jobject_uninstallerId, jlong jobject_shipId, jint chassisSlot, jlong containerTarget)
|
|
{
|
|
return shipUninstallComponentBase(env, self, jobject_uninstallerId, jobject_shipId, chassisSlot, containerTarget, false);
|
|
}
|
|
|
|
jlong JNICALL ScriptMethodsShipNamespace::shipUninstallComponentBase(JNIEnv * env, jobject /*self*/, jlong jobject_uninstallerId, jlong jobject_shipId, jint chassisSlot, jlong containerTarget, bool allowOverload)
|
|
{
|
|
//-- Make sure ships are enabled
|
|
if (!verifyShipsEnabled())
|
|
return 0;
|
|
|
|
ShipObject * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "shipUninstallComponent(): shipId obj_id did not resolve to a ShipObject", false);
|
|
if (!shipObject)
|
|
return 0;
|
|
|
|
ServerObject * containerTargetObject = 0;
|
|
|
|
if (containerTarget)
|
|
{
|
|
if (!JavaLibrary::getObject (containerTarget, containerTargetObject))
|
|
{
|
|
JAVA_THROW_SCRIPT_EXCEPTION (true, ("shipUninstallComponent(): containerTarget did not resolve"));
|
|
return 0;
|
|
}
|
|
|
|
NetworkId uninstallerId(jobject_uninstallerId);
|
|
|
|
TangibleObject * const component = shipObject->uninstallComponent(uninstallerId, chassisSlot, *containerTargetObject, allowOverload);
|
|
if (component)
|
|
return (component->getNetworkId()).getValue();
|
|
else
|
|
{
|
|
JAVA_THROW_SCRIPT_EXCEPTION (true, ("shipUninstallComponent(): invalid result component"));
|
|
return 0;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
shipObject->purgeComponent (chassisSlot);
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jintArray JNICALL ScriptMethodsShipNamespace::getShipChassisSlots(JNIEnv * env, jobject /*self*/, jlong jobject_shipId)
|
|
{
|
|
//-- Make sure ships are enabled
|
|
if (!verifyShipsEnabled())
|
|
return nullptr;
|
|
|
|
ShipObject const * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "getShipChassisSlots(): shipId obj_id did not resolve to a ShipObject", false);
|
|
if (!shipObject)
|
|
return nullptr;
|
|
|
|
ShipChassis const * const shipChassis = ShipChassis::findShipChassisByCrc (shipObject->getChassisType());
|
|
if (shipChassis)
|
|
{
|
|
ShipChassis::SlotVector const & slots = shipChassis->getSlots ();
|
|
|
|
LocalIntArrayRefPtr jslots = createNewIntArray(static_cast<int>(slots.size ()));
|
|
if (jslots != LocalIntArrayRef::cms_nullPtr)
|
|
{
|
|
int index = 0;
|
|
for (ShipChassis::SlotVector::const_iterator it = slots.begin (); it != slots.end (); ++it, ++index)
|
|
{
|
|
ShipChassisSlot const & slot = *it;
|
|
jint value = static_cast<jint>(slot.getSlotType ());
|
|
setIntArrayRegion(*jslots, index, 1, &value);
|
|
}
|
|
return jslots->getReturnValue();
|
|
}
|
|
}
|
|
|
|
return nullptr;
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jint JNICALL ScriptMethodsShipNamespace::getShipComponentDescriptorType(JNIEnv * /*env*/, jobject /*self*/, jlong jobject_component)
|
|
{
|
|
//-- Make sure ships are enabled
|
|
if (!verifyShipsEnabled())
|
|
return static_cast<int>(ShipComponentType::SCT_num_types);
|
|
|
|
TangibleObject * tangibleComponent = 0;
|
|
if (JavaLibrary::getObject (jobject_component, tangibleComponent))
|
|
{
|
|
if (tangibleComponent != nullptr && tangibleComponent->getObjectTemplate () != nullptr)
|
|
{
|
|
ShipComponentDescriptor const * const shipComponentDescriptor =
|
|
ShipComponentDescriptor::findShipComponentDescriptorByObjectTemplate (tangibleComponent->getObjectTemplate ()->getCrcName ().getCrc ());
|
|
if (shipComponentDescriptor)
|
|
return static_cast<int>(shipComponentDescriptor->getComponentType ());
|
|
}
|
|
}
|
|
|
|
return static_cast<int>(ShipComponentType::SCT_num_types);
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jint JNICALL ScriptMethodsShipNamespace::getShipComponentDescriptorTypeByName(JNIEnv * /*env*/, jobject /*self*/, jstring typeName)
|
|
{
|
|
//-- Make sure ships are enabled
|
|
if (!verifyShipsEnabled())
|
|
return static_cast<int>(ShipComponentType::SCT_num_types);
|
|
|
|
JavaStringParam const jsp(typeName);
|
|
std::string nameString;
|
|
if (!JavaLibrary::convert(jsp, nameString))
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::getShipComponentDescriptorTypeByName (): failed to convert typeName string"));
|
|
else
|
|
{
|
|
return ShipComponentType::getTypeFromName(nameString);
|
|
}
|
|
|
|
return static_cast<int>(ShipComponentType::SCT_num_types);
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jstring JNICALL ScriptMethodsShipNamespace::getShipComponentDescriptorTypeName(JNIEnv * /*env*/, jobject /*self*/, jint componentType)
|
|
{
|
|
//-- Make sure ships are enabled
|
|
if (!verifyShipsEnabled())
|
|
return nullptr;
|
|
|
|
std::string const & typeName = ShipComponentType::getNameFromType(static_cast<ShipComponentType::Type>(componentType));
|
|
|
|
return JavaString(typeName).getReturnValue();
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jint JNICALL ScriptMethodsShipNamespace::getShipComponentDescriptorCrc(JNIEnv * /*env*/, jobject /*self*/, jlong jobject_component)
|
|
{
|
|
//-- Make sure ships are enabled
|
|
if (!verifyShipsEnabled())
|
|
return static_cast<int>(ShipComponentType::SCT_num_types);
|
|
|
|
TangibleObject * tangibleComponent = 0;
|
|
if (JavaLibrary::getObject (jobject_component, tangibleComponent))
|
|
{
|
|
if (tangibleComponent != nullptr && tangibleComponent->getObjectTemplate () != nullptr)
|
|
{
|
|
ShipComponentDescriptor const * const shipComponentDescriptor =
|
|
ShipComponentDescriptor::findShipComponentDescriptorByObjectTemplate (tangibleComponent->getObjectTemplate ()->getCrcName ().getCrc ());
|
|
if (shipComponentDescriptor)
|
|
return static_cast<int>(shipComponentDescriptor->getCrc ());
|
|
}
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jstring JNICALL ScriptMethodsShipNamespace::getShipComponentDescriptorCrcName(JNIEnv * /*env*/, jobject /*self*/, jint componentCrc)
|
|
{
|
|
//-- Make sure ships are enabled
|
|
if (!verifyShipsEnabled())
|
|
return nullptr;
|
|
|
|
ShipComponentDescriptor const * const shipComponentDescriptor = ShipComponentDescriptor::findShipComponentDescriptorByCrc(static_cast<uint32>(componentCrc));
|
|
if (shipComponentDescriptor == nullptr)
|
|
return nullptr;
|
|
|
|
return JavaString(shipComponentDescriptor->getName().getString()).getReturnValue();
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jstring JNICALL ScriptMethodsShipNamespace::getShipComponentDescriptorCompatibility(JNIEnv * /*env*/, jobject /*self*/, jint componentCrc)
|
|
{
|
|
//-- Make sure ships are enabled
|
|
if (!verifyShipsEnabled())
|
|
return nullptr;
|
|
|
|
ShipComponentDescriptor const * const shipComponentDescriptor = ShipComponentDescriptor::findShipComponentDescriptorByCrc(static_cast<uint32>(componentCrc));
|
|
if (shipComponentDescriptor == nullptr)
|
|
return nullptr;
|
|
|
|
return JavaString(shipComponentDescriptor->getCompatibility().getString()).getReturnValue();
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jboolean JNICALL ScriptMethodsShipNamespace::getShipComponentDescriptorWeaponIsAmmoConsuming(JNIEnv * /*env*/, jobject /*self*/, jint componentCrc)
|
|
{
|
|
//-- Make sure ships are enabled
|
|
if (!verifyShipsEnabled())
|
|
return false;
|
|
|
|
return ShipComponentWeaponManager::isAmmoConsuming(static_cast<uint32>(componentCrc));
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jboolean JNICALL ScriptMethodsShipNamespace::getShipComponentDescriptorWeaponIsMissile(JNIEnv * /*env*/, jobject /*self*/, jint componentCrc)
|
|
{
|
|
//-- Make sure ships are enabled
|
|
if (!verifyShipsEnabled())
|
|
return false;
|
|
|
|
return ShipComponentWeaponManager::isMissile(static_cast<uint32>(componentCrc));
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jboolean JNICALL ScriptMethodsShipNamespace::getShipComponentDescriptorWeaponIsCountermeasure(JNIEnv * /*env*/, jobject /*self*/, jint componentCrc)
|
|
{
|
|
//-- Make sure ships are enabled
|
|
if (!verifyShipsEnabled())
|
|
return false;
|
|
|
|
return ShipComponentWeaponManager::isCountermeasure(static_cast<uint32>(componentCrc));
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jboolean JNICALL ScriptMethodsShipNamespace::getShipComponentDescriptorWeaponIsMining(JNIEnv * /*env*/, jobject /*self*/, jint componentCrc)
|
|
{
|
|
//-- Make sure ships are enabled
|
|
if (!verifyShipsEnabled())
|
|
return false;
|
|
|
|
return ShipComponentWeaponManager::isMining(static_cast<uint32>(componentCrc));
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jboolean JNICALL ScriptMethodsShipNamespace::getShipComponentDescriptorWeaponIsTractor(JNIEnv * /*env*/, jobject /*self*/, jint componentCrc)
|
|
{
|
|
//-- Make sure ships are enabled
|
|
if (!verifyShipsEnabled())
|
|
return false;
|
|
|
|
return ShipComponentWeaponManager::isTractor(static_cast<uint32>(componentCrc));
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jfloat JNICALL ScriptMethodsShipNamespace::getShipComponentDescriptorWeaponRange(JNIEnv * /*env*/, jobject /*self*/, jint componentCrc)
|
|
{
|
|
//-- Make sure ships are enabled
|
|
if (!verifyShipsEnabled())
|
|
return 0.0f;
|
|
|
|
return ShipComponentWeaponManager::getRange(static_cast<uint32>(componentCrc));
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jfloat JNICALL ScriptMethodsShipNamespace::getShipComponentDescriptorWeaponProjectileSpeed(JNIEnv * /*env*/, jobject /*self*/, jint componentCrc)
|
|
{
|
|
//-- Make sure ships are enabled
|
|
if (!verifyShipsEnabled())
|
|
return 0.0f;
|
|
|
|
return ShipComponentWeaponManager::getProjectileSpeed(static_cast<uint32>(componentCrc));
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
void JNICALL ScriptMethodsShipNamespace::notifyShipDamage(JNIEnv * env, jobject /*self*/, jlong jobject_victim, jlong jobject_attacker, jfloat totalDamage)
|
|
{
|
|
//-- Make sure ships are enabled
|
|
if (!verifyShipsEnabled())
|
|
return;
|
|
|
|
//-- Get the victim ship object.
|
|
ShipObject * const victimShipObject = JavaLibrary::getShipThrow(env, jobject_victim, "notifyShipDamage(): jobject_victim did not resolve to a ShipObject", false);
|
|
if (victimShipObject)
|
|
{
|
|
//-- Ensure we have a player controlled ship object.
|
|
if (victimShipObject->isPlayerShip())
|
|
{
|
|
//-- Get the attacker object. It can be any tangible object.
|
|
TangibleObject const * attackerTangibleObject = nullptr;
|
|
if (jobject_attacker)
|
|
IGNORE_RETURN(JavaLibrary::getObject(jobject_attacker, attackerTangibleObject));
|
|
|
|
Controller * const victimShipController = victimShipObject->getController();
|
|
if (victimShipController)
|
|
{
|
|
ShipDamageMessage shipDamage(attackerTangibleObject != nullptr ? attackerTangibleObject->getNetworkId() : NetworkId::cms_invalid,
|
|
attackerTangibleObject != nullptr ? attackerTangibleObject->getPosition_w() : victimShipObject->getPosition_w(),
|
|
totalDamage );
|
|
|
|
//lint -esym(429, damageMessage)
|
|
|
|
MessageQueueGenericValueType<ShipDamageMessage> * const damageMessage = new MessageQueueGenericValueType<ShipDamageMessage>(shipDamage);
|
|
|
|
victimShipController->appendMessage(CM_shipDamageMessage, 0.0f, damageMessage,
|
|
GameControllerMessageFlags::SEND |
|
|
GameControllerMessageFlags::RELIABLE |
|
|
GameControllerMessageFlags::DEST_AUTH_CLIENT);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
jboolean JNICALL ScriptMethodsShipNamespace::launchMissile(JNIEnv * /*env*/, jobject /*self*/, jlong jplayer, jlong jship, jlong jtarget, jint missileInfo, jint targetedComponent)
|
|
{
|
|
if (!verifyShipsEnabled())
|
|
return false;
|
|
|
|
const TangibleObject * player = 0;
|
|
if (!JavaLibrary::getObject (jplayer, player))
|
|
{
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::launchMissile: could not resolve player"));
|
|
return JNI_FALSE;
|
|
}
|
|
|
|
const TangibleObject * ship = 0;
|
|
if (!JavaLibrary::getObject (jship, ship))
|
|
{
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::launchMissile: could not resolve ship"));
|
|
return JNI_FALSE;
|
|
}
|
|
|
|
const TangibleObject * target = 0;
|
|
if (!JavaLibrary::getObject (jtarget, target))
|
|
{
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::launchMissile: could not resolve target"));
|
|
return JNI_FALSE;
|
|
}
|
|
|
|
if (player && ship && target)
|
|
return MissileManager::getInstance().requestFireMissile(player->getNetworkId(), ship->getNetworkId(), target->getNetworkId(), -1, missileInfo, getSlotType(targetedComponent));
|
|
else
|
|
return JNI_FALSE;
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
jboolean JNICALL ScriptMethodsShipNamespace::launchCountermeasure(JNIEnv * /*env*/, jobject /*self*/, jlong ship, jint targettedMissile, jboolean successful, jint countermeasureType)
|
|
{
|
|
if (!verifyShipsEnabled())
|
|
return false;
|
|
|
|
NetworkId const shipId(ship);
|
|
|
|
bool result= MissileManager::getInstance().fireCountermeasure(shipId, targettedMissile, (successful==static_cast<jboolean>(JNI_TRUE)), countermeasureType);
|
|
return result ? static_cast<jboolean>(JNI_TRUE) : static_cast<jboolean>(JNI_FALSE);
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
jint JNICALL ScriptMethodsShipNamespace::getNearestUnlockedMissileForTarget(JNIEnv * /*env*/, jobject /*self*/, jlong jtarget)
|
|
{
|
|
return MissileManager::getInstance().getNearestUnlockedMissileForTarget(NetworkId(jtarget));
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
jintArray JNICALL ScriptMethodsShipNamespace::getAllUnlockedMissilesForTarget(JNIEnv * env, jobject /*self*/, jlong jtarget)
|
|
{
|
|
std::vector<int> missiles;
|
|
MissileManager::getInstance().getAllUnlockedMissilesForTarget(NetworkId(jtarget),missiles);
|
|
|
|
LocalIntArrayRefPtr results = createNewIntArray(static_cast<int>(missiles.size()));
|
|
|
|
setIntArrayRegion(*results, 0 , static_cast<int>(missiles.size()), reinterpret_cast<jint*>(&(missiles[0])));
|
|
return results->getReturnValue();
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
jboolean JNICALL ScriptMethodsShipNamespace::destroyMissile(JNIEnv * /*env*/, jobject /*self*/, jint missileId)
|
|
{
|
|
return (MissileManager::getInstance().destroyMissile(missileId)) ? static_cast<jboolean>(JNI_TRUE) : static_cast<jboolean>(JNI_FALSE);
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
jint JNICALL ScriptMethodsShipNamespace::getTypeByMissile(JNIEnv * /*env*/, jobject /*self*/, jint missileId)
|
|
{
|
|
const Missile* missile = MissileManager::getInstance().getConstMissile(missileId);
|
|
if (missile)
|
|
return missile->getType();
|
|
else
|
|
return -1;
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
jint JNICALL ScriptMethodsShipNamespace::getWeaponIndexByMissile(JNIEnv * /*env*/, jobject /*self*/, jint missileId)
|
|
{
|
|
const Missile* missile = MissileManager::getInstance().getConstMissile(missileId);
|
|
if (missile)
|
|
return missile->getWeaponIndex();
|
|
else
|
|
return -1;
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
jint JNICALL ScriptMethodsShipNamespace::getTimeSinceFiredByMissile(JNIEnv * /*env*/, jobject /*self*/, jint missileId)
|
|
{
|
|
const Missile* missile = MissileManager::getInstance().getConstMissile(missileId);
|
|
if (missile)
|
|
return missile->getTimeSinceFired();
|
|
else
|
|
return -1;
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
jint JNICALL ScriptMethodsShipNamespace::getTotalTimeByMissile(JNIEnv * /*env*/, jobject /*self*/, jint missileId)
|
|
{
|
|
const Missile* missile = MissileManager::getInstance().getConstMissile(missileId);
|
|
if (missile)
|
|
return missile->getTotalTime();
|
|
else
|
|
return -1;
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
jlong JNICALL ScriptMethodsShipNamespace::getWhoFiredByMissile(JNIEnv * /*env*/, jobject /*self*/, jint missileId)
|
|
{
|
|
const Missile* missile = MissileManager::getInstance().getConstMissile(missileId);
|
|
if (missile)
|
|
return (missile->getSource()).getValue();
|
|
else
|
|
return 0;
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
jboolean JNICALL ScriptMethodsShipNamespace::setLookAtTargetShipComponent(JNIEnv * env, jobject /*self*/, jlong jship, jint targetedComponentChassisSlot)
|
|
{
|
|
if (!verifyShipsEnabled())
|
|
return JNI_FALSE;
|
|
|
|
ShipObject * const shipObject = JavaLibrary::getShipThrow(env, jship, "setLookAtTargetShipComponent(): shipId obj_id did not resolve to a ShipObject", false);
|
|
if (!shipObject)
|
|
return JNI_FALSE;
|
|
|
|
shipObject->setPilotLookAtTargetSlot(getSlotType(targetedComponentChassisSlot));
|
|
return JNI_TRUE;
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
jint JNICALL ScriptMethodsShipNamespace::getLookAtTargetShipComponent(JNIEnv * env, jobject /*self*/, jlong jship)
|
|
{
|
|
if (!verifyShipsEnabled())
|
|
return static_cast<int>(ShipChassisSlotType::SCST_num_types);
|
|
|
|
ShipObject * const shipObject = JavaLibrary::getShipThrow(env, jship, "getLookAtTargetShipComponent(): shipId obj_id did not resolve to a ShipObject", false);
|
|
if (!shipObject)
|
|
return static_cast<int>(ShipChassisSlotType::SCST_num_types);
|
|
|
|
return static_cast<int>(shipObject->getPilotLookAtTargetSlot());
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
jboolean JNICALL ScriptMethodsShipNamespace::associateDroidControlDeviceWithShip(JNIEnv * env, jobject /*self*/, jlong jship, jlong jdroidControlDevice)
|
|
{
|
|
if (!verifyShipsEnabled())
|
|
return JNI_FALSE;
|
|
|
|
ShipObject * const shipObject = JavaLibrary::getShipThrow(env, jship, "associateDroidControlDeviceWithShip(): shipId obj_id did not resolve to a ShipObject", false);
|
|
if (!shipObject)
|
|
return JNI_FALSE;
|
|
|
|
const ServerObject * droidControlDevice = 0;
|
|
if (!JavaLibrary::getObject (jdroidControlDevice, droidControlDevice))
|
|
{
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::associateDroidControlDeviceWithShip: could not resolve droid control device"));
|
|
return JNI_FALSE;
|
|
}
|
|
|
|
shipObject->setInstalledDroidControlDevice(droidControlDevice->getNetworkId());
|
|
return JNI_TRUE;
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
jboolean JNICALL ScriptMethodsShipNamespace::removeDroidControlDeviceFromShip(JNIEnv * env, jobject /*self*/, jlong jship)
|
|
{
|
|
if (!verifyShipsEnabled())
|
|
return JNI_FALSE;
|
|
|
|
ShipObject * const shipObject = JavaLibrary::getShipThrow(env, jship, "removeDroidControlDeviceFromShip(): shipId obj_id did not resolve to a ShipObject", false);
|
|
if (!shipObject)
|
|
return JNI_FALSE;
|
|
|
|
shipObject->setInstalledDroidControlDevice(NetworkId::cms_invalid);
|
|
return JNI_TRUE;
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
jlong JNICALL ScriptMethodsShipNamespace::getDroidControlDeviceForShip(JNIEnv * env, jobject /*self*/, jlong jship)
|
|
{
|
|
if (!verifyShipsEnabled())
|
|
return JNI_FALSE;
|
|
|
|
ShipObject const * const shipObject = JavaLibrary::getShipThrow(env, jship, "getDroidControlDeviceForShip(): shipId obj_id did not resolve to a ShipObject", false);
|
|
if (!shipObject)
|
|
return JNI_FALSE;
|
|
|
|
NetworkId const & droidControlDeviceId = shipObject->getInstalledDroidControlDevice();
|
|
Object const * const droidControlDevice = NetworkIdManager::getObjectById(droidControlDeviceId);
|
|
ServerObject const * const serverDroidControlDevice = droidControlDevice ? droidControlDevice->asServerObject() : nullptr;
|
|
if(!serverDroidControlDevice)
|
|
return 0;
|
|
else
|
|
return (serverDroidControlDevice->getNetworkId()).getValue();
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
void JNICALL ScriptMethodsShipNamespace::commPlayers(JNIEnv *env, jobject /*self*/, jlong jtaunter, jstring jappearanceOverloadServerTemplate, jstring jSoundEffect, jfloat jDuration, jlongArray jplayers, jstring jtauntOob, jboolean chronicles)
|
|
{
|
|
ServerObject const *taunter = 0;
|
|
if (!JavaLibrary::getObject(jtaunter, taunter))
|
|
{
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::commPlayers: could not resolve taunter"));
|
|
return;
|
|
}
|
|
|
|
Unicode::String oob;
|
|
if (jtauntOob)
|
|
{
|
|
JavaStringParam localTauntOob(jtauntOob);
|
|
if (!JavaLibrary::convert(localTauntOob, oob))
|
|
{
|
|
JAVA_THROW_SCRIPT_EXCEPTION (true, ("JavaLibrary::commPlayers unable to convert tauntOob"));
|
|
return;
|
|
}
|
|
}
|
|
|
|
Unicode::String appearanceOverloadServerTemplateWide;
|
|
if (jappearanceOverloadServerTemplate)
|
|
{
|
|
JavaStringParam localAppearanceOverloadServerTemplate(jappearanceOverloadServerTemplate);
|
|
if (!JavaLibrary::convert(localAppearanceOverloadServerTemplate, appearanceOverloadServerTemplateWide))
|
|
{
|
|
JAVA_THROW_SCRIPT_EXCEPTION (true, ("JavaLibrary::commPlayers unable to convert jappearanceOverloadServerTemplate to a string"));
|
|
return;
|
|
}
|
|
}
|
|
|
|
uint32 appearanceOverloadSharedTemplateCrc = 0;
|
|
ObjectTemplate const * const ot = ObjectTemplateList::fetch(Unicode::wideToNarrow(appearanceOverloadServerTemplateWide));
|
|
ServerObjectTemplate const * const sot = ot ? ot->asServerObjectTemplate() : nullptr;
|
|
if(sot)
|
|
{
|
|
std::string const & sharedTemplateName = sot->getSharedTemplate();
|
|
appearanceOverloadSharedTemplateCrc = Crc::calculate(sharedTemplateName.c_str());
|
|
}
|
|
|
|
typedef std::map<ConnectionServerConnection *, std::vector<NetworkId> > DistributionList;
|
|
DistributionList distributionList;
|
|
|
|
jsize const count = env->GetArrayLength(jplayers);
|
|
jlong jlongTmp;
|
|
for (jsize i = 0; i < count; ++i)
|
|
{
|
|
ServerObject const *player = 0;
|
|
env->GetLongArrayRegion(jplayers, i, 1, &jlongTmp);
|
|
if (JavaLibrary::getObject(jlongTmp, player))
|
|
{
|
|
Client * const client = player->getClient();
|
|
if (client)
|
|
distributionList[client->getConnection()].push_back(client->getCharacterObjectId());
|
|
}
|
|
}
|
|
|
|
std::string soundEffect;
|
|
if (jSoundEffect)
|
|
{
|
|
JavaStringParam soundEffectParam(jSoundEffect);
|
|
if (!JavaLibrary::convert(soundEffectParam, soundEffect))
|
|
{
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::commPlayers unable to convert jSoundEffect to a string."));
|
|
return;
|
|
}
|
|
}
|
|
|
|
bool chroniclesMessage = (chronicles == JNI_TRUE ? true : false);
|
|
if (!distributionList.empty())
|
|
{
|
|
GenericValueTypeMessage<std::pair<bool, std::pair<NetworkId, std::pair<Unicode::String, std::pair<uint32, std::pair<std::string, float> > > > > > const message("CommPlayerMessage", std::make_pair(chroniclesMessage, std::make_pair(taunter->getNetworkId(), std::make_pair(oob, std::make_pair(appearanceOverloadSharedTemplateCrc, std::make_pair(soundEffect, jDuration))))));
|
|
for (DistributionList::const_iterator iter = distributionList.begin(); iter != distributionList.end(); ++iter)
|
|
{
|
|
GameClientMessage const gcm(
|
|
(*iter).second,
|
|
true,
|
|
message);
|
|
(*iter).first->send(gcm, true);
|
|
}
|
|
}
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
void JNICALL ScriptMethodsShipNamespace::setShipSlotTargetable(JNIEnv * env, jobject /*self*/, jlong jshipId, jint slot, jboolean targetable)
|
|
{
|
|
if (!verifyShipsEnabled())
|
|
{
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::setShipComponentTargetable ships not enabled"));
|
|
return;
|
|
}
|
|
|
|
ShipObject * const shipObject = JavaLibrary::getShipThrow(env, jshipId, "setShipComponentTargetable(): shipId obj_id did not resolve to a ShipObject", false);
|
|
if (!shipObject)
|
|
return;
|
|
|
|
if(targetable)
|
|
shipObject->setSlotTargetable(getSlotType(slot));
|
|
else
|
|
shipObject->clearSlotTargetable(getSlotType(slot));
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
jboolean JNICALL ScriptMethodsShipNamespace::isShipSlotTargetable(JNIEnv * env, jobject /*self*/, jlong jshipId, jint slot)
|
|
{
|
|
if (!verifyShipsEnabled())
|
|
return JNI_FALSE;
|
|
|
|
ShipObject const * const shipObject = JavaLibrary::getShipThrow(env, jshipId, "getShipComponentTargetable(): shipId obj_id did not resolve to a ShipObject", false);
|
|
if (!shipObject)
|
|
return JNI_FALSE;
|
|
|
|
bool const result = shipObject->getSlotTargetable(getSlotType(slot));
|
|
if(result)
|
|
return JNI_TRUE;
|
|
else
|
|
return JNI_FALSE;
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------
|
|
|
|
jlong JNICALL ScriptMethodsShipNamespace::launchShipFromHangar(JNIEnv *env, jobject /*self*/, jlong jlaunchingShipId, jstring templateToSpawn, jobject deltaFromHangarHardpoint)
|
|
{
|
|
if (!verifyShipsEnabled())
|
|
return 0;
|
|
|
|
//convert ship
|
|
ShipObject * const launchingShip = JavaLibrary::getShipThrow(env, jlaunchingShipId, "getShipComponentTargetable(): shipId obj_id did not resolve to a ShipObject", false);
|
|
if (!launchingShip)
|
|
return 0;
|
|
|
|
//convert transform
|
|
Transform deltaFromHangarTransform;
|
|
if (!ScriptConversion::convert(deltaFromHangarHardpoint, deltaFromHangarTransform))
|
|
{
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("[designer bug] JavaLibrary::spawnShipFromHangar called with bad transform"));
|
|
return 0;
|
|
}
|
|
|
|
// get the template name into an std::string
|
|
JavaStringParam const localSource(templateToSpawn);
|
|
std::string templateName;
|
|
IGNORE_RETURN(JavaLibrary::convert(localSource, templateName));
|
|
|
|
ConstCharCrcString const crcName(ObjectTemplateList::lookUp(templateName.c_str()));
|
|
if (crcName.getCrc() == 0)
|
|
|
|
{
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("[designer bug] JavaLibrary::spawnShipFromHangar called with unknown template %s", templateName.c_str()));
|
|
return 0;
|
|
}
|
|
|
|
//put spawned ship in same cell as the launching ship
|
|
ServerObject *cell = 0;
|
|
CellProperty * const cellProperty = launchingShip->getParentCell();
|
|
if (cellProperty && cellProperty != CellProperty::getWorldCellProperty())
|
|
cell = safe_cast<ServerObject *>(&cellProperty->getOwner());
|
|
|
|
//get the hardpoint from the launching ship
|
|
Transform hangarHardpointDelta;
|
|
Appearance const * const launchingShipAppearance = launchingShip->getAppearance();
|
|
if(launchingShipAppearance)
|
|
{
|
|
static char const * const hangarHardpointName = "hangar";
|
|
if (!launchingShipAppearance->findHardpoint(ConstCharCrcLowerString(hangarHardpointName), hangarHardpointDelta))
|
|
WARNING(true, ("JavaLibrary::launchShipFromHangar - could not find hangar hardpoint [%s] for %s, launching from center of ship", hangarHardpointName, launchingShip->getNetworkId().getValueString().c_str()));
|
|
}
|
|
else
|
|
{
|
|
WARNING(true, ("JavaLibrary::launchShipFromHangar - could not find hangar %s, which has no appearance.", launchingShip->getNetworkId().getValueString().c_str()));
|
|
}
|
|
|
|
//build the final hangar offset from the hangar hardpoint transform and the delta transform from script
|
|
Transform finalHangarDelta_o(Transform::IF_none);
|
|
finalHangarDelta_o.multiply(hangarHardpointDelta, deltaFromHangarTransform);
|
|
Transform const & finalCreateTransform = launchingShip->getTransform_o2p().rotateTranslate_l2p(finalHangarDelta_o);
|
|
|
|
ServerObject * const newShip = ServerWorld::createNewObject(crcName.getCrc(), finalCreateTransform, cell, false);
|
|
if (newShip == nullptr)
|
|
return 0;
|
|
|
|
// create an objId to return
|
|
NetworkId netId = newShip->getNetworkId();
|
|
if (netId == NetworkId::cms_invalid)
|
|
{
|
|
delete newShip;
|
|
return 0;
|
|
}
|
|
|
|
if (!cell)
|
|
newShip->addToWorld();
|
|
|
|
return netId.getValue();
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
void JNICALL ScriptMethodsShipNamespace::handleShipDestruction(JNIEnv * env, jobject /*self*/, jlong jship, jfloat severity)
|
|
{
|
|
if (!verifyShipsEnabled())
|
|
return;
|
|
|
|
//convert ship
|
|
ShipObject * const ship = JavaLibrary::getShipThrow(env, jship, "handleShipDestruction(): shipId obj_id did not resolve to a ShipObject", false);
|
|
if (ship == nullptr)
|
|
return;
|
|
|
|
DestroyShipMessage const msg(ship->getNetworkId(), severity);
|
|
sendGameNetworkMessageToObservers(*ship, msg, true);
|
|
|
|
if (ship->isPlayerShip())
|
|
Pvp::removeDuelEnemyFlags(*ship, NetworkId::cms_invalid);
|
|
else
|
|
IGNORE_RETURN(ship->permanentlyDestroy(DeleteReasons::Script));
|
|
|
|
//@todo: we must handle player ship destruction differently
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
void JNICALL ScriptMethodsShipNamespace::handleShipComponentDestruction(JNIEnv * env, jobject /*self*/, jlong jship, jint chassisSlot, jfloat severity)
|
|
{
|
|
ShipObject * const ship = getShipThrowTestSlot(env, jship, "handleShipComponentDestruction()", false, chassisSlot);
|
|
if (!ship)
|
|
return;
|
|
|
|
DestroyShipComponentMessage const msg(ship->getNetworkId(), chassisSlot, severity);
|
|
sendGameNetworkMessageToObservers(*ship, msg, true);
|
|
|
|
ship->purgeComponent(chassisSlot);
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
jlongArray JNICALL ScriptMethodsShipNamespace::getObservedShips(JNIEnv *, jobject, jlong jsource, jboolean excludeSource)
|
|
{
|
|
ServerObject const *source = 0;
|
|
if (JavaLibrary::getObject(jsource, source))
|
|
{
|
|
std::vector<ServerObject *> visibleObjects;
|
|
SpaceVisibilityManager::getObjectsVisibleFromLocation(source->getPosition_w(), visibleObjects);
|
|
if (!visibleObjects.empty())
|
|
{
|
|
std::vector<ServerObject *> results(visibleObjects.size());
|
|
for (std::vector<ServerObject *>::const_iterator i = visibleObjects.begin(); i != visibleObjects.end(); ++i)
|
|
if ( (*i)->asShipObject()
|
|
&& ((*i) != source || !excludeSource))
|
|
results.push_back(*i);
|
|
if (!results.empty())
|
|
{
|
|
LocalLongArrayRefPtr rv;
|
|
if (ScriptConversion::convert(results, rv))
|
|
return rv->getReturnValue();
|
|
}
|
|
}
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
jlongArray JNICALL ScriptMethodsShipNamespace::getObservedPlayerShips(JNIEnv *, jobject, jlong jsource, jboolean excludeSource)
|
|
{
|
|
ServerObject const *source = 0;
|
|
if (JavaLibrary::getObject(jsource, source))
|
|
{
|
|
std::vector<ServerObject *> visibleObjects;
|
|
SpaceVisibilityManager::getObjectsVisibleFromLocation(source->getPosition_w(), visibleObjects);
|
|
if (!visibleObjects.empty())
|
|
{
|
|
std::vector<ServerObject *> results(visibleObjects.size());
|
|
for (std::vector<ServerObject *>::const_iterator i = visibleObjects.begin(); i != visibleObjects.end(); ++i)
|
|
{
|
|
ShipObject * const ship = (*i)->asShipObject();
|
|
if ( ship
|
|
&& ship->isPlayerShip()
|
|
&& ((*i) != source || !excludeSource))
|
|
results.push_back(*i);
|
|
}
|
|
if (!results.empty())
|
|
{
|
|
LocalLongArrayRefPtr rv;
|
|
if (ScriptConversion::convert(results, rv))
|
|
return rv->getReturnValue();
|
|
}
|
|
}
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
jlongArray JNICALL ScriptMethodsShipNamespace::getObservedEnemyShips(JNIEnv *, jobject, jlong jsource)
|
|
{
|
|
ShipObject const *source = 0;
|
|
if (JavaLibrary::getObject(jsource, source))
|
|
{
|
|
std::vector<ServerObject *> visibleObjects;
|
|
SpaceVisibilityManager::getObjectsVisibleFromLocation(source->getPosition_w(), visibleObjects);
|
|
if (!visibleObjects.empty())
|
|
{
|
|
std::vector<ServerObject *> results(visibleObjects.size());
|
|
for (std::vector<ServerObject *>::const_iterator i = visibleObjects.begin(); i != visibleObjects.end(); ++i)
|
|
{
|
|
ShipObject * const ship = (*i)->asShipObject();
|
|
if ( ship
|
|
&& Pvp::isEnemy(*source, *ship))
|
|
results.push_back(*i);
|
|
}
|
|
if (!results.empty())
|
|
{
|
|
LocalLongArrayRefPtr rv;
|
|
if (ScriptConversion::convert(results, rv))
|
|
return rv->getReturnValue();
|
|
}
|
|
}
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
jlongArray JNICALL ScriptMethodsShipNamespace::getObservedEnemyPlayerShips(JNIEnv *, jobject, jlong jsource)
|
|
{
|
|
ShipObject const *source = 0;
|
|
if (JavaLibrary::getObject(jsource, source))
|
|
{
|
|
std::vector<ServerObject *> visibleObjects;
|
|
SpaceVisibilityManager::getObjectsVisibleFromLocation(source->getPosition_w(), visibleObjects);
|
|
if (!visibleObjects.empty())
|
|
{
|
|
std::vector<ServerObject *> results(visibleObjects.size());
|
|
for (std::vector<ServerObject *>::const_iterator i = visibleObjects.begin(); i != visibleObjects.end(); ++i)
|
|
{
|
|
ShipObject * const ship = (*i)->asShipObject();
|
|
if ( ship
|
|
&& ship->isPlayerShip()
|
|
&& Pvp::isEnemy(*source, *ship))
|
|
results.push_back(*i);
|
|
}
|
|
if (!results.empty())
|
|
{
|
|
LocalLongArrayRefPtr rv;
|
|
if (ScriptConversion::convert(results, rv))
|
|
return rv->getReturnValue();
|
|
}
|
|
}
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
jboolean JNICALL ScriptMethodsShipNamespace::setShipInternalDamageOverTime(JNIEnv * env, jobject, jlong jship, jint chassisSlot, jfloat damageRate, jfloat damageThreshold)
|
|
{
|
|
ShipObject * const ship = getShipThrowTestSlot(env, jship, "setShipInternalDamageOverTime()", false, chassisSlot);
|
|
if (!ship)
|
|
return false;
|
|
|
|
return ShipInternalDamageOverTimeManager::setEntry(*ship, chassisSlot, damageRate, damageThreshold);
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
jboolean JNICALL ScriptMethodsShipNamespace::removeShipInternalDamageOverTime(JNIEnv * env, jobject, jlong jship, jint chassisSlot)
|
|
{
|
|
ShipObject * const ship = getShipThrowTestSlot(env, jship, "removeShipInternalDamageOverTime()", false, chassisSlot);
|
|
if (!ship)
|
|
return false;
|
|
|
|
return ShipInternalDamageOverTimeManager::removeEntry(*ship, chassisSlot);
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
jfloat JNICALL ScriptMethodsShipNamespace::getShipInternalDamageOverTimeDamageRate(JNIEnv * env, jobject, jlong jship, jint chassisSlot)
|
|
{
|
|
ShipObject * const ship = getShipThrowTestSlot(env, jship, "getShipInternalDamageOverTimeDamageThreshold()", false, chassisSlot);
|
|
if (!ship)
|
|
return 0.0f;
|
|
|
|
static ShipInternalDamageOverTime const * const idot = ShipInternalDamageOverTimeManager::findEntry(*ship, chassisSlot);
|
|
if (idot == nullptr)
|
|
{
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::getShipInternalDamageOverTimeDamageThreshold idot for [%s] slot [%d] not found", ship->getNetworkId().getValueString().c_str(), chassisSlot));
|
|
return 0.0f;
|
|
}
|
|
|
|
return idot->getDamageRate();
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
jfloat JNICALL ScriptMethodsShipNamespace::getShipInternalDamageOverTimeDamageThreshold(JNIEnv * env, jobject, jlong jship, jint chassisSlot)
|
|
{
|
|
ShipObject * const ship = getShipThrowTestSlot(env, jship, "getShipInternalDamageOverTimeDamageThreshold()", false, chassisSlot);
|
|
if (!ship)
|
|
return 0.0f;
|
|
|
|
static ShipInternalDamageOverTime const * const idot = ShipInternalDamageOverTimeManager::findEntry(*ship, chassisSlot);
|
|
if (idot == nullptr)
|
|
{
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::getShipInternalDamageOverTimeDamageThreshold idot for [%s] slot [%d] not found", ship->getNetworkId().getValueString().c_str(), chassisSlot));
|
|
return 0.0f;
|
|
}
|
|
|
|
return idot->getDamageThreshold();
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
jboolean JNICALL ScriptMethodsShipNamespace::hasShipInternalDamageOverTime(JNIEnv * env, jobject, jlong jship, jint chassisSlot)
|
|
{
|
|
if (!verifyShipsEnabled())
|
|
return false;
|
|
|
|
//convert ship
|
|
ShipObject * const ship = JavaLibrary::getShipThrow(env, jship, "hasShipInternalDamageOverTime(): shipId obj_id did not resolve to a ShipObject", false);
|
|
if (ship == nullptr)
|
|
return false;
|
|
|
|
static ShipInternalDamageOverTime const * const idot = ShipInternalDamageOverTimeManager::findEntry(*ship, chassisSlot);
|
|
return idot != nullptr;
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
jint JNICALL ScriptMethodsShipNamespace::shipGetSpaceFaction(JNIEnv *env, jobject, jlong jship)
|
|
{
|
|
ShipObject const * const ship = JavaLibrary::getShipThrow(env, jship, "shipGetSpaceFaction(): shipId obj_id did not resolve to a ShipObject", false);
|
|
if (ship)
|
|
return static_cast<jint>(ship->getSpaceFaction());
|
|
return 0;
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
jintArray JNICALL ScriptMethodsShipNamespace::shipGetSpaceFactionAllies(JNIEnv *env, jobject, jlong jship)
|
|
{
|
|
ShipObject const * const ship = JavaLibrary::getShipThrow(env, jship, "shipGetSpaceFactionAllies(): shipId obj_id did not resolve to a ShipObject", false);
|
|
if (ship)
|
|
{
|
|
std::vector<uint32> const &factionList = ship->getSpaceFactionAllies();
|
|
if (!factionList.empty())
|
|
{
|
|
LocalIntArrayRefPtr ret = createNewIntArray(static_cast<jsize>(factionList.size()));
|
|
setIntArrayRegion(*ret, 0, static_cast<jsize>(factionList.size()), reinterpret_cast<jint *>(const_cast<uint32 *>(&factionList[0])));
|
|
return ret->getReturnValue();
|
|
}
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
jintArray JNICALL ScriptMethodsShipNamespace::shipGetSpaceFactionEnemies(JNIEnv *env, jobject, jlong jship)
|
|
{
|
|
ShipObject const * const ship = JavaLibrary::getShipThrow(env, jship, "shipGetSpaceFactionEnemies(): shipId obj_id did not resolve to a ShipObject", false);
|
|
if (ship)
|
|
{
|
|
std::vector<uint32> const &factionList = ship->getSpaceFactionEnemies();
|
|
if (!factionList.empty())
|
|
{
|
|
LocalIntArrayRefPtr ret = createNewIntArray(static_cast<jsize>(factionList.size()));
|
|
setIntArrayRegion(*ret, 0, static_cast<jsize>(factionList.size()), reinterpret_cast<jint *>(const_cast<uint32 *>(&factionList[0])));
|
|
return ret->getReturnValue();
|
|
}
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
jboolean JNICALL ScriptMethodsShipNamespace::shipGetSpaceFactionIsAggro(JNIEnv *env, jobject, jlong jship)
|
|
{
|
|
ShipObject const * const ship = JavaLibrary::getShipThrow(env, jship, "shipGetSpaceFactionIsAggro(): shipId obj_id did not resolve to a ShipObject", false);
|
|
if (ship)
|
|
return static_cast<jboolean>(ship->getSpaceFactionIsAggro());
|
|
return JNI_FALSE;
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
void JNICALL ScriptMethodsShipNamespace::shipSetSpaceFaction(JNIEnv *env, jobject, jlong jship, jint spaceFaction)
|
|
{
|
|
ShipObject * const ship = JavaLibrary::getShipThrow(env, jship, "shipSetSpaceFaction(): shipId obj_id did not resolve to a ShipObject", false);
|
|
if (ship)
|
|
ship->setSpaceFaction(static_cast<uint32>(spaceFaction));
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
void JNICALL ScriptMethodsShipNamespace::shipSetSpaceFactionAllies(JNIEnv *env, jobject, jlong jship, jintArray jfactionList)
|
|
{
|
|
ShipObject * const ship = JavaLibrary::getShipThrow(env, jship, "shipSetSpaceFactionAllies(): shipId obj_id did not resolve to a ShipObject", false);
|
|
if (ship)
|
|
{
|
|
std::vector<uint32> factionList;
|
|
if (jfactionList)
|
|
{
|
|
unsigned int const factionCount = static_cast<unsigned int>(env->GetArrayLength(jfactionList));
|
|
if (factionCount > 0)
|
|
{
|
|
factionList.reserve(factionCount);
|
|
jint * const factionArray = env->GetIntArrayElements(jfactionList, 0);
|
|
for (unsigned int i = 0; i < factionCount; ++i)
|
|
factionList.push_back(static_cast<uint32>(factionArray[i]));
|
|
env->ReleaseIntArrayElements(jfactionList, factionArray, JNI_ABORT);
|
|
}
|
|
}
|
|
ship->setSpaceFactionAllies(factionList);
|
|
}
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
void JNICALL ScriptMethodsShipNamespace::shipSetSpaceFactionEnemies(JNIEnv *env, jobject, jlong jship, jintArray jfactionList)
|
|
{
|
|
ShipObject * const ship = JavaLibrary::getShipThrow(env, jship, "shipSetSpaceFactionEnemies(): shipId obj_id did not resolve to a ShipObject", false);
|
|
if (ship)
|
|
{
|
|
std::vector<uint32> factionList;
|
|
if (jfactionList)
|
|
{
|
|
unsigned int const factionCount = static_cast<unsigned int>(env->GetArrayLength(jfactionList));
|
|
if (factionCount > 0)
|
|
{
|
|
factionList.reserve(factionCount);
|
|
jint * const factionArray = env->GetIntArrayElements(jfactionList, 0);
|
|
for (unsigned int i = 0; i < factionCount; ++i)
|
|
factionList.push_back(static_cast<uint32>(factionArray[i]));
|
|
env->ReleaseIntArrayElements(jfactionList, factionArray, JNI_ABORT);
|
|
}
|
|
}
|
|
ship->setSpaceFactionEnemies(factionList);
|
|
}
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
void JNICALL ScriptMethodsShipNamespace::shipSetSpaceFactionIsAggro(JNIEnv *env, jobject, jlong jship, jboolean isAggro)
|
|
{
|
|
ShipObject * const ship = JavaLibrary::getShipThrow(env, jship, "shipSetSpaceFactionIsAggro(): shipId obj_id did not resolve to a ShipObject", false);
|
|
if (ship)
|
|
ship->setSpaceFactionIsAggro(isAggro ? true : false);
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jboolean JNICALL ScriptMethodsShipNamespace::shipIsInNebula(JNIEnv *env, jobject, jlong jship, jstring j_nebulaName)
|
|
{
|
|
ShipObject * const ship = JavaLibrary::getShipThrow(env, jship, "shipIsInNebula(): shipId obj_id did not resolve to a ShipObject", false);
|
|
if (!ship)
|
|
return JNI_FALSE;
|
|
|
|
std::string nebulaName;
|
|
|
|
if (nullptr != j_nebulaName)
|
|
{
|
|
JavaStringParam const jsp(j_nebulaName);
|
|
if (!JavaLibrary::convert(jsp, nebulaName))
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::shipIsInNebula (): failed to convert nebulaName string"));
|
|
}
|
|
|
|
ShipObject::IntVector const & nebulas = ship->getNebulas();
|
|
|
|
//-- empty nebula name matches any nebula
|
|
if (nebulaName.empty() && !nebulas.empty())
|
|
return JNI_TRUE;
|
|
|
|
for (ShipObject::IntVector::const_iterator it = nebulas.begin(); it != nebulas.end(); ++it)
|
|
{
|
|
int const id = *it;
|
|
Nebula const * const nebula = NebulaManager::getNebulaById(id);
|
|
if (nullptr != nebula)
|
|
{
|
|
if (nebula->getName() == nebulaName)
|
|
return JNI_TRUE;
|
|
}
|
|
}
|
|
|
|
return JNI_FALSE;
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jboolean JNICALL ScriptMethodsShipNamespace::setShipWingName(JNIEnv * /*env*/, jobject /*self*/, jlong target, jstring jstr)
|
|
{
|
|
ServerObject * object = 0;
|
|
if(!JavaLibrary::getObject(target, object))
|
|
{
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::setShipWingName (): failed to convert target"));
|
|
return JNI_FALSE;
|
|
}
|
|
ShipObject * const ship = object->asShipObject();
|
|
if(!ship)
|
|
{
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::setShipWingName (): target not a ship"));
|
|
return JNI_FALSE;
|
|
}
|
|
|
|
JavaStringParam const jsp(jstr);
|
|
std::string wingName;
|
|
if (!JavaLibrary::convert(jsp, wingName))
|
|
{
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::setShipWingName (): failed to convert mobileName string"));
|
|
return JNI_FALSE;
|
|
}
|
|
|
|
ship->setWingName(wingName);
|
|
|
|
return JNI_TRUE;
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jstring JNICALL ScriptMethodsShipNamespace::getShipWingName(JNIEnv * /*env*/, jobject /*self*/, jlong target)
|
|
{
|
|
ServerObject const * object = nullptr;
|
|
if (!JavaLibrary::getObject(target, object))
|
|
{
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::getShipWingName (): could not convert the target"));
|
|
return 0;
|
|
}
|
|
ShipObject const * const ship = object->asShipObject();
|
|
if(!ship)
|
|
{
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::getShipWingName (): target is not a ship"));
|
|
return 0;
|
|
}
|
|
|
|
return JavaString(ship->getWingName()).getReturnValue();
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jboolean JNICALL ScriptMethodsShipNamespace::setShipTypeName(JNIEnv * /*env*/, jobject /*self*/, jlong target, jstring jstr)
|
|
{
|
|
ServerObject * object = 0;
|
|
if(!JavaLibrary::getObject(target, object))
|
|
{
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::setShipTypeName (): failed to convert target"));
|
|
return JNI_FALSE;
|
|
}
|
|
ShipObject * const ship = object->asShipObject();
|
|
if(!ship)
|
|
{
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::setShipTypeName (): target not a ship"));
|
|
return JNI_FALSE;
|
|
}
|
|
|
|
JavaStringParam const jsp(jstr);
|
|
std::string typeName;
|
|
if (!JavaLibrary::convert(jsp, typeName))
|
|
{
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::setShipWingName (): failed to convert mobileName string"));
|
|
return JNI_FALSE;
|
|
}
|
|
ship->setTypeName(typeName);
|
|
|
|
return JNI_TRUE;
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jstring JNICALL ScriptMethodsShipNamespace::getShipTypeName(JNIEnv * /*env*/, jobject /*self*/, jlong target)
|
|
{
|
|
ServerObject const * object = nullptr;
|
|
if (!JavaLibrary::getObject(target, object))
|
|
{
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::getShipTypeName (): could not convert the target"));
|
|
return 0;
|
|
}
|
|
ShipObject const * const ship = object->asShipObject();
|
|
if(!ship)
|
|
{
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::getShipTypeName (): target is not a ship"));
|
|
return 0;
|
|
}
|
|
|
|
return JavaString(ship->getTypeName()).getReturnValue();
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jboolean JNICALL ScriptMethodsShipNamespace::setShipDifficulty(JNIEnv * /*env*/, jobject /*self*/, jlong target, jstring jstr)
|
|
{
|
|
ServerObject * object = 0;
|
|
if(!JavaLibrary::getObject(target, object))
|
|
{
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::setShipDifficultyName (): failed to convert target"));
|
|
return JNI_FALSE;
|
|
}
|
|
ShipObject * const ship = object->asShipObject();
|
|
if(!ship)
|
|
{
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::setShipDifficultyName (): target not a ship"));
|
|
return JNI_FALSE;
|
|
}
|
|
|
|
JavaStringParam const jsp(jstr);
|
|
std::string difficulty;
|
|
if (!JavaLibrary::convert(jsp, difficulty))
|
|
{
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::setShipWingName (): failed to convert mobileName string"));
|
|
return JNI_FALSE;
|
|
}
|
|
ship->setDifficulty(difficulty);
|
|
|
|
return JNI_TRUE;
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jstring JNICALL ScriptMethodsShipNamespace::getShipDifficulty(JNIEnv * /*env*/, jobject /*self*/, jlong target)
|
|
{
|
|
ServerObject const * object = nullptr;
|
|
if (!JavaLibrary::getObject(target, object))
|
|
{
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::getShipDifficulty (): could not convert the target"));
|
|
return 0;
|
|
}
|
|
ShipObject const * const ship = object->asShipObject();
|
|
if(!ship)
|
|
{
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::getShipDifficulty (): target is not a ship"));
|
|
return 0;
|
|
}
|
|
return JavaString(ship->getDifficulty()).getReturnValue();
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jboolean JNICALL ScriptMethodsShipNamespace::setShipFaction(JNIEnv * /*env*/, jobject /*self*/, jlong target, jstring jstr)
|
|
{
|
|
ServerObject * object = 0;
|
|
if(!JavaLibrary::getObject(target, object))
|
|
{
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::setShipFactionName (): failed to convert target"));
|
|
return JNI_FALSE;
|
|
}
|
|
ShipObject * const ship = object->asShipObject();
|
|
if(!ship)
|
|
{
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::setShipFactionName (): target not a ship"));
|
|
return JNI_FALSE;
|
|
}
|
|
|
|
JavaStringParam const jsp(jstr);
|
|
std::string faction;
|
|
if (!JavaLibrary::convert(jsp, faction))
|
|
{
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::setShipWingName (): failed to convert mobileName string"));
|
|
return JNI_FALSE;
|
|
}
|
|
ship->setFaction(faction);
|
|
|
|
return JNI_TRUE;
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jstring JNICALL ScriptMethodsShipNamespace::getShipFaction(JNIEnv * /*env*/, jobject /*self*/, jlong target)
|
|
{
|
|
ServerObject const * object = nullptr;
|
|
if (!JavaLibrary::getObject(target, object))
|
|
{
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::getShipFaction (): could not convert the target"));
|
|
return 0;
|
|
}
|
|
ShipObject const * const ship = object->asShipObject();
|
|
if(!ship)
|
|
{
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::getShipFaction (): target is not a ship"));
|
|
return 0;
|
|
}
|
|
return JavaString(ship->getFaction()).getReturnValue();
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jboolean JNICALL ScriptMethodsShipNamespace::addMissionCriticalObject(JNIEnv * env, jobject /*self*/, jlong playerId, jlong missionCriticalObject)
|
|
{
|
|
PROFILER_AUTO_BLOCK_DEFINE("JNI::addMissionCriticalObject");
|
|
|
|
CreatureObject * const creatureObject = JavaLibrary::getCreatureThrow(env, playerId, "addMissionCriticalObject(): playerId did not resolve to a CreatureObject", false);
|
|
if (!creatureObject)
|
|
return JNI_FALSE;
|
|
|
|
NetworkId missionCriticalObjectId(missionCriticalObject);
|
|
|
|
if (missionCriticalObject)
|
|
{
|
|
if(missionCriticalObjectId == NetworkId::cms_invalid)
|
|
{
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("addMissionCriticalObject(): missionCriticalObject is not an obj_id"));
|
|
return JNI_FALSE;
|
|
}
|
|
|
|
if (missionCriticalObjectId != NetworkId::cms_invalid)
|
|
creatureObject->addMissionCriticalObject(missionCriticalObjectId);
|
|
}
|
|
return JNI_TRUE;
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jboolean JNICALL ScriptMethodsShipNamespace::removeMissionCriticalObject(JNIEnv * env, jobject /*self*/, jlong playerId, jlong missionCriticalObject)
|
|
{
|
|
CreatureObject * const creatureObject = JavaLibrary::getCreatureThrow(env, playerId, "removeMissionCriticalObject(): playerId did not resolve to a CreatureObject", false);
|
|
if (!creatureObject)
|
|
return JNI_FALSE;
|
|
|
|
NetworkId missionCriticalObjectId(missionCriticalObject);
|
|
|
|
if (missionCriticalObject)
|
|
{
|
|
if (missionCriticalObjectId == NetworkId::cms_invalid)
|
|
{
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("removeMissionCriticalObject(): missionCriticalObject is not an obj_id"));
|
|
return JNI_FALSE;
|
|
}
|
|
|
|
if (missionCriticalObjectId != NetworkId::cms_invalid)
|
|
creatureObject->removeMissionCriticalObject(missionCriticalObjectId);
|
|
}
|
|
return JNI_TRUE;
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jboolean JNICALL ScriptMethodsShipNamespace::clearMissionCriticalObjects(JNIEnv * env, jobject /*self*/, jlong playerId)
|
|
{
|
|
CreatureObject * const creatureObject = JavaLibrary::getCreatureThrow(env, playerId, "clearMissionCriticalObjects(): playerId did not resolve to a CreatureObject", false);
|
|
if (!creatureObject)
|
|
return JNI_FALSE;
|
|
|
|
creatureObject->clearMissionCriticalObjects();
|
|
|
|
return JNI_TRUE;
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jboolean JNICALL ScriptMethodsShipNamespace::isMissionCriticalObject(JNIEnv * env, jobject /*self*/, jlong playerId, jlong ship)
|
|
{
|
|
CreatureObject * const creatureObject = JavaLibrary::getCreatureThrow(env, playerId, "isMissionCriticalObject(): playerId did not resolve to a CreatureObject", false);
|
|
if (!creatureObject)
|
|
return JNI_FALSE;
|
|
|
|
if (!ship)
|
|
{
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("isMissionCriticalObject(): playerId ship is nullptr"));
|
|
return JNI_FALSE;
|
|
}
|
|
|
|
NetworkId shipId(ship);
|
|
if (shipId == NetworkId::cms_invalid)
|
|
{
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("isMissionCriticalObject(): playerId is not an obj_id"));
|
|
return JNI_FALSE;
|
|
}
|
|
|
|
return creatureObject->isMissionCriticalObject(shipId);
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
jstring JNICALL ScriptMethodsShipNamespace::getShipComponentDebugString(JNIEnv * env, jobject /*self*/, jlong jobject_shipId, jint chassisSlot)
|
|
{
|
|
ShipObject const * const ship = JavaLibrary::getShipThrow(env, jobject_shipId, "getShipComponentDebugString(): obj_id shipId did not resolve to a ShipObject", false);
|
|
if (ship && ship->isSlotInstalled(chassisSlot))
|
|
{
|
|
ShipComponentData * const shipComponentData = ship->createShipComponentData(chassisSlot);
|
|
if (shipComponentData)
|
|
{
|
|
Unicode::String result;
|
|
shipComponentData->printDebugString(result, Unicode::emptyString);
|
|
delete shipComponentData;
|
|
if (!result.empty())
|
|
return JavaString(result).getReturnValue();
|
|
}
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jfloat JNICALL ScriptMethodsShipNamespace::getShipChassisSpeedMaximumModifier(JNIEnv * env, jobject self, jlong shipId)
|
|
{
|
|
ShipObject const * const shipObject = JavaLibrary::getShipThrow(env, shipId, "getShipChassisMaximumSpeedModifier(): shipId did not resolve to a ShipObject", false);
|
|
if (!shipObject)
|
|
return JNI_FALSE;
|
|
|
|
return shipObject->getChassisSpeedMaximumModifier();
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
void JNICALL ScriptMethodsShipNamespace::setShipChassisSpeedMaximumModifier(JNIEnv * env, jobject self, jlong shipId, jfloat value)
|
|
{
|
|
ShipObject * const shipObject = JavaLibrary::getShipThrow(env, shipId, "setShipChassisMaximumSpeedModifier(): shipId did not resolve to a ShipObject", false);
|
|
if (!shipObject)
|
|
return;
|
|
|
|
shipObject->setChassisSpeedMaximumModifier(value);
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
void JNICALL ScriptMethodsShipNamespace::notifyShipHit(JNIEnv * env, jobject self, jlong jobject_shipId, jobject jobject_vectorUp_w, jobject jobject_vectorHitLocation_o, jint type, jfloat integrity, jfloat previousIntegrity)
|
|
{
|
|
ShipObject * const shipObject = JavaLibrary::getShipThrow(env, jobject_shipId, "notifyShipHit(): shipId did not resolve to a ShipObject", false);
|
|
if (!shipObject)
|
|
return;
|
|
|
|
Vector up_w;
|
|
if (!ScriptConversion::convert(jobject_vectorUp_w, up_w))
|
|
{
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("notifyShipHit(): unable to convert up_w vector"));
|
|
return;
|
|
}
|
|
|
|
Vector hitLocation_o;
|
|
if (!ScriptConversion::convert(jobject_vectorHitLocation_o, hitLocation_o))
|
|
{
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("notifyShipHit(): unable to convert hitLocation_o vector"));
|
|
return;
|
|
}
|
|
|
|
MessageQueueShipHit * const msg = new MessageQueueShipHit(up_w, hitLocation_o, type, integrity, previousIntegrity);
|
|
shipObject->getController()->appendMessage(
|
|
CM_spaceShipHit, 0.0f, msg,
|
|
GameControllerMessageFlags::SEND |
|
|
GameControllerMessageFlags::RELIABLE |
|
|
GameControllerMessageFlags::DEST_ALL_CLIENT);
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
void JNICALL ScriptMethodsShipNamespace::setDynamicMiningAsteroidVelocity(JNIEnv * env, jobject self, jlong jobject_asteroidId, jobject jobject_velocity_w)
|
|
{
|
|
ShipObject * const shipObject = JavaLibrary::getShipThrow(env, jobject_asteroidId, "setDynamicMiningAsteroidVelocity(): shipId did not resolve to a ShipObject", false);
|
|
if (!shipObject)
|
|
return;
|
|
|
|
Vector velocity_w;
|
|
if (!ScriptConversion::convert(jobject_velocity_w, velocity_w))
|
|
{
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("setDynamicMiningAsteroidVelocity(): unable to convert velocity_w vector"));
|
|
return;
|
|
}
|
|
|
|
MiningAsteroidController * const miningAsteroidController = dynamic_cast<MiningAsteroidController * >(shipObject->getController());
|
|
if (nullptr == miningAsteroidController)
|
|
{
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("setDynamicMiningAsteroidVelocity(): called on a ship which is not a dynamic mining asteroid"));
|
|
return;
|
|
}
|
|
|
|
miningAsteroidController->setVelocity_w(velocity_w);
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jobject JNICALL ScriptMethodsShipNamespace::getDynamicMiningAsteroidVelocity(JNIEnv * env, jobject self, jlong jobject_asteroidId)
|
|
{
|
|
ShipObject * const shipObject = JavaLibrary::getShipThrow(env, jobject_asteroidId, "getDynamicMiningAsteroidVelocity(): shipId did not resolve to a ShipObject", false);
|
|
if (!shipObject)
|
|
return nullptr;
|
|
MiningAsteroidController * const miningAsteroidController = dynamic_cast<MiningAsteroidController * >(shipObject->getController());
|
|
if (nullptr == miningAsteroidController)
|
|
{
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("setDynamicMiningAsteroidVelocity(): called on a ship which is not a dynamic mining asteroid"));
|
|
return nullptr;
|
|
}
|
|
|
|
Vector const & velocity_w = miningAsteroidController->getVelocity_w();
|
|
|
|
LocalRefPtr vec;
|
|
if (!ScriptConversion::convert(velocity_w, vec))
|
|
return 0;
|
|
|
|
return vec->getReturnValue();
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
void JNICALL ScriptMethodsShipNamespace::setShipCargoHoldContentsMaximum (JNIEnv * env, jobject self, jlong jobject_shipId, jint contentsMaximum)
|
|
{
|
|
ShipObject * const shipObject = getShipThrowTestSlot(env, jobject_shipId, "setShipCargoHoldContentsMaximum()", false, static_cast<int>(ShipChassisSlotType::SCST_cargo_hold));
|
|
if (!shipObject)
|
|
return;
|
|
|
|
if (!shipObject->setCargoHoldContentsMaximum(contentsMaximum))
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::setShipCargoHoldContentsMaximum (): component at slot [%d] error", static_cast<int>(ShipChassisSlotType::SCST_cargo_hold)));
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
int JNICALL ScriptMethodsShipNamespace::getShipCargoHoldContentsMaximum (JNIEnv * env, jobject self, jlong jobject_shipId)
|
|
{
|
|
ShipObject const * const shipObject = getShipThrowTestSlot(env, jobject_shipId, "getShipCargoHoldContentsMaximum()", false, static_cast<int>(ShipChassisSlotType::SCST_cargo_hold));
|
|
if (!shipObject)
|
|
return false;
|
|
|
|
return shipObject->getCargoHoldContentsMaximum();
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
int JNICALL ScriptMethodsShipNamespace::getShipCargoHoldContentsCurrent (JNIEnv * env, jobject self, jlong jobject_shipId)
|
|
{
|
|
ShipObject const * const shipObject = getShipThrowTestSlot(env, jobject_shipId, "getShipCargoHoldContentsCurrent()", false, static_cast<int>(ShipChassisSlotType::SCST_cargo_hold));
|
|
if (!shipObject)
|
|
return false;
|
|
|
|
return shipObject->getCargoHoldContentsCurrent();
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
void JNICALL ScriptMethodsShipNamespace::setShipCargoHoldContent(JNIEnv * env, jobject self, jlong jobject_shipId, jlong jobject_resourceTypeId, jint amount)
|
|
{
|
|
ShipObject * const shipObject = getShipThrowTestSlot(env, jobject_shipId, "setShipCargoHoldContent()", false, static_cast<int>(ShipChassisSlotType::SCST_cargo_hold));
|
|
if (!shipObject)
|
|
return;
|
|
|
|
NetworkId const & resourceTypeId = NetworkId(jobject_resourceTypeId);
|
|
|
|
//-- check existence if amount != 0
|
|
|
|
shipObject->setCargoHoldContent(resourceTypeId, amount);
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jint JNICALL ScriptMethodsShipNamespace::getShipCargoHoldContent(JNIEnv * env, jobject self, jlong jobject_shipId, jlong jobject_resourceTypeId)
|
|
{
|
|
ShipObject const * const shipObject = getShipThrowTestSlot(env, jobject_shipId, "getShipCargoHoldContent()", false, static_cast<int>(ShipChassisSlotType::SCST_cargo_hold));
|
|
if (!shipObject)
|
|
return false;
|
|
|
|
NetworkId const & resourceTypeId = NetworkId(jobject_resourceTypeId);
|
|
|
|
return shipObject->getCargoHoldContent(resourceTypeId);
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jlongArray JNICALL ScriptMethodsShipNamespace::getShipCargoHoldContentsResourceTypes(JNIEnv * env, jobject self, jlong jobject_shipId)
|
|
{
|
|
ShipObject const * const shipObject = getShipThrowTestSlot(env, jobject_shipId, "getShipCargoHoldContents()", false, static_cast<int>(ShipChassisSlotType::SCST_cargo_hold));
|
|
if (!shipObject)
|
|
return nullptr;
|
|
|
|
ShipObject::NetworkIdIntMap const & contents = shipObject->getCargoHoldContents();
|
|
|
|
LocalLongArrayRefPtr jids = createNewLongArray(contents.size());
|
|
|
|
if (jids != LocalLongArrayRef::cms_nullPtr)
|
|
{
|
|
int index = 0;
|
|
for (ShipObject::NetworkIdIntMap::const_iterator it = contents.begin(); it != contents.end(); ++it, ++index)
|
|
{
|
|
jlong jlongTmp = ((*it).first).getValue();
|
|
setLongArrayRegion(*jids, index, 1, &jlongTmp);
|
|
}
|
|
return jids->getReturnValue();
|
|
}
|
|
|
|
return nullptr;
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
jintArray JNICALL ScriptMethodsShipNamespace::getShipCargoHoldContentsAmounts(JNIEnv * env, jobject self, jlong jobject_shipId)
|
|
{
|
|
ShipObject const * const shipObject = getShipThrowTestSlot(env, jobject_shipId, "getShipCargoHoldContents()", false, static_cast<int>(ShipChassisSlotType::SCST_cargo_hold));
|
|
if (!shipObject)
|
|
return nullptr;
|
|
|
|
ShipObject::NetworkIdIntMap const & contents = shipObject->getCargoHoldContents();
|
|
|
|
LocalIntArrayRefPtr jamounts = createNewIntArray(static_cast<int>(contents.size ()));
|
|
if (jamounts != LocalIntArrayRef::cms_nullPtr)
|
|
{
|
|
int index = 0;
|
|
for (ShipObject::NetworkIdIntMap::const_iterator it = contents.begin(); it != contents.end(); ++it)
|
|
{
|
|
jint amount = (*it).second;
|
|
setIntArrayRegion(*jamounts, index, 1, &amount);
|
|
}
|
|
return jamounts->getReturnValue();
|
|
}
|
|
|
|
return nullptr;
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
void JNICALL ScriptMethodsShipNamespace::openSpaceMiningUi(JNIEnv * env, jobject self, jlong jobject_player, jlong jobject_spaceStation, jstring jstring_spaceStationName)
|
|
{
|
|
NetworkId const & playerId = NetworkId(jobject_player);
|
|
NetworkId const & spaceStationId = NetworkId(jobject_spaceStation);
|
|
|
|
if (jstring_spaceStationName == nullptr)
|
|
{
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::setShipComponentName (): nullptr name"));
|
|
return;
|
|
}
|
|
|
|
JavaStringParam const jsp(jstring_spaceStationName);
|
|
std::string spaceStationName;
|
|
if (!JavaLibrary::convert(jsp, spaceStationName))
|
|
{
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("JavaLibrary::setShipComponentName (): failed to convert name string"));
|
|
return;
|
|
}
|
|
|
|
Object * const player = NetworkIdManager::getObjectById(playerId);
|
|
Controller * const controller = player ? player->getController(): nullptr;
|
|
|
|
if (!controller)
|
|
{
|
|
WARNING(true, ("JavaLibrary::openSpaceMiningUi failed, no player or controller"));
|
|
return;
|
|
}
|
|
|
|
typedef std::pair<NetworkId /*spaceStationId*/, std::string /*spaceStationName*/> MessageData;
|
|
typedef MessageQueueGenericValueType<MessageData> MessageType;
|
|
MessageType * const msg = new MessageType(MessageData(spaceStationId, spaceStationName));
|
|
|
|
controller->appendMessage(CM_spaceMiningSaleOpen, 0.0f, msg,
|
|
GameControllerMessageFlags::SEND |
|
|
GameControllerMessageFlags::RELIABLE |
|
|
GameControllerMessageFlags::DEST_AUTH_CLIENT);
|
|
}
|
|
|
|
// ======================================================================
|
|
|