protected void UpdateInput() { if (GenericUtils.IsFocusInputField()) { return; } if (PlayerCharacterEntity.IsDead()) { return; } // If it's building something, don't allow to activate NPC/Warp/Pickup Item if (!ConstructingBuildingEntity) { // Activate nearby npcs / players / activable buildings if (InputManager.GetButtonDown("Activate")) { targetPlayer = null; if (ActivatableEntityDetector.players.Count > 0) { targetPlayer = ActivatableEntityDetector.players[0]; } targetNpc = null; if (ActivatableEntityDetector.npcs.Count > 0) { targetNpc = ActivatableEntityDetector.npcs[0]; } targetBuilding = null; if (ActivatableEntityDetector.buildings.Count > 0) { targetBuilding = ActivatableEntityDetector.buildings[0]; } targetVehicle = null; if (ActivatableEntityDetector.vehicles.Count > 0) { targetVehicle = ActivatableEntityDetector.vehicles[0]; } targetWarpPortal = null; if (ActivatableEntityDetector.warpPortals.Count > 0) { targetWarpPortal = ActivatableEntityDetector.warpPortals[0]; } targetItemsContainer = null; if (ItemDropEntityDetector.itemsContainers.Count > 0) { targetItemsContainer = ItemDropEntityDetector.itemsContainers[0]; } // Priority Player -> Npc -> Buildings if (targetPlayer && CacheUISceneGameplay) { // Show dealing, invitation menu SelectedEntity = targetPlayer; CacheUISceneGameplay.SetActivePlayerCharacter(targetPlayer); } else if (targetNpc) { // Talk to NPC SelectedEntity = targetNpc; PlayerCharacterEntity.CallServerNpcActivate(targetNpc.ObjectId); } else if (targetBuilding) { // Use building SelectedEntity = targetBuilding; ActivateBuilding(targetBuilding); } else if (targetVehicle) { // Enter vehicle PlayerCharacterEntity.CallServerEnterVehicle(targetVehicle.ObjectId); } else if (targetWarpPortal) { // Enter warp, For some warp portals that `warpImmediatelyWhenEnter` is FALSE PlayerCharacterEntity.CallServerEnterWarp(targetWarpPortal.ObjectId); } else if (targetItemsContainer) { // Show items ShowItemsContainerDialog(targetItemsContainer); } } // Pick up nearby items if (InputManager.GetButtonDown("PickUpItem")) { targetItemDrop = null; if (ItemDropEntityDetector.itemDrops.Count > 0) { targetItemDrop = ItemDropEntityDetector.itemDrops[0]; } if (targetItemDrop != null) { PlayerCharacterEntity.CallServerPickupItem(targetItemDrop.ObjectId); } } // Reload if (InputManager.GetButtonDown("Reload")) { // Reload ammo when press the button ReloadAmmo(); } if (InputManager.GetButtonDown("ExitVehicle")) { // Exit vehicle PlayerCharacterEntity.CallServerExitVehicle(); } if (InputManager.GetButtonDown("SwitchEquipWeaponSet")) { // Switch equip weapon set GameInstance.ClientInventoryHandlers.RequestSwitchEquipWeaponSet(new RequestSwitchEquipWeaponSetMessage() { equipWeaponSet = (byte)(PlayerCharacterEntity.EquipWeaponSet + 1), }, ClientInventoryActions.ResponseSwitchEquipWeaponSet); } if (InputManager.GetButtonDown("Sprint")) { // Toggles sprint state isSprinting = !isSprinting; } // Auto reload if (PlayerCharacterEntity.EquipWeapons.rightHand.IsAmmoEmpty() || PlayerCharacterEntity.EquipWeapons.leftHand.IsAmmoEmpty()) { // Reload ammo when empty and not press any keys ReloadAmmo(); } } UpdateLookInput(); UpdateWASDInput(); PlayerCharacterEntity.SetExtraMovement(isSprinting ? ExtraMovementState.IsSprinting : ExtraMovementState.None); }
public virtual void TabTargetUpdateInput() { bool isFocusInputField = GenericUtils.IsFocusInputField(); bool isPointerOverUIObject = CacheUISceneGameplay.IsPointerOverUIObject(); if (CacheGameplayCameraControls != null) { CacheGameplayCameraControls.updateRotationX = false; CacheGameplayCameraControls.updateRotationY = false; CacheGameplayCameraControls.updateRotation = !isFocusInputField && !isPointerOverUIObject && InputManager.GetButton("CameraRotate"); CacheGameplayCameraControls.updateZoom = !isFocusInputField && !isPointerOverUIObject; } if (isFocusInputField) { return; } if (PlayerCharacterEntity.IsDead()) { return; } // If it's building something, don't allow to activate NPC/Warp/Pickup Item if (ConstructingBuildingEntity == null) { Targeting.HandleTargeting(); if (InputManager.GetButtonDown("PickUpItem")) { PickUpItem(); } if (InputManager.GetButtonDown("Reload")) { ReloadAmmo(); } if (InputManager.GetButtonDown("ExitVehicle")) { PlayerCharacterEntity.CallServerExitVehicle(); } if (InputManager.GetButtonDown("SwitchEquipWeaponSet")) { PlayerCharacterEntity.CallServerSwitchEquipWeaponSet((byte)(PlayerCharacterEntity.EquipWeaponSet + 1)); } if (InputManager.GetButtonDown("Sprint")) { isSprinting = !isSprinting; } // Auto reload if (PlayerCharacterEntity.EquipWeapons.rightHand.IsAmmoEmpty() || PlayerCharacterEntity.EquipWeapons.leftHand.IsAmmoEmpty()) { ReloadAmmo(); } } // Update enemy detecting radius to attack distance EnemyEntityDetector.detectingRadius = Mathf.Max(PlayerCharacterEntity.GetAttackDistance(false), wasdClearTargetDistance); // Update inputs TabTargetUpdateQueuedSkill(); TabTargetUpdatePointClickInput(); TabTargetUpdateWASDInput(); // Set sprinting state PlayerCharacterEntity.SetExtraMovement(isSprinting ? ExtraMovementState.IsSprinting : ExtraMovementState.None); }