public void Update() { if (GameManager.Instance != null) { if (!PointerHelper.IsPointerOverGameObject()) { if (Input.GetMouseButtonDown(0) || Input.touchCount == 1 && Input.GetTouch(0).phase == TouchPhase.Began) { CloseMenu(); } } } }
public void Update() { if (Console.Instance && Console.Instance.ConsoleState == ConsoleState.Large) { return; } if (PointerImage.sprite != null) { Vector2 mousePosition = Input.mousePosition; bool isPointerOverGameObject = PointerHelper.IsPointerOverGameObject(); if (isPointerOverGameObject && BuildMenuContainer.Instance.IsOpen) { PointerImageGO.transform.position = new Vector2(mousePosition.x, mousePosition.y); } else { if (BuildMenuContainer.Instance.IsOpen) { Logger.Log(Logger.UI, "Close build menu"); BuildMenuContainer.Instance.ActivateAnimationFreeze(); BuildMenuContainer.Instance.IsOpen = false; BuildMenuContainer.Instance.RemoveBuildMenuContent(0.5f); } Vector2 mouseWorldPosition = Camera.main.ScreenToWorldPoint(mousePosition); mouseWorldPosition = new Vector2(mouseWorldPosition.x, mouseWorldPosition.y + 7.5f); float xx = Mathf.Round((mouseWorldPosition.y) / TileSizeInUnits.y + (mouseWorldPosition.x) / TileSizeInUnits.x); float yy = Mathf.Round((mouseWorldPosition.y) / TileSizeInUnits.y - (mouseWorldPosition.x) / TileSizeInUnits.x) - 1; // Calculate grid aligned position from current position float snappedX = (xx - yy) * 0.5f * TileSizeInUnits.x; float snappedY = (xx + yy) * 0.5f * TileSizeInUnits.y; if (_currentSnappedX != snappedX || _currentSnappedY != snappedY) { _currentSnappedX = snappedX; _currentSnappedY = snappedY; if (BuilderManager.Instance.BuildingPlotLocations.ContainsKey(new Vector2(_currentSnappedX, _currentSnappedY))) { Vector2 availablePlotVectorPosition = BuilderManager.Instance.BuildingPlotLocations[new Vector2(_currentSnappedX, _currentSnappedY)]; if (BuildingPlot.AvailablePlotVectorPosition == availablePlotVectorPosition && BuilderManager.PointerIsOnAvailablePlot) { return; } BuildingPlot.AvailablePlotVectorPosition = availablePlotVectorPosition; SetPointerImageOverlayColor(PointerImageOverlayState.Normal); BuilderManager.PointerIsOnAvailablePlot = true; BuildingPlot buildingPlot = BuilderManager.Instance.BuildingPlots[BuildingPlot.AvailablePlotVectorPosition]; Sprite roomIcon = GetRoomIcon(buildingPlot.RoomBlueprint.Name, buildingPlot.PlotRotation); SetPointerImage(roomIcon, buildingPlot.PlotRotation); RepositionImage(); } else { if (BuilderManager.PointerIsOnAvailablePlot) { BuilderManager.PointerIsOnAvailablePlot = false; } if (_currentPointerImageOverlayState == PointerImageOverlayState.Normal) { SetPointerImageOverlayColor(PointerImageOverlayState.Red); } RepositionImage(); } } } if (GameManager.Instance.CurrentPlatform == Platform.PC) { if (BuildMenuContainer.Instance.PanelAnimationPlaying) { return; } if (Input.GetMouseButtonDown(1)) { UnsetPointerImage(); if (!BuildMenuContainer.Instance.IsOpen) { BuildMenuContainer.Instance.ActivateAnimationFreeze(); BuilderManager.Instance.ActivateBuildMenuMode(); } } } } }
void Update() { if (InBuildMode && MainCanvas.Instance.IsDraggingIcon && !BuildMenuContainer.Instance.IsOpen) { if (PointerIsOnAvailablePlot) { if (GameManager.Instance.CurrentPlatform == Platform.PC) { if (Input.GetMouseButtonDown(0)) { Logger.Warning("Let's build a {0}", SelectedRoom.Name); BuildingPlot buildingPlot = BuildingPlot.FindBuildingPlot(BuildingPlot.AvailablePlotVectorPosition); BuildRoom(SelectedRoom, buildingPlot); if (BuildMenuContainer.Instance.PanelAnimationPlaying) { ReopenBuildMenu(); } else { BuildMenuContainer.Instance.ActivateAnimationFreeze(); ActivateBuildMenuMode(); } } } } else { if (GameManager.Instance.CurrentPlatform == Platform.PC) { if (Input.GetMouseButtonDown(0)) { Logger.Warning("Cannot build here!"); GameObject notificationGO = Instantiate(MainCanvas.Instance.NotificationPrefab, MainCanvas.Instance.transform); Notification notification = notificationGO.transform.GetComponent <Notification>(); notification.Setup(NotificationType.FromPointer, "Cannot build in location"); if (BuildMenuContainer.Instance.PanelAnimationPlaying) { ReopenBuildMenu(); } else { BuildMenuContainer.Instance.ActivateAnimationFreeze(); ActivateBuildMenuMode(); } } } } } if (Input.touchCount == 1) { if (Input.touches[0].phase == TouchPhase.Ended) { if (MainCanvas.Instance.PointerImage.sprite != null && !BuildMenuContainer.Instance.IsOpen) { if (PointerIsOnAvailablePlot) { Logger.Warning("Let's build!"); BuildingPlot buildingPlot = BuildingPlot.FindBuildingPlot(BuildingPlot.AvailablePlotVectorPosition); BuildRoom(SelectedRoom, buildingPlot); } else { if (MainCanvas.Instance.IsDraggingIcon && !BuildMenuContainer.Instance.IsOpen) { GameObject notificationGO = Instantiate(MainCanvas.Instance.NotificationPrefab, MainCanvas.Instance.transform); Notification notification = notificationGO.transform.GetComponent <Notification>(); notification.Setup(NotificationType.FromPointer, "Cannot build in location"); } } if (BuildMenuContainer.Instance.PanelAnimationPlaying) { ReopenBuildMenu(); } else { BuildMenuContainer.Instance.ActivateAnimationFreeze(); ActivateBuildMenuMode(); } } else { MainCanvas.Instance.UnsetPointerImage(); } } } if (ConfirmationModal.CurrentConfirmationModal != null) { if (Input.GetMouseButtonDown(0) || (Input.touchCount == 1 && Input.touches[0].phase == TouchPhase.Began)) { bool isPointerOverGameObject = PointerHelper.IsPointerOverGameObject(); if (!isPointerOverGameObject) { ConfirmationModal.CurrentConfirmationModal.ResetDeleteTrigger(); ConfirmationModal.CurrentConfirmationModal.DestroyConfirmationModal(); } } } }