public void UnArmHeldWeapon(Action onfinish) { WeaponScanStruct weaponInfo = HeldWeaponAgent.ComponentScan; AppearanceSpecific(); float holsterParam = WeaponUtil.GetHolsterParam(HeldSlotType); RelatedStateInterface.CharacterUnmount(() => OnUnArmWeaponCallback(weaponInfo.ConfigId, onfinish), holsterParam); }
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(); } }
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 拉栓动作 //} } }