public override void Update() { if (!interactWithSceneTransferEventRepository.HasValue) { return; } var marker = interactWithSceneTransferEventRepository.Value.Marker; if (PositionHelper.GetDistance(playerTransform, marker.gameObject.transform) <= config.InteractCriticalDistance) { movementRepository.RemoveValue(); interactWithSceneTransferEventRepository.RemoveValue(); transferToSceneEventRepository.SetValue(new TransferToSceneEvent(marker.Id)); } }
public override void Update() { if (!movementEventRepository.HasValue) { return; } var destination = movementEventRepository.Value.Destination; if (PositionHelper.GetDistance(destination, player.position) <= config.MovementCriticalDistance) { movementEventRepository.RemoveValue(); } player.position += destination.x > player.position.x ? new Vector3(config.Speed, 0).WithDeltaTime() : new Vector3(-config.Speed, 0).WithDeltaTime(); }
public override void Update() { if (!interactWithNpcEventRepository.HasValue) { return; } var interactEvent = interactWithNpcEventRepository.Value; var gameObject = interactEvent.Marker.gameObject; if (PositionHelper.GetDistance(player, gameObject.transform) <= config.InteractCriticalDistance) { interactWithNpcEventRepository.RemoveValue(); movementEventRepository.RemoveValue(); startDialogueEventRepository.SetValue(new StartDialogueEvent(interactEvent.Marker.Id, interactEvent.Marker.Name)); } }
public override void Update() { if (!pickupEventRepository.HasValue) { return; } var pickupEvent = pickupEventRepository.Value; var gameObject = pickupEvent.Marker.gameObject; if (PositionHelper.GetDistance(player, gameObject.transform) <= config.InteractCriticalDistance) { pickupEventRepository.RemoveValue(); movementEventRepository.RemoveValue(); addToInventoryEventRepository.SetValue(new AddToInventoryEvent(pickupEvent.Marker.Id)); } }
public override void Update() { if (MouseHelper.IsMouseAboveObjectWithTag(Constants.Tags.PickupableItem) || MouseHelper.IsMouseAboveObjectWithTag(Constants.Tags.Npc) || MouseHelper.IsMouseAboveObjectWithTag(Constants.Tags.SceneTransfer) || MouseHelper.IsMouseAboveObjectWithTag(Constants.Tags.DialogueButton) || MouseHelper.IsMouseAboveObjectWithTag(Constants.Tags.FinishDialogueButton)) { cursor = Resources.Load <Texture2D>("pointer"); } else { cursor = Resources.Load <Texture2D>("normal"); } Cursor.SetCursor(cursor, new Vector2(0, 0), CursorMode.Auto); if (Input.GetMouseButtonDown(0)) { if (Input.mousePosition != previousPointClicked && previousClickDateTime - DateTime.UtcNow < TimeSpan.FromMilliseconds(200)) // у нас происходит двойной клик. Для кнопок это критично { // Поэтому я сохраняю предыдущую точку нажатия и сравниваю её с текущей previousClickDateTime = DateTime.UtcNow; previousPointClicked = Input.mousePosition; movementEventRepository.RemoveValue(); pickupEventRepository.RemoveValue(); interactWithNpcEventRepository.RemoveValue(); newTextEventRepository.RemoveValue(); if (MouseHelper.IsMouseAboveObjectWithTag(Constants.Tags.Ground)) { ProcessMovement(); } if (MouseHelper.IsMouseAboveObjectWithTag(Constants.Tags.PickupableItem)) { ProcessPickup(); } if (MouseHelper.IsMouseAboveObjectWithTag(Constants.Tags.Npc)) { ProcessNpc(); } if (MouseHelper.IsMouseAboveObjectWithTag(Constants.Tags.DialogueButton)) { ProcessButton(); } if (MouseHelper.IsMouseAboveObjectWithTag(Constants.Tags.FinishDialogueButton)) { ProcessFinishDialogue(); } if (MouseHelper.IsMouseAboveObjectWithTag(Constants.Tags.SceneTransfer)) { ProcessSceneTransition(); } } } if (Input.GetMouseButtonDown(1)) { if (MouseHelper.IsMouseAboveObjectWithTag(Constants.Tags.PickupableItem)) { var marker = MouseHelper.GetComponentOnGameObjectUnderMouse <PickupableItemMarker>(); startDialogueEventRepository.SetValue(new StartDialogueEvent(marker.Id, "You")); } } }