//Activates a weapon and throws it to the ground public void DropRangedWeapon(RangedWeapon_Class rangedWeaponToDrop) { //RangedWeapons[EquippedRangedWeaponIndex].Refresh(); if (RangedWeapons[EquippedRangedWeaponIndex] != null) { RangedWeapons[EquippedRangedWeaponIndex] = null; } rangedWeaponToDrop.transform.position = ItemDropPosition.position; rangedWeaponToDrop.transform.rotation = ItemDropPosition.rotation; rangedWeaponToDrop.transform.parent = null; Rigidbody tempRB = rangedWeaponToDrop.gameObject.GetComponent <Rigidbody>(); if (tempRB == null) { rangedWeaponToDrop.gameObject.AddComponent <Rigidbody>(); } Rigidbody weaponToDrop = rangedWeaponToDrop.GetComponent <Rigidbody>(); weaponToDrop.AddForce(weaponToDrop.transform.forward * WeaponDropForce); if (rangedWeaponToDrop.currentAmmo == 0 && rangedWeaponToDrop.reserveAmmo == 0) { Destroy(rangedWeaponToDrop.gameObject); } if (rangedWeaponToDrop != null) { rangedWeaponToDrop.TurnOnInteraction(); } }
//Activates the weapon we want and deactivates the rest public void SelectWeaponToEquip() { EquippedRangedWeaponScipt = null; int i = 0; foreach (RangedWeapon_Class weapon in RangedWeapons) { if (weapon != null) { weapon.TurnOffInteraction(); if (i == EquippedRangedWeaponIndex) { weapon.gameObject.SetActive(true); EquippedRangedWeaponScipt = weapon; EquippedRangedWeaponScipt.Refresh(); } else { weapon.gameObject.SetActive(false); } } i++; } if (RangedWeapons[EquippedRangedWeaponIndex] == null) { EquippedRangedWeaponScipt = null; } }
void Start() { EquippedRangedWeapon = GetComponentInChildren<RangedWeapon_Class>(); EquippedRangedWeapon.TurnOffInteraction(); StartCoroutine(DetectAllEnemies()); StartCoroutine(DetectAllLOSEnemies()); StartCoroutine(DetectBestTarget()); StartCoroutine(Aim()); StartCoroutine(ShootAt()); }
public void SwapWeapon(MasterInventory_Class inventory) { RangedWeapon_Class WeaponToGive = EquippedRangedWeapon; RangedWeapon_Class WeaponToTake = inventory.EquippedRangedWeaponScipt; int x = 0; foreach (RangedWeapon_Class w in inventory.RangedWeapons) { if (w != null) { if (WeaponToGive.weaponName == w.weaponName) { x++; } } } if (x > 0) { Debug.Log("hit case 1"); //Do nothing //Make this destroy the weapon we dont want anymore later. } else { Debug.Log("hit case 2"); //give old weapon to the player //move to position //equip new weapon //move to posiiton inventory.DropRangedWeapon(WeaponToTake); WeaponToGive.MoveToPosition(inventory.RangedWeaponPosition); inventory.EquipNewRangedWeapon(WeaponToGive); WeaponToTake.gameObject.SetActive(true); WeaponToTake.MoveToPosition(GunPosition); Debug.Log("Moved Weapon to correct spot"); EquippedRangedWeapon = WeaponToTake; Debug.Log("Replaced old weapon"); EquippedRangedWeapon.TurnOffInteraction(); } }
public void DropEverything() { foreach (RangedWeapon_Class x in RangedWeapons) { if (x != null) { //RangedWeapons[EquippedRangedWeaponIndex].Refresh(); //RangedWeapons[EquippedRangedWeaponIndex] = null; x.gameObject.SetActive(true); x.transform.position = ItemDropPosition.position; x.transform.rotation = ItemDropPosition.rotation; x.transform.parent = null; x.gameObject.AddComponent <Rigidbody>(); Rigidbody weaponToDrop = x.GetComponent <Rigidbody>(); weaponToDrop.AddForce(weaponToDrop.transform.forward * WeaponDropForce); if (x.currentAmmo == 0 && x.reserveAmmo == 0) { Destroy(x.gameObject); } if (x != null) { x.TurnOnInteraction(); } } } for (int i = 0; i < RangedWeapons.Count; i++) { RangedWeapons[i] = null; } if (EquippedRangedWeaponScipt != null) { DropRangedWeapon(EquippedRangedWeaponScipt); } EquippedRangedWeaponScipt = null; EquippedRangedWeaponIndex = 0; if (EquippedThrowableScript != null) { DropThrowable(EquippedThrowableScript); EquippedThrowableScript = null; } }
//Allows a new weapon to enter the inventory, if the inventory is full, a weapon is dropped public void EquipNewRangedWeapon(RangedWeapon_Class WeaponToPickUp) { readyToEquip = false; int WeaponCount = 0; RangedWeapon_Class DuplicateWeaponAlreadyHeld = null; int WeaponSlotToFill = 0; foreach (RangedWeapon_Class i in RangedWeapons) { if (i != null && i.weaponName == WeaponToPickUp.weaponName) { DuplicateWeaponAlreadyHeld = i; } } if (DuplicateWeaponAlreadyHeld != null && DuplicateWeaponAlreadyHeld != WeaponToPickUp) { DuplicateWeaponAlreadyHeld.AddAmmo(WeaponToPickUp.currentAmmo + WeaponToPickUp.reserveAmmo); Destroy(WeaponToPickUp.gameObject); StartCoroutine(EquipCoolDown()); } else { foreach (RangedWeapon_Class i in RangedWeapons) { if (i != null) { WeaponCount++; } } if (WeaponCount == RangedWeapons.Count) { DropRangedWeapon(EquippedRangedWeaponScipt); } foreach (RangedWeapon_Class weapon in RangedWeapons) { if (weapon == null) { WeaponSlotToFill = RangedWeapons.IndexOf(weapon); } } //WeaponToPickUp.MoveToPosition(RangedWeaponPosition); RangedWeapons[WeaponSlotToFill] = WeaponToPickUp; EquippedRangedWeaponScipt = WeaponToPickUp; //EquippedRangedWeaponScipt.transform.localScale = new Vector3 (1,1,1); //EquippedRangedWeaponIndex = RangedWeapons.IndexOf(EquippedRangedWeaponScipt); SelectWeaponToEquip(); StartCoroutine(EquipCoolDown()); } }
//Fires the weapon public void Shoot(RangedWeapon_Class Weapon) { Weapon.Fire(); }