Files
Robii Aragon fd87a6ffd5 add ckg
plantilla base para movimiento básico
2026-02-05 05:07:55 -08:00

325 lines
8.4 KiB
C#

using UnityEngine;
using System.Collections;
public class vehicleDamageReceiver : healthManagement
{
[Space]
[Header ("Main Setting")]
[Space]
[Range (1, 10)] public float damageMultiplier = 1;
[Space]
[Header ("Components")]
[Space]
public GameObject vehicle;
public vehicleHUDManager hudManager;
//this script is added to every collider in a vehicle, so when a projectile hits the vehicle, its health component receives the damge
//like this the damage detection is really accurated.
//the function sends the amount of damage, the direction of the projectile, the position where hits, the object that fired the projectile,
//and if the damaged is done just once, like a bullet, or the damaged is constant like a laser
//health and damage management
public void setDamage (float amount, Vector3 fromDirection, Vector3 damagePos, GameObject bulletOwner, GameObject projectile,
bool damageConstant, bool searchClosestWeakSpot, bool damageCanBeBlocked)
{
hudManager.setDamage (amount * damageMultiplier, fromDirection, damagePos, bulletOwner, projectile, damageConstant,
searchClosestWeakSpot, damageCanBeBlocked);
if (useHealthAmountOnSpot) {
checkHealthAmountOnSpot (amount * damageMultiplier);
}
}
public void setHeal (float amount)
{
hudManager.getHealth (amount);
}
public override float getCurrentHealthAmount ()
{
return hudManager.getCurrentHealthAmount ();
}
public float getMaxHealthAmount ()
{
return hudManager.getMaxHealthAmount ();
}
public float getAuxHealthAmount ()
{
return hudManager.getAuxHealthAmount ();
}
public void addAuxHealthAmount (float amount)
{
hudManager.addAuxHealthAmount (amount);
}
//fuel management
public float getCurrentFuelAmount ()
{
return hudManager.getCurrentFuelAmount ();
}
public float getMaxFuelAmount ()
{
return hudManager.getMaxFuelAmount ();
}
public void getFuel (float amount)
{
hudManager.getFuel (amount);
}
public void removeFuel (float amount)
{
hudManager.removeFuel (amount);
}
//destroy vehicle
public void destroyVehicle ()
{
hudManager.destroyVehicle ();
}
//impact decal management
public int getDecalImpactIndex ()
{
return hudManager.getDecalImpactIndex ();
}
//energy management
public void getEnergy (float amount)
{
hudManager.getEnergy (amount);
}
public void removeEnergy (float amount)
{
hudManager.removeEnergy (amount);
}
public float getCurrentEnergyAmount ()
{
return hudManager.getCurrentEnergyAmount ();
}
public float getMaxEnergyAmount ()
{
return hudManager.getMaxEnergyAmount ();
}
public float getAuxEnergyAmount ()
{
return hudManager.getAuxEnergyAmount ();
}
public void addAuxEnergyAmount (float amount)
{
hudManager.addAuxEnergyAmount (amount);
}
public bool isVehicleDestroyed ()
{
return hudManager.destroyed;
}
public void ignoreCollisionWithSolidVehicleColliderList (Collider colliderToIgnore, bool state)
{
hudManager.ignoreCollisionWithSolidVehicleColliderList (colliderToIgnore, state);
}
//set vehicle component
public void setVehicle (GameObject vehicleGameObject, vehicleHUDManager currentVehicleHUDManager)
{
vehicle = vehicleGameObject;
hudManager = currentVehicleHUDManager;
updateComponent ();
}
public void setDamageTargetOverTimeState (float damageOverTimeDelay, float damageOverTimeDuration, float damageOverTimeAmount, float damageOverTimeRate, bool damageOverTimeToDeath, int damageTypeID)
{
hudManager.setDamageTargetOverTimeState (damageOverTimeDelay, damageOverTimeDuration, damageOverTimeAmount, damageOverTimeRate, damageOverTimeToDeath, damageTypeID);
}
public void removeDamagetTargetOverTimeState ()
{
hudManager.stopDamageOverTime ();
}
public vehicleHUDManager getHUDManager ()
{
return hudManager;
}
//Override functions from Health Management
public override void setDamageWithHealthManagement (float damageAmount, Vector3 fromDirection, Vector3 damagePos, GameObject attacker,
GameObject projectile, bool damageConstant, bool searchClosestWeakSpot, bool ignoreShield,
bool ignoreDamageInScreen, bool damageCanBeBlocked, bool canActivateReactionSystemTemporally,
int damageReactionID, int damageTypeID)
{
hudManager.setDamage ((damageAmount * damageMultiplier), fromDirection, damagePos, attacker, projectile, damageConstant,
searchClosestWeakSpot, damageCanBeBlocked);
if (useHealthAmountOnSpot) {
checkHealthAmountOnSpot (damageAmount * damageMultiplier);
}
}
public override bool checkIfDeadWithHealthManagement ()
{
return hudManager.vehicleIsDestroyed ();
}
public override bool checkIfMaxHealthWithHealthManagement ()
{
return hudManager.checkIfMaxHealth ();
}
public override void setDamageTargetOverTimeStateWithHealthManagement (float damageOverTimeDelay, float damageOverTimeDuration, float damageOverTimeAmount,
float damageOverTimeRate, bool damageOverTimeToDeath, int damageTypeID)
{
hudManager.setDamageTargetOverTimeState (damageOverTimeDelay, damageOverTimeDuration, damageOverTimeAmount, damageOverTimeRate, damageOverTimeToDeath, damageTypeID);
}
public override void removeDamagetTargetOverTimeStateWithHealthManagement ()
{
hudManager.stopDamageOverTime ();
}
public override void setHealWithHealthManagement (float healAmount)
{
hudManager.getHealth (healAmount);
}
public override float getCurrentHealthAmountWithHealthManagement ()
{
return hudManager.getCurrentHealthAmount ();
}
public override float getMaxHealthAmountWithHealthManagement ()
{
return hudManager.getMaxHealthAmount ();
}
public override float getAuxHealthAmountWithHealthManagement ()
{
return hudManager.getAuxHealthAmount ();
}
public override void addAuxHealthAmountWithHealthManagement (float amount)
{
hudManager.addAuxHealthAmount (amount);
}
public override float getHealthAmountToPickWithHealthManagement (float amount)
{
return hudManager.getHealthAmountToPick (amount);
}
public override void killCharacterWithHealthManagement (GameObject projectile, Vector3 direction, Vector3 position, GameObject attacker, bool damageConstant)
{
hudManager.destroyVehicle ();
}
public override void killCharacterWithHealthManagement ()
{
hudManager.destroyVehicle ();
}
public override Transform getPlaceToShootWithHealthManagement ()
{
return hudManager.getPlaceToShoot ();
}
public override GameObject getPlaceToShootGameObjectWithHealthManagement ()
{
return hudManager.getPlaceToShoot ().gameObject;
}
public override bool isVehicleWithHealthManagement ()
{
return hudManager.isVehicleWithHealthManagement ();
}
public override GameObject getCharacterOrVehicleWithHealthManagement ()
{
return vehicle;
}
public override void setFuelWithHealthManagement (float fuelAmount)
{
hudManager.getFuel (fuelAmount);
}
public override void removeFuelWithHealthManagement (float fuelAmount)
{
hudManager.removeFuel (fuelAmount);
}
public override float getCurrentFuelAmountWithHealthManagement ()
{
return hudManager.getCurrentFuelAmount ();
}
public override bool checkIfMaxFuelWithHealthManagement ()
{
return hudManager.checkIfMaxFuel ();
}
public override GameObject getVehicleWithHealthManagement ()
{
return vehicle;
}
public override vehicleHUDManager getVehicleHUDManagerWithHealthManagement ()
{
return hudManager;
}
public override GameObject getVehicleDriverWithHealthManagement ()
{
return hudManager.getCurrentDriver ();
}
public override void setEnergyWithHealthManagement (float amount)
{
hudManager.getEnergy (amount);
}
public override void removeEnergyWithHealthManagement (float amount)
{
hudManager.removeEnergy (amount);
}
public override float getCurrentEnergyAmountWithHealthManagement ()
{
return hudManager.getCurrentEnergyAmount ();
}
public override bool checkIfMaxEnergyWithHealthManagement ()
{
return hudManager.checkIfMaxEnergy ();
}
public override int getDecalImpactIndexWithHealthManagement ()
{
return hudManager.getDecalImpactIndex ();
}
public override bool isUseImpactSurfaceActiveWithHealthManagement ()
{
return hudManager.isUseImpactSurfaceActive ();
}
public void updateComponent ()
{
GKC_Utils.updateComponent (this);
GKC_Utils.updateDirtyScene ("Update Damage Receiver", gameObject);
}
}