protected override void OnLeftMouseDragEnd() { base.OnLeftMouseDragEnd(); if (State == InputState.Dragging) { Region hoveredRegion = GetHoveredRegion(); if (CanCreateNewTroopMovement()) { DragTargetTerritory = Game.Territories[hoveredRegion]; ActiveTroopDialog = Instantiate(Game.UI.TroopMovementDialog); ActiveTroopDialog.Init(DragSourceTerritory.UnplannedTroops, DragSourceTerritory.UnplannedTroops, OnNewTroopMovementDialogReturn); ActiveTroopDialog.transform.SetParent(Game.UI.OverlayContainer.transform); Vector3 targetPos = Vector3.Lerp(Camera.WorldToScreenPoint(new Vector3(DragArrowStart.x, 0f, DragArrowStart.y)), Camera.WorldToScreenPoint(new Vector3(DragArrowEnd.x, 0f, DragArrowEnd.y)), 0.5f); ActiveTroopDialog.transform.position = targetPos; State = InputState.AmountDialog; } else { Destroy(DragArrow); State = InputState.Idle; } } }
private void UpdatePlanningPhase() { switch (State) { case InputState.Idle: // Click on existing movement if (Input.GetKeyDown(KeyCode.Mouse0)) { ArmyArrow hoveredMovement = GetHoveredTroopMovement(); if (hoveredMovement != null) { EditedMovement = hoveredMovement; ActiveTroopDialog = Instantiate(Game.UI.TroopMovementDialog); ActiveTroopDialog.Init(hoveredMovement.TroopMovement.SourceTerritory.UnplannedTroops + hoveredMovement.TroopMovement.NumTroops, hoveredMovement.TroopMovement.NumTroops, OnEditTroopMovementDialogReturn); ActiveTroopDialog.transform.SetParent(Game.UI.OverlayContainer.transform); Vector3 targetPos = Camera.WorldToScreenPoint(new Vector3(hoveredMovement.MidPoint.x, 0f, hoveredMovement.MidPoint.y)); ActiveTroopDialog.transform.position = targetPos; State = InputState.AmountDialog; } } // Space ends planning phase else if (Input.GetKeyDown(KeyCode.Space)) { Game.EndPlanningPhase(); } break; // Dragging current arrow case InputState.Dragging: Destroy(DragArrow); bool validDrag = CanCreateNewTroopMovement(); DragArrowEnd = GetMousePositionOnMap(); DragArrow = MeshGenerator.DrawArrow(DragArrowStart, DragArrowEnd, validDrag ? Color.red : Color.black, width: 0.02f, arrowHeadWidth: 0.06f, arrowHeadLength: 0.15f, yPos: PolygonMapGenerator.LAYER_OVERLAY1); break; } }