DIFF

motorbike_02.c

class Motorbike_02_ColorBase : MotorbikeScript
{
	void Motorbike_02_ColorBase()
	{
		m_VehicleContactDamageCoef = 0.035;
		m_CrewContactDamageCoef = 0.012;
		
		m_EngineStarting 		= "";
		m_EngineStartOK 		= "Motorbike_02_engine_start_SoundSet";
		m_EngineStartBattery 	= "";
		m_EngineStartPlug 		= "";
		m_EngineStartFuel 		= "Motorbike_02_engine_failed_start_fuel_SoundSet";
		m_EngineStop	 		= "Motorbike_02_engine_stop_SoundSet";
		m_EngineStopFuel 		= "Motorbike_02_engine_stop_fuel_SoundSet";
		

		m_LightsComponent.RegisterLight("Front", new VehicleLightData(new Motorbike_02LightProfileFront()));
		m_LightsComponent.RegisterLight("Rear", new VehicleLightData(new Motorbike_02LightProfileRear()));
		
		m_LightsComponent.RegisterSelection("BrakeOn",	{new VehicleLightSelectionData(2, "brakeReflectorMatOn")});
		m_LightsComponent.RegisterSelection("BrakeOff",	{new VehicleLightSelectionData(2, "brakeReflectorMatOff")});

		m_HornComponent.RegisterSound(VehicleHornMode.SHORT, 	"Motorbike_02_Horn_Short_SoundSet");
		m_HornComponent.RegisterSound(VehicleHornMode.LONG, 	"Motorbike_02_Horn_SoundSet");

		SetEnginePos("0 0.5 -0.08");
	}
	
	override bool HasGangedTailAndBrakeLights()
	{
		return true;
	}

	override bool NeedElectricitySourceDevice()
	{
		return false;
	}

	override float GetTransportCameraDistance()
	{
		return 3.0;
	}
	
	override vector GetTransportCameraOffset()
	{
		return "0 1.4 -0.3";
	}
	
	override int GetAnimInstance()
	{
		return VehicleAnimInstances.MOTO2;
	}
	
	override bool HasDirectionalInOutAction()
	{
		return true;
	}
	
	override int GetSeatAnimationTypeDirectional(int posIdx, int directionIndex)
	{
		if (posIdx == 0)
		{
			if (directionIndex == 0)
				return 0;
			else
				return 1;
		}
		
		return 0;
	}
	
	override bool IsVitalGlowPlug()
	{
		return false;
	}
	
	override float GetWeightCoef()
	{
		return 0.75;
	}
	
	override protected void HandleHeatComfortOverrides(string slotName, notnull EntityAI item, bool detach = false)
	{
		MotorbikePart part = MotorbikePart.Cast(item);
		if (part)
		{		
			float addOrRemove = 1;
			if (detach)
				addOrRemove = -1;

			switch (slotName)
			{
				case "Motorbike_02_ShieldFront":
				case "Motorbike_02_ShieldLeft":
				case "Motorbike_02_ShieldRight":
					m_HeatComfortOverride += part.GetHeatComfortOverride() * addOrRemove;
					break;
			}
		}
		
		#ifdef DIAG_DEVELOPER
		if (m_HeatComfortOverride > GameConstants.ENVIRO_HEATCOMFORT_MOTORBIKE_TARGET_MAX)
			ErrorEx("m_HeatComfortOverride value is higher than GameConstants.ENVIRO_HEATCOMFORT_MOTORBIKE_TARGET_MAX, check config");
		#endif
		
		m_HeatComfortOverride = Math.Clamp(m_HeatComfortOverride, 0.0, GameConstants.ENVIRO_HEATCOMFORT_MOTORBIKE_TARGET_MAX);
	}
	
	// --------------------------------------------------------------------------------
	
	override protected void PlayCrashLightSound()
	{
		PlaySoundEx("Motorbike_02_hit_character_SoundSet", m_CrashSoundLight, m_PlayCrashSoundLight);
	}

	// --------------------------------------------------------------------------------

	override protected void PlayCrashHeavySound()
	{
		PlaySoundEx("Motorbike_02_hit_heavy_SoundSet", m_CrashSoundHeavy, m_PlayCrashSoundHeavy);
	}
	
	// --------------------------------------------------------------------------------
	
	override void OnDebugSpawn()
	{
		SpawnUniversalParts();

		float amount = GetFluidCapacity(MotorbikeFluid.FUEL);
		Fill(MotorbikeFluid.FUEL, amount);

		//-----ATTACHMENTS
		GetInventory().CreateInInventory("Motorbike_02_Wheel_1");
		GetInventory().CreateInInventory("Motorbike_02_Wheel_2");
		
		GetInventory().CreateInInventory("Motorbike_02_ShieldFront_Red");
		GetInventory().CreateInInventory("Motorbike_02_ShieldLeft_Red");
		GetInventory().CreateInInventory("Motorbike_02_ShieldRight_Red");
	}
}

class Motorbike_02_Red : Motorbike_02_ColorBase {};