public void BuyUnit2()
 {
     if (player.gold >= unitsAvailable[1].goldCost)
     {
         UnityRTS u = Instantiate(unitsAvailable[1], Spawn.transform.position, new Quaternion());
         player.gold -= unitsAvailable[1].UnitStat.goldCost;
         player.playersUnities.Add(u);
     }
 }
 public void AutoAttack(UnityRTS attacker, UnityRTS target)
 {
     target.TakeDamage(attacker.attackDamage - target.def);
 }
 public void UnitDied(UnityRTS u)
 {
     selectedUnities.Remove(u);
     player.removeUnit(u);
 }
    // Update is called once per frame
    void Update()
    {
        update_health_UI();
        if (Input.GetMouseButtonDown(0))
        {
            selectionAreaTransform.gameObject.SetActive(true);
            startMousePosition = Input.mousePosition;
        }
        if (Input.GetMouseButton(0))
        {
            Vector3 s          = Input.mousePosition;
            Vector3 lowerleft  = new Vector3(Mathf.Min(startMousePosition.x, s.x), Mathf.Min(startMousePosition.y, s.y));
            Vector3 upperRight = new Vector3(Mathf.Max(startMousePosition.x, s.x), Mathf.Max(startMousePosition.y, s.y));
            selectionAreaTransform.position  = lowerleft;
            selectionAreaTransform.sizeDelta = new Vector2(upperRight.x - lowerleft.x, upperRight.y - lowerleft.y);
            //selectionAreaTransform.localScale = upperRight - lowerleft;
        }
        if (Input.GetMouseButtonUp(0))
        {
            Vector3 s = Input.mousePosition;
            selectionAreaTransform.gameObject.SetActive(false);
            Vector2 lowerleft  = new Vector3(Mathf.Min(startMousePosition.x, s.x), Mathf.Min(startMousePosition.y, s.y));
            Vector2 upperRight = new Vector3(Mathf.Max(startMousePosition.x, s.x), Mathf.Max(startMousePosition.y, s.y));
            foreach (UnityRTS u in selectedUnities)
            {
                u.SetSelectedVisibility(false);
            }
            selectedUnities.Clear();
            foreach (UnityRTS unit in player.playersUnities)
            {
                Vector3 screenPos = Camera.main.WorldToScreenPoint(unit.transform.position);

                if (screenPos.x > lowerleft.x && screenPos.x < upperRight.x && screenPos.y > lowerleft.y && screenPos.y < upperRight.y)
                {
                    selectedUnities.Add(unit);
                    unit.SetSelectedVisibility(true);
                }
            }
            update_stats();
            if (startMousePosition == s)
            {
                Ray        ray = Camera.main.ScreenPointToRay(Input.mousePosition);
                RaycastHit hit;
                if (Physics.Raycast(ray, out hit))
                {
                    UnityRTS u     = hit.transform.gameObject.GetComponent <UnityRTS>();
                    bool     exist = false;
                    foreach (UnityRTS unit in player.playersUnities)
                    {
                        if (unit == u)
                        {
                            exist = true;
                        }
                    }
                    if (u != null && exist)
                    {
                        foreach (UnityRTS unit in selectedUnities)
                        {
                            unit.SetSelectedVisibility(false);
                        }
                        selectedUnities.Clear();
                        selectedUnities.Add(u);
                        u.SetSelectedVisibility(true);
                        update_stats();
                    }
                }
            }

            //Debug.Log(selectedUnities.Count);
        }

        if (Input.GetMouseButtonDown(1))
        {
            Ray        ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;
            if (selectedUnities.Count > 0)
            {
                if (Physics.Raycast(ray, out hit))
                {
                    UnityRTS u = hit.transform.gameObject.GetComponent <UnityRTS>();
                    if (u != null)
                    {
                        foreach (UnityRTS unit in selectedUnities)
                        {
                            unit.setCurrentTarget(u.gameObject.transform);
                        }
                    }
                    else
                    {
                        Vector3 path = selectedUnities[0].calculatePath(hit.point);
                        foreach (UnityRTS un in selectedUnities)
                        {
                            un.moveToPosiotion(path);
                            un.setCurrentTarget(null);
                        }
                    }
                }
            }
        }
    }
 public void removeUnit(UnityRTS u)
 {
     playersUnities.Remove(u);
 }