/// <summary>
    /// Faz a troca de armas.
    /// </summary>
    private void SwitchWeapons()
    {
        float mouseAxis     = Input.GetAxisRaw("Mouse ScrollWheel");
        int   weaponsAmount = this.weapons.listWeapons.Count - 1;

        #region Scroll
        if (mouseAxis > 0)
        {
            if (this.indexWeapon == (byte)weaponsAmount)
            {
                this.indexWeapon = 0;
            }
            else
            {
                this.indexWeapon++;
            }
        }
        else if (mouseAxis < 0)
        {
            this.indexWeapon--;
        }
        #endregion

        this.indexWeapon = (byte)Mathf.Clamp(this.indexWeapon, 0, (byte)weaponsAmount);
        SOWeapon weapon = this.weapons.listWeapons[indexWeapon].weapon;

        this.sShoot.SetWeaponValues(weapon, this.superBagBullet, this.indexWeapon);
    }
    private void Start()
    {
        this.indexWeapon = 0; // Por default a arma utilizada é 0.
        SOWeapon weapon = this.weapons.listWeapons[indexWeapon].weapon;

        this.CreateWeapon();
        this.sShoot.SetWeaponValues(weapon, this.superBagBullet, this.indexWeapon);
    }
 /// <summary>
 /// Cria todas as armas.
 /// </summary>
 private void CreateWeapon()
 {
     //Cria todas as armas dentro da lista.
     for (byte i = 0; i < this.weapons.listWeapons.Count; i++)
     {
         SOWeapon weapon = this.weapons.listWeapons[i].weapon;
         this.sShoot.InstantiateBullet(weapon, superBagBullet, i);
     }
 }
    /// <summary>
    /// Instancia todas as balas.
    /// </summary>
    /// <param name="weapon">Arma dentro da lista de armas.</param>
    /// <param name="superBagBullet">Transform onde são guardados TODAS as MOCHILAS.</param>
    /// <param name="indexWeapon">Índice da arma dentro da lista</param>
    public void InstantiateBullet(SOWeapon weapon, Transform superBagBullet, byte indexWeapon)
    {
        this.CreateBag(weapon.name, superBagBullet);                          // Criando e afiliando a mochila em superBagBullet.
        Transform bagBullet = superBagBullet.GetChild(indexWeapon).transform; // índice da mochila criada.

        for (byte i = 0; i < weapon.bulletAmount; i++)
        {
            this.CreateBullet(weapon, bagBullet); // Instanciando e afiliando as balas a mochila.
        }
    }
    /// <summary>
    /// Recebe os valores da arma atual.
    /// </summary>
    /// <param name="weapon">Informações do SOWeapon.</param>
    /// <param name="bulletObj">Prefab instanciada da SOWeapon.</param>
    public void GetBulletValues(SOWeapon weapon, GameObject bulletObj)
    {
        Bullet bullet = bulletObj.GetComponent <Bullet>();

        if (bullet)
        {
            bullet.infoData = weapon.bullet;
        }
        else
        {
            Debug.Assert(bullet, "Componente Bullet não adicionado na bala.");
        }
    }
Beispiel #6
0
    /// <summary>
    /// Cria as balas.
    /// </summary>
    /// <param name="weapon">Informações do SOWeapon.</param>
    /// <param name="bagBullet">Transform onde são guardado TODAS as BALAS.</param>
    public void CreateBullet(SOWeapon weapon, Transform bagBullet)
    {
        GameObject bulletObj = Instantiate(weapon.bullet.prefab, bagBullet);
        Bullet     bullet    = bulletObj.GetComponent <Bullet>();

        bulletObj.name = weapon.bullet.prefab.name;

        if (bullet == null)
        {
            bulletObj.AddComponent(typeof(Bullet));
        }

        this.GetBulletValues(weapon, bulletObj);
    }
    /// <summary>
    /// Recebe os valores da arma atual selecionada.
    /// </summary>
    /// <param name="weapon">Informações do SOWeapon.</param>
    /// <param name="bagBullet">Transform (superBagBullet) onde está guardada TODAS as balas.</param>
    private void GetWeaponValues(SOWeapon weapon, Transform bagBullet)
    {
        this.currentWeapon = weapon;
        this.bagBullet     = bagBullet;

        MeshRenderer[] meshRend = this.bagBullet.transform.GetComponentsInChildren <MeshRenderer>();

        if (meshRend != null)
        {
            foreach (MeshRenderer rend in meshRend)
            {
                rend.material.color = weapon.bullet.materialColor;
            }
        }
    }
    public bool TryAddWeapon(SOWeapon weaponToAdd)
    {
        if (allWeaponsInPossessionInfo.Count == weaponSlotsInUI.Length)
        {
            return(false);
        }
        else
        {
            WeaponInfo newWeaponInfo = new WeaponInfo();
            newWeaponInfo.SOweapon    = weaponToAdd;
            newWeaponInfo.bulletsLeft = weaponToAdd.magSize;
            allWeaponsInPossessionInfo.Add(newWeaponInfo);
            weaponSlotsInUI[allWeaponsInPossessionInfo.Count - 1].weaponImage.sprite = weaponToAdd.bulletPrefab.GetComponent <SpriteRenderer>().sprite;

            weaponSlotsInUI[allWeaponsInPossessionInfo.Count - 1].bulletsText.gameObject.SetActive(true);
            weaponSlotsInUI[allWeaponsInPossessionInfo.Count - 1].bulletsText.text = newWeaponInfo.bulletsLeft + "/" + newWeaponInfo.SOweapon.magSize;
            return(true);
        }
    }
    /// <summary>
    /// Define os valores para a arma atual.
    /// </summary>
    /// <param name="indexWeapon">Índice da lista de armas.</param>
    public void SetWeaponValues(SOWeapon weapon, Transform superBagBullet, byte indexWeapon)
    {
        Transform bagBullet = superBagBullet.GetChild(indexWeapon).transform;

        this.GetWeaponValues(weapon, bagBullet);
    }