// увеличиваем или уменьшаем кол-во выбранных кораблей
        private void ManageShips(ShipManagement action, int selectedShipWidth)
        {
            switch (action)
            {
            case ShipManagement.PLACE:
                RemainedForPlaceShips[selectedShipWidth - 1]--;
                break;

            case ShipManagement.DELETE:
                RemainedForPlaceShips[selectedShipWidth - 1]++;
                break;
            }
            switch (selectedShipWidth)
            {
            case 1:
                ShipsLabel1.Text = RemainedForPlaceShips[selectedShipWidth - 1].ToString();
                break;

            case 2:
                ShipsLabel2.Text = RemainedForPlaceShips[selectedShipWidth - 1].ToString();
                break;

            case 3:
                ShipsLabel3.Text = RemainedForPlaceShips[selectedShipWidth - 1].ToString();
                break;

            case 4:
                ShipsLabel4.Text = RemainedForPlaceShips[selectedShipWidth - 1].ToString();
                break;
            }
        }
    public void InputCommands(int i, ShipManagement squadLeader, bool formationMode)
    {
        Camera camera = GameObject.Find("Main Camera").GetComponent<Camera>();
        float distance;

        if (Input.GetKey(KeyCode.LeftShift) && !Input.GetKey(KeyCode.Z))
        {
            Plane p = new Plane(Vector3.up, -transform.position.y);
            Ray ray = camera.ScreenPointToRay(Input.mousePosition);

            if (p.Raycast(ray, out distance))
            {
                targetHeading = ray.GetPoint(distance);
            }
        }

        if (Input.GetKey(KeyCode.Z))
        {
            var pl = Camera.main.transform.position - targetHeading;
            Plane zp = new Plane(pl.normalized, pl.magnitude);
            Ray zray = camera.ScreenPointToRay(Input.mousePosition);
            if (zp.Raycast(zray, out distance))
            {
                var ytarget = zray.GetPoint(distance);
                targetHeading = new Vector3(targetHeading.x, ytarget.y, targetHeading.z);
            }
        }

        if (Input.GetMouseButton(0) && Input.GetKey(KeyCode.LeftShift))
        {
            move = false;
            _formationMode = formationMode;

            //turning this into an abstract or interface will help.
            if (!_formationMode)
            {
                MoveOperation(targetHeading);
            }
            else
            {
                SetDestination(i, squadLeader);

                //FollowLeader();
                FormateAtTarget();
                MoveOperation(targetHeading, squadLeader);

                //targetHeading = targetPosition;
            }

            targetPosition = targetHeading;
        }
        else
        // its possible that there might be interference from the Update method.
        {
            move = true;
        }
    }
    void MoveOperation(Vector3 targetPosition, ShipManagement squadLeader = null)
    {
        // Insert fish scripts here.
        var simpleMove = GetComponent<SimpleMove>();

        if (simpleMove != null) {
            simpleMove.Move (targetPosition);
        }
    }
 public void SetSquadLeader(ShipManagement thisGuy)
 {
     _squadLeader = thisGuy;
 }
    public void SetDestination(int squadNum, ShipManagement squadLeader = null)
    {
        _squadronNumber = squadNum;

        if (squadLeader != null)
        {
            _squadLeader = squadLeader;
        }

        //idk why I'm doing this. kind of redundant.
        //targetPosition = targetHeading;
    }