示例#1
0
        public void SetupWeaponIco()
        {
            UiManager.Instance.SetWeaponMainIcon(CurrWeapon.weaponUiIcon);

            if (WeaponBag.Count > 1)
            {
                UiManager.Instance.SetWeaponSecondIcon(WeaponBag.IndexOf(CurrWeapon) == 0
                    ? WeaponBag[1].weaponUiIcon
                    : WeaponBag[0].weaponUiIcon);
            }
        }
示例#2
0
        /// <summary>
        /// 装备武器
        /// 新武器将加入背包
        /// </summary>
        /// <param name="wepRes">武器</param>
        /// <param name="newWeapon">是否为新武器</param>
        public void EquipWeapon(Weapon wepRes, bool newWeapon = true)
        {
            if (wepRes == null)
            {
                return;
            }

            if (newWeapon)
            {
                if (CurrWeapon != null)
                {
                    UnEquipWeapon(WeaponBag.Count >= MaxWeapons);
                }

                var position = weaponHolder.position;

                CurrWeapon = Instantiate(wepRes, new Vector2(position.x, position.y)
                                         + wepRes.offsetNormal, Quaternion.identity, weaponHolder);

                CurrWeapon.weaponData = wepRes.weaponData ?? CurrWeapon.GetDefaultInfo();

                // 加入背包
                WeaponBag.Add(CurrWeapon);

                SetupWeaponIco();
            }
            else
            {
                CurrWeapon = wepRes;
                wepRes.gameObject.SetActive(true);
            }

            CurrWeapon.owner = Health;
            CurrWeapon.zOrderComponent.targetSpriteRenderer = SpriteRenderer;

            if (CurrWeapon.weaponData is GunInfo info)
            {
                EventCenter.Broadcast(EventType.UpdateAmmo, info.clipCapacity,
                                      info.remainingBullet);
            }
            else
            {
                // TODO: 近身武器
            }
        }
示例#3
0
        /// <summary>
        /// 切换至下个武器
        /// </summary>
        public void NextWeapon()
        {
            if (CurrWeapon == null || WeaponBag.Count < 2)
            {
                return;
            }

            var index = WeaponBag.IndexOf(CurrWeapon);

            index++;
            if (index > WeaponBag.Count - 1)
            {
                index = 0;
            }

            UnEquipWeapon(false);
            EquipWeapon(WeaponBag[index], false);
            UiManager.Instance.SetWeaponMainIcon(WeaponBag[index].weaponUiIcon);
            UiManager.Instance.SetWeaponSecondIcon(WeaponBag[index + 1 > WeaponBag.Count - 1 ? 0 : index + 1]
                                                   .weaponUiIcon);
        }
示例#4
0
        /// <summary>
        /// 取消装备武器, 同时在地上产生同武器的 weaponPickup
        /// <param name="remove">是否删除当前武器</param>
        /// </summary>
        public void UnEquipWeapon(bool remove)
        {
            if (CurrWeapon == null)
            {
                return;
            }

            if (remove)
            {
                var position = transform.position;
                var parent   = GameObject.Find("LevelGrid").transform;
                var pickUp   = Instantiate(CurrWeapon.weaponPickup, new Vector2(position.x, position.y)
                                           + Vector2.zero, Quaternion.Euler(Vector3.zero),
                                           parent);
                pickUp.wepRes.weaponData = CurrWeapon.weaponData;

                WeaponBag.Remove(CurrWeapon);
                Destroy(CurrWeapon.gameObject);
            }
            else
            {
                CurrWeapon.gameObject.SetActive(false);
            }
        }