Ejemplo n.º 1
0
    private void OnTriggerStay2D(Collider2D collision)
    {
        if (collision.tag == "Player")
        {
            if (player.itemToPickup == null)
            {
                player.itemToPickup = gameObject;
            }

            GetComponent <SpriteRenderer>().material = highlightMaterial;

            PickUpAmmo();

            player.timeSinceQPressed += Time.deltaTime;
            if (player.timeSinceQPressed > delay)
            {
                if (Input.GetKeyDown(KeyCode.Q) && player.itemToPickup == gameObject)
                {
                    if (equippedWeaponScript.name != this.name && (secondaryWeapon == null || secondaryWeapon.name != this.name)) // The player may not have two of the same weapon
                    {
                        if (hotbarScript.weaponSlot1.GetComponent <Slot>().isEmpty || hotbarScript.weaponSlot2.GetComponent <Slot>().isEmpty)
                        {
                            hotbarScript.secondaryWeaponAmmoAmount = hotbarScript.currentlyEquippedWeapon.GetComponent <Weapon>().currentAmmoAmount;
                            hotbarScript.secondaryWeaponClipSize   = hotbarScript.currentlyEquippedWeapon.GetComponent <Weapon>().clipSize;
                            hotbarScript.secondaryWeaponAmmoType   = hotbarScript.currentlyEquippedWeapon.GetComponent <Weapon>().ammoType;

                            hotbarScript.secondaryWeapon = hotbarScript.currentlyEquippedWeapon;
                            hotbarScript.secondaryWeapon.GetComponent <Weapon>().isSilenced           = hotbarScript.currentlyEquippedWeapon.GetComponent <Weapon>().isSilenced;
                            hotbarScript.secondaryWeapon.GetComponent <Weapon>().hasIncreasedClipSize = hotbarScript.currentlyEquippedWeapon.GetComponent <Weapon>().hasIncreasedClipSize;
                            hotbarScript.secondaryWeapon.GetComponent <Weapon>().clipSizeMultiplier   = hotbarScript.currentlyEquippedWeapon.GetComponent <Weapon>().clipSizeMultiplier;
                            hotbarScript.secondaryWeapon.GetComponent <Weapon>().durabilityMultiplier = hotbarScript.currentlyEquippedWeapon.GetComponent <Weapon>().durabilityMultiplier;
                        }

                        hotbarScript.EquipWeapon(weaponID);
                        hotbarScript.AddItemToInventory(weaponID);

                        foreach (GameObject weaponObject in hotbarScript.weaponObjects)
                        {
                            if (weaponObject.name == this.name)
                            {
                                weaponObject.GetComponent <WeaponPerks>().enabled = false; // We disable this script so that it doesn't run every time you pick up a new weapon
                                hotbarScript.currentlyEquippedWeapon = weaponObject;

                                hotbarScript.currentlyEquippedWeapon.GetComponent <Weapon>().clipSize             = clipSize;
                                hotbarScript.currentlyEquippedWeapon.GetComponent <Weapon>().currentAmmoAmount    = currentAmmoAmount;
                                hotbarScript.currentlyEquippedWeapon.GetComponent <Weapon>().damage               = damage;
                                hotbarScript.currentlyEquippedWeapon.GetComponent <Weapon>().fireRate             = fireRate;
                                hotbarScript.currentlyEquippedWeapon.GetComponent <Weapon>().isSilenced           = isSilenced;
                                hotbarScript.currentlyEquippedWeapon.GetComponent <Weapon>().hasIncreasedClipSize = hasIncreasedClipSize;
                                hotbarScript.currentlyEquippedWeapon.GetComponent <Weapon>().clipSizeMultiplier   = clipSizeMultiplier;
                                hotbarScript.currentlyEquippedWeapon.GetComponent <Weapon>().inaccuracyFactor     = inaccuracyFactor;
                                hotbarScript.currentlyEquippedWeapon.GetComponent <Weapon>().finalAccuracyFactor  = player.playerStats.inaccuracyFactor + inaccuracyFactor;
                                if (hotbarScript.currentlyEquippedWeapon.GetComponent <Weapon>().finalAccuracyFactor < 0)
                                {
                                    hotbarScript.currentlyEquippedWeapon.GetComponent <Weapon>().finalAccuracyFactor = 0;
                                }
                                hotbarScript.currentlyEquippedWeapon.GetComponent <Weapon>().hasAlteredDurability = hasAlteredDurability;
                                hotbarScript.currentlyEquippedWeapon.GetComponent <Weapon>().durabilityMultiplier = durabilityMultiplier;
                                hotbarScript.currentlyEquippedWeapon.GetComponent <Weapon>().durability           = durability;

                                hotbarScript.currentlyEquippedWeapon.GetComponent <Weapon>().DetermineSoundName();
                            }
                        }

                        if (hotbarScript.currentlyEquippedWeapon.name == weaponSlot1.transform.GetChild(2).name)
                        {
                            hotbarScript.currentlyEquippedWeaponSlot = 1;
                            GameObject.Find("AmmoText1").GetComponent <Text>().text = hotbarScript.currentlyEquippedWeapon.GetComponent <Weapon>().currentAmmoAmount + "/" + hotbarScript.currentlyEquippedWeapon.GetComponent <Weapon>().clipSize;
                            hotbarScript.weaponSlot1.GetComponent <Image>().color   = hotbarScript.equippedColor;
                            hotbarScript.weaponSlot2.GetComponent <Image>().color   = hotbarScript.unequippedColor;
                        }
                        else if (hotbarScript.currentlyEquippedWeapon.name == weaponSlot2.transform.GetChild(2).name)
                        {
                            hotbarScript.currentlyEquippedWeaponSlot = 2;
                            GameObject.Find("AmmoText2").GetComponent <Text>().text = hotbarScript.currentlyEquippedWeapon.GetComponent <Weapon>().currentAmmoAmount + "/" + hotbarScript.currentlyEquippedWeapon.GetComponent <Weapon>().clipSize;
                            hotbarScript.weaponSlot1.GetComponent <Image>().color   = hotbarScript.unequippedColor;
                            hotbarScript.weaponSlot2.GetComponent <Image>().color   = hotbarScript.equippedColor;
                        }

                        player.timeSinceQPressed = 0f;
                        player.itemToPickup      = null;
                        audioManager.PlaySound("Weapon Pickup");
                        Destroy(gameObject.transform.parent.gameObject);
                    }
                    else if (equippedWeaponScript.name == this.name)
                    {
                        GameObject weaponToDrop = Resources.Load("Prefabs/Items/WeaponDrops/" + equippedWeaponScript.name + " Item Drop") as GameObject;
                        hotbarScript.DropWeapon(weaponToDrop, equippedWeaponScript.currentAmmoAmount, equippedWeaponScript.clipSize, equippedWeaponScript.ammoType, equippedWeaponScript.damage,
                                                equippedWeaponScript.fireRate, equippedWeaponScript.isSilenced, equippedWeaponScript.hasIncreasedClipSize, equippedWeaponScript.clipSizeMultiplier,
                                                equippedWeaponScript.inaccuracyFactor, equippedWeaponScript.durability, equippedWeaponScript.hasAlteredDurability, equippedWeaponScript.durabilityMultiplier);

                        equippedWeaponScript.clipSize             = clipSize;
                        equippedWeaponScript.currentAmmoAmount    = currentAmmoAmount;
                        equippedWeaponScript.damage               = damage;
                        equippedWeaponScript.fireRate             = fireRate;
                        equippedWeaponScript.isSilenced           = isSilenced;
                        equippedWeaponScript.hasIncreasedClipSize = hasIncreasedClipSize;
                        equippedWeaponScript.clipSizeMultiplier   = clipSizeMultiplier;
                        equippedWeaponScript.inaccuracyFactor     = inaccuracyFactor;
                        equippedWeaponScript.finalAccuracyFactor  = player.playerStats.inaccuracyFactor + inaccuracyFactor;
                        if (equippedWeaponScript.finalAccuracyFactor < 0)
                        {
                            equippedWeaponScript.finalAccuracyFactor = 0;
                        }
                        equippedWeaponScript.hasAlteredDurability = hasAlteredDurability;
                        equippedWeaponScript.durabilityMultiplier = durabilityMultiplier;
                        equippedWeaponScript.durability           = durability;

                        player.timeSinceQPressed = 0f;
                        player.itemToPickup      = null;
                        audioManager.PlaySound("Weapon Pickup");
                        Destroy(gameObject.transform.parent.gameObject);
                    }
                    else if (secondaryWeapon != null && secondaryWeapon.name == this.name)
                    {
                        GameObject weaponToDrop = Resources.Load("Prefabs/Items/WeaponDrops/" + secondaryWeapon.name + " Item Drop") as GameObject;
                        hotbarScript.DropWeapon(weaponToDrop, secondaryWeaponScript.currentAmmoAmount, secondaryWeaponScript.clipSize, secondaryWeaponScript.ammoType, secondaryWeaponScript.damage,
                                                secondaryWeaponScript.fireRate, secondaryWeaponScript.isSilenced, secondaryWeaponScript.hasIncreasedClipSize, secondaryWeaponScript.clipSizeMultiplier,
                                                secondaryWeaponScript.inaccuracyFactor, secondaryWeaponScript.durability, secondaryWeaponScript.hasAlteredDurability, secondaryWeaponScript.durabilityMultiplier);

                        secondaryWeaponScript.clipSize             = clipSize;
                        secondaryWeaponScript.currentAmmoAmount    = currentAmmoAmount;
                        secondaryWeaponScript.damage               = damage;
                        secondaryWeaponScript.fireRate             = fireRate;
                        secondaryWeaponScript.isSilenced           = isSilenced;
                        secondaryWeaponScript.hasIncreasedClipSize = hasIncreasedClipSize;
                        secondaryWeaponScript.clipSizeMultiplier   = clipSizeMultiplier;
                        secondaryWeaponScript.inaccuracyFactor     = inaccuracyFactor;
                        secondaryWeaponScript.finalAccuracyFactor  = player.playerStats.inaccuracyFactor + inaccuracyFactor;
                        if (secondaryWeaponScript.finalAccuracyFactor < 0)
                        {
                            secondaryWeaponScript.finalAccuracyFactor = 0;
                        }
                        secondaryWeaponScript.hasAlteredDurability = hasAlteredDurability;
                        secondaryWeaponScript.durabilityMultiplier = durabilityMultiplier;
                        secondaryWeaponScript.durability           = durability;

                        player.timeSinceQPressed = 0f;
                        player.itemToPickup      = null;
                        audioManager.PlaySound("Weapon Pickup");
                        Destroy(gameObject.transform.parent.gameObject);
                    }
                }
            }
        }
    }