private void DoDrawArmWeaponWithActionFromEmpty(WeaponScanStruct destWeapon, int lastWeaponId,
                                                 WeaponDrawAppearanceStruct appearanceStruct)
 {
     WeaponToHand(destWeapon.ConfigId, lastWeaponId, appearanceStruct.targetSlot, appearanceStruct.armOnLeft);
     DoArmFinished(destWeapon, appearanceStruct.targetSlot);
     RelatedCharState.Select(RelatedAppearence.RemountP3WeaponOnRightHand, appearanceStruct.drawParam);
 }
예제 #2
0
 public void CharacterUnarm(Action holsterStartFinished, Action holsterEndFinished, float unarmParam)
 {
     logger.Info("[Tmp]Interrupt");
     RelatedCharState.InterruptAction();
     RelatedCharState.ForceFinishGrenadeThrow();
     RelatedCharState.Holster(holsterStartFinished, holsterEndFinished, unarmParam);
 }
예제 #3
0
 public void CharacterDrawInterrupt()
 {
     logger.Info("[Tmp]Interrupt");
     PlayerStateUtil.AddPlayerState(EPlayerGameState.InterruptItem, entity.gamePlay);
     RelatedCharState.InterruptAction();
     RelatedCharState.ForceFinishGrenadeThrow();
     Owner.AudioController().StopPullBoltAudio();
 }
        //有动作版移除
        private void DoDrawUnarmWeaponWithAction()
        {
            DoSpecialAppearance();
            int   heldConfigId = HeldConfigId;
            float holsterParam = WeaponUtil.GetUnArmHolsterParam(HeldSlotType);

            RelatedCharState.CharacterUnmount(() => DoHolsterStart(heldConfigId),
                                              () => DoHolsterEnd(), holsterParam);
            onWeaponSwitchEvt(this, heldConfigId, EInOrOff.Off);
        }
예제 #5
0
        //有动作版移除
        private void DoDrawUnarmWeaponWithAction(Action callback)
        {
            DoSpecialAppearance();
            int   heldConfigId = HeldConfigId;
            float holsterParam = WeaponUtil.GetUnArmHolsterParam(HeldSlotType);

            RelatedCharState.CharacterUnmount(() => RelatedAppearence.JustUnMountWeaponFromHand(),
                                              () => DoUnArmFinished(heldConfigId, callback),
                                              holsterParam);
            onWeaponSwitchEvt(this, heldConfigId, EInOrOff.Off);
        }
 /// 有动作,从旧装备上画新装备
 private void DoDrawArmWeaponWithActionFromOtherWeapon(WeaponScanStruct destWeapon, int lastWeaponId,
                                                       WeaponDrawAppearanceStruct appearanceStruct)
 {
     RelatedCharState.SwitchWeapon(() =>
     {
         WeaponToHand(destWeapon.ConfigId, lastWeaponId, appearanceStruct.targetSlot,
                      CompareUtility.IsApproximatelyEqual(appearanceStruct.drawParam,
                                                          AnimatorParametersHash.Instance.DrawLeftValue));
         onWeaponSwitchEvt(this, destWeapon.ConfigId, EInOrOff.Off);
     }, () => OnDrawWeaponCallback(destWeapon, appearanceStruct.targetSlot), appearanceStruct.switchParam);
 }
예제 #7
0
 /// 有动作,从旧装备上画新装备
 private void DoDrawArmWeaponWithActionFromOtherWeapon(WeaponScanStruct destWeapon, int lastWeaponId,
                                                       WeaponDrawAppearanceStruct appearanceStruct)
 {
     RelatedCharState.SwitchWeapon(
         () =>
     {
         WeaponToHand(destWeapon.ConfigId, lastWeaponId, appearanceStruct.targetSlot,
                      appearanceStruct.armOnLeft);
         onWeaponSwitchEvt(this, destWeapon.ConfigId, EInOrOff.Off);
     },
         () => OnDrawWeaponCallback(destWeapon, appearanceStruct.targetSlot), appearanceStruct.switchParam);
 }
예제 #8
0
 public void ThrowActionExecute()
 {
     if (!entity.hasThrowingAction)
     {
         return;
     }
     Core.WeaponLogic.Throwing.ThrowingActionInfo actionInfo = RelatedThrowAction;
     if (actionInfo.IsReady && actionInfo.IsPull)
     {
         //若已拉栓,销毁ThrowingEntity
         actionInfo.IsInterrupt = true;
     }
     //打断投掷动作
     RelatedCharState.ForceFinishGrenadeThrow();
     //清理手雷状态
     actionInfo.ClearState();
 }
        private void DoArmFinished(WeaponScanStruct weapon, EWeaponSlotType slot)
        {
            //TODO:
            logger.InfoFormat("DoArmFinished {0}", HeldSlotType);
            SetHeldSlotType(slot);



            if (weapon.Bullet <= 0)
            {
                if (SharedConfig.CurrentGameMode == EGameMode.Normal)
                {
                    //TODO 判断弹药数量是否足够,如果弹药不足,弹提示框
                    RelatedCharState.ReloadEmpty(() => { });
                }
            }
        }
예제 #10
0
        public void ThrowActionExecute()
        {
            if (!entity.hasThrowingAction)
            {
                return;
            }
            ThrowingActionData actionData = RelatedThrowAction;

            if (actionData.IsReady && actionData.IsPull)
            {
                //若已拉栓,销毁ThrowingEntity
                actionData.IsInterrupt = true;
            }

            //打断投掷动作
            RelatedCharState.ForceFinishGrenadeThrow();
            //清理手雷状态
            actionData.InternalCleanUp();
        }
예제 #11
0
 private void DoArmFinished(WeaponScanStruct weapon, EWeaponSlotType slot)
 {
     //TODO:
     SetHeldSlotType(slot);
     if (weapon.Bullet <= 0)
     {
         if (SharedConfig.CurrentGameMode == EGameMode.Normal)
         {
             //TODO 判断弹药数量是否足够,如果弹药不足,弹提示框
             RelatedCharState.ReloadEmpty(() => { });
         }
     }
     else
     {
         //if (!bag.CurBolted)
         //{
         //    //TODO 拉栓动作
         //}
     }
 }
예제 #12
0
 public void CharacterUnarm(System.Action holsterStartFinished, System.Action holsterEndFinished, float unarmParam)
 {
     RelatedCharState.InterruptAction();
     RelatedCharState.ForceFinishGrenadeThrow();
     RelatedCharState.Holster(holsterStartFinished, holsterEndFinished, unarmParam);
 }
예제 #13
0
 public void CharacterDrawInterrupt()
 {
     PlayerStateUtil.AddPlayerState(EPlayerGameState.InterruptItem, entity.gamePlay);
     RelatedCharState.InterruptAction();
     RelatedCharState.ForceFinishGrenadeThrow();
 }
예제 #14
0
 public void CharacterDraw(System.Action drawCallback, float drawParam)
 {
     RelatedCharState.Select(drawCallback, drawParam);
 }
예제 #15
0
 public void CharacterSwitchWeapon(System.Action unarmCallback, System.Action drawCallback, float switchParam)
 {
     RelatedCharState.SwitchWeapon(unarmCallback, drawCallback, switchParam);
 }
예제 #16
0
 public void CharacterUnarm(System.Action unarm, float unarmParam)
 {
     RelatedCharState.InterruptAction();
     RelatedCharState.ForceFinishGrenadeThrow();
     RelatedCharState.Unarm(unarm, unarmParam);
 }