Beispiel #1
0
        public void UnArmHeldWeapon(Action onfinish)
        {
            WeaponScanStruct weaponInfo = HeldWeaponAgent.ComponentScan;

            AppearanceSpecific();
            float holsterParam = WeaponUtil.GetHolsterParam(HeldSlotType);

            RelatedStateInterface.CharacterUnmount(() => OnUnArmWeaponCallback(weaponInfo.ConfigId, onfinish), holsterParam);
        }
Beispiel #2
0
        public void DrawWeapon(EWeaponSlotType slot, bool includeAction = true)
        {
            if (HeldSlotType == slot)
            {
                return;
            }
            WeaponScanStruct lastWeapon = HeldWeaponAgent.ComponentScan;

            if (!GetWeaponAgent(slot).IsValid())
            {
                return;
            }
            var destWeapon = GetWeaponAgent(slot).ComponentScan;

            AppearanceSpecific();
            DoDrawInterrupt();
            bool  armOnLeft    = slot == EWeaponSlotType.SecondaryWeapon;
            float holsterParam = WeaponUtil.GetHolsterParam(HeldSlotType == EWeaponSlotType.SecondaryWeapon);
            float drawParam    = armOnLeft ? AnimatorParametersHash.Instance.DrawLeftValue : AnimatorParametersHash.Instance.DrawRightValue;

            if (includeAction)
            {
                float switchParam = holsterParam * 10 + drawParam;
                if (lastWeapon.IsSafeVailed)
                {
                    RelatedStateInterface.SwitchWeapon(() => WeaponToHand(destWeapon.ConfigId, lastWeapon.ConfigId, slot, armOnLeft),
                                                       () => OnDrawWeaponCallback(destWeapon, slot), switchParam);
                }
                else
                {
                    WeaponToHand(destWeapon.ConfigId, lastWeapon.ConfigId, slot, armOnLeft);
                    OnSlotArmFinish(destWeapon, slot);
                    RelatedStateInterface.Draw(RelatedAppearence.RemountP3WeaponOnRightHand, drawParam);
                }
            }
            else
            {
                //CharacterState控制动作相关
                WeaponToHand(destWeapon.ConfigId, lastWeapon.ConfigId, slot, armOnLeft);
                OnDrawWeaponCallback(destWeapon, slot);
                OnSlotArmFinish(destWeapon, slot);
                RelatedAppearence.RemountP3WeaponOnRightHand();
            }
        }
Beispiel #3
0
 private void OnSlotArmFinish(WeaponScanStruct weapon, EWeaponSlotType slot)
 {
     //TODO:
     SetHeldSlotTypeProcess(slot);
     if (weapon.Bullet <= 0)
     {
         if (SharedConfig.CurrentGameMode == EGameMode.Normal)
         {
             //TODO 判断弹药数量是否足够,如果弹药不足,弹提示框
             RelatedStateInterface.ReloadEmpty(() => { });
         }
     }
     else
     {
         //if (!bag.CurBolted)
         //{
         //    //TODO 拉栓动作
         //}
     }
 }