/// <summary> /// Equips the set weapon and sets its durability. Durability is a value from 0-1. /// </summary> public void EquipWeapon(Weapon weapon, int slotIndex, float durability = 1f, bool dropWeapon = true) { if (dropWeapon && loadout[slotIndex] != null && loadout[slotIndex].weaponDropPickup != null) { PickupInteractable spawnedPickup = GameManager.Instance.SpawnPickup( loadout[slotIndex].weaponDropPickup, transform.position ); if (spawnedPickup.instancePickupData is InstanceWeaponPickupData instanceWeaponPickupData) { instanceWeaponPickupData.durability = GetDurabilityPercentageOfWeapon(slotIndex); } } loadout[slotIndex] = weapon; this.durability[slotIndex] = weapon != null?Mathf.Clamp01(durability) * weapon.durability : 0; if (weapon == null) { return; } currentClipSize = weapon.clipSize; }
public PickupInteractable SpawnPickup(Pickup pickup, Vector2 pos) { if (pickup != null) { PickupInteractable pickupInteractable = Instantiate(gameData.pickupPrefab, pos, Quaternion.identity); pickupInteractable.pickupData = pickup; pickupInteractable.SetIcon(pickup.icon, pickup.iconColor); return(pickupInteractable); } return(null); }
private void OnTriggerEnter2D(Collider2D collision) { if (collision.gameObject.CompareTag(PICKUP_TAG)) { PickupInteractable pickup = collision.GetComponent <PickupInteractable>(); bool didPickup = pickup.Interact(gameObject); if (didPickup) { GameManager.Instance.UIManager.PromptIfEmpty(1, MK.UI.TransitionPreset.ScaleIn, pickup.iconRenderer.sprite, pickup.pickupData.pickupName); AudioManager.PlayOneShot( GameManager.Instance.AudioData.pickupAudio, transform.position, GameManager.Instance.AudioData.pickupAudioVolume, GameManager.Instance.AudioData.audioSpatialBlend ); } } }