public EWeaponSlotType UnArmWeapon(bool includeAction, bool needInterrupt = false) { if (IsHeldSlotEmpty) { return(EWeaponSlotType.None); } AudioController.StopPullBoltAudio(); RelatedThrowAction.CleanThrowingState(); HeldWeaponAgent.InterruptPullBolt(); var holdSlot = HeldSlotType; if (needInterrupt) { DoAppearanceInterrupt(); } if (includeAction) { DoDrawUnarmWeaponWithAction(); } else { DoDrawUnarmWeaponWithoutAction(HeldConfigId); } return(holdSlot); }
public void ArmWeapon(EWeaponSlotType slot, bool includeAction) { slot = processHelper.GetRealSlotType(slot); if (!processHelper.FilterSameSpecies(slot) || !processHelper.FilterSlotValied(slot)) { return; } //把当前的一些枪械状态重置掉 HeldWeaponAgent.InterruptPullBolt(); var lastWeapon = HeldConfigId; var destWeapon = GetWeaponAgent(slot).ComponentScan; var appearanceStruct = processHelper.GetDrawAppearanceStruct(slot); DoSpecialAppearance(); DoAppearanceInterrupt(); if (includeAction) { if (IsHeldSlotEmpty) { DoDrawArmWeaponWithActionFromEmpty(destWeapon, lastWeapon, appearanceStruct); } else { DoDrawArmWeaponWithActionFromOtherWeapon(destWeapon, lastWeapon, appearanceStruct); } } else { //CharacterState控制动作相关 DoDrawArmWeaponWithoutAction(destWeapon, lastWeapon, appearanceStruct); } onWeaponSwitchEvt(this, HeldConfigId, EInOrOff.In); }
public void AfterAttack() { if (HeldSlotType == EWeaponSlotType.None || IsHeldSlotEmpty) { return; } //var handler = slotsAux.FindHandler(slot); int reservedBullet = GetReservedBullet(); HeldWeaponAgent.ExpendWeapon(reservedBullet); onWeaponExpendEvt(this, HeldSlotType); }
private void AutoStuffHeldWeapon() { var lastSlotType = HeldSlotType; var nextId = HeldWeaponAgent.FindNextWeapon(true); //消耗掉当前武器 DestroyWeapon(HeldSlotType, -1, false); //自动填充下一项武器 if (lastSlotType == EWeaponSlotType.ThrowingWeapon) { TryHoldGrenade(); } RefreshWeaponAppearance(); }
public void ExpendAfterAttack() { if (HeldSlotType == EWeaponSlotType.None || IsHeldSlotEmpty) { return; } PlayFireAudio(); //var handler = slotsAux.FindHandler(slot); bool destroyAndStuffNew = HeldWeaponAgent.ExpendWeapon(); if (destroyAndStuffNew) { AutoStuffHeldWeapon(); } if (onWeaponExpendEvt != null) { onWeaponExpendEvt(this, HeldSlotType); } }
public void InternalUpdate(PlayerEntity player) { if (!HeldWeaponAgent.IsValid()) { if (HeldSlotType != EWeaponSlotType.None) { SetHeldSlotType(EWeaponSlotType.None); } } switch (RelatedServerUpdate.EUpdateCmdType) { case EWeaponUpdateCmdType.UpdateHoldAppearance: logger.Info("WeaponUpdate.UpdateHeldAppearance Come in "); RelatedServerUpdate.UpdateCmdType = 0; //率先刷新手雷物品 TryHoldGrenade(true, false); RefreshWeaponAppearance(EWeaponSlotType.ThrowingWeapon); EWeaponSlotType newSlot = PollGetLastSlotType(); if (newSlot == HeldSlotType) { RefreshWeaponAppearance(); } else { if (player.playerInfo.JobAttribute == (int)EJobAttribute.EJob_EveryMan) { TryArmWeaponImmediately(newSlot); } } break; case EWeaponUpdateCmdType.ExchangePrimaryAppearance: RelatedServerUpdate.UpdateCmdType = 0; RefreshWeaponAppearance(EWeaponSlotType.PrimeWeapon); RefreshWeaponAppearance(EWeaponSlotType.SecondaryWeapon); break; default: break; } }
public EWeaponSlotType UnArmWeapon(bool includeAction, Action callback) { if (IsHeldSlotEmpty) { return(EWeaponSlotType.None); } HeldWeaponAgent.StoreDynamic(); var holdSlot = HeldSlotType; if (includeAction) { DoDrawUnarmWeaponWithAction(callback); } else { DoDrawUnarmWeaponWithoutAction(null, callback); } return(holdSlot); }
public void InternalUpdate() { GrenadeHandler.Rewind(); if (!HeldWeaponAgent.IsValid()) { if (HeldSlotType != EWeaponSlotType.None) { SetHeldSlotType(EWeaponSlotType.None); logger.InfoFormat("Do internal {0}", HeldSlotType); } } switch ((EWeaponUpdateCmdType)RelatedServerUpdate.UpdateCmdType) { case EWeaponUpdateCmdType.UpdateHoldAppearance: logger.Info("WeaponUpdate.UpdateHeldAppearance Come in "); RelatedServerUpdate.UpdateCmdType = 0; TryHoldGrenade(true, false); //率先刷新手雷物品 RefreshWeaponAppearance(EWeaponSlotType.ThrowingWeapon); EWeaponSlotType newSlot = PollGetLastSlotType(); if (newSlot == HeldSlotType) { RefreshWeaponAppearance(); } else { if (RelatedGamePlay.JobAttribute == (int)EJobAttribute.EJob_EveryMan) { TryArmWeaponImmediately(newSlot); } } break; case EWeaponUpdateCmdType.ExchangePrimaryAppearance: RelatedServerUpdate.UpdateCmdType = 0; RefreshWeaponAppearance(EWeaponSlotType.PrimeWeapon); RefreshWeaponAppearance(EWeaponSlotType.SecondaryWeapon); break; } }
public void LateUpdate() { if (!HeldWeaponAgent.IsValid() && HeldSlotType != EWeaponSlotType.None) { SetHeldSlotTypeProcess(EWeaponSlotType.None); } if (playerWeaponAgent.WeaponUpdateCache.UpdateHeldAppearance) { playerWeaponAgent.WeaponUpdateCache.UpdateHeldAppearance = false; //率先刷新手雷物品 TryHoldGrenade(true, false); RefreshWeaponAppearance(EWeaponSlotType.ThrowingWeapon); EWeaponSlotType newSlot = PollGetLastSlotType(); if (newSlot == HeldSlotType) { RefreshWeaponAppearance(); } else { TryArmWeapon(newSlot); } } }