private void HandleAttack() { Vector3 mouseVector3 = GridUtils.GetMouseWorldPosition(Input.mousePosition); mouseVector3.z = 0; int mouseX, mouseY; _grid.GetCellPosition(mouseVector3, out mouseX, out mouseY); if (_unitPhase == UnitPhase.AfterMovement && IsCellOcuppiedByEnemy(mouseX, mouseY) && _unitRange.IsInAttackRange(_unitMovement.GetUnitXPosition(), _unitMovement.GetUnitYPosition(), mouseX, mouseY)) { HandleAttackUnit(mouseX, mouseY); } else if ((_unitPhase == UnitPhase.Standby) && IsCellOcuppiedByEnemy(mouseX, mouseY) && _unitRange.IsInAttackRange(_unitMovement.GetUnitXPosition(), _unitMovement.GetUnitYPosition(), mouseX, mouseY)) { if (!_grid.IsPositionInAttackRange(mouseX, mouseY, _unitRange.minRange, _unitRange.maxRange)) { _unitAnimations.AnimateLoopUnit("WALK"); _attackAfterMovementXTarget = mouseX; _attackAfterMovementYTarget = mouseY; _unitMovement.MoveBeforeAttack(mouseX, mouseY, this, ActionType.MovementBeforeAttack); Turn.BlockTurn(); } else { HandleAttackUnit(mouseX, mouseY); } } }