public void deselect_active_unit()
 {
     if (selected_unit_List.Contains(active_unit))
     {
         selected_unit_List.Remove(active_unit);
     }
     if (active_unit != null)
     {
         active_unit.setDeselected();
     }
     active_unit = null;
 }
Ejemplo n.º 2
0
    public void create_Unit()
    {
        GameObject new_Minion = (GameObject)Instantiate(minion_prefab, spawn_point.transform.position, minion_prefab.transform.rotation);
        //Пичкаем нашего миньена бонусами:
        Movement_Units new_minion_script = new_Minion.GetComponent <Movement_Units> ();

        new_minion_script.max_hp      += hp_Bonus;
        new_minion_script.armor       += armor_Bonus;
        new_minion_script.atack_power += atack_Power_Bonus;
        new_minion_script.atack_speed += atack_Speed_Bonus;
        //Так как казармы вне фонтана то добавляем миньена на карту:
        GameManager.Instance.player_units_in_Map_List.Add(new_minion_script);
        GameManager.Instance.player_money -= spawn_minion_Coast;
        GameManager.Instance.updateMoney();
    }
Ejemplo n.º 3
0
 //Добавляем Юниты в коллайдере в спиcок выбранных:
 void OnTriggerEnter(Collider coll)
 {
     //Мы выделяем своих:
     //Debug.Log (coll.gameObject.tag);
     if (coll.gameObject.tag == "player_unit")
     {
         Movement_Units selected = coll.gameObject.GetComponent <Movement_Units> ();
         if (!GameManager.Instance.selected_unit_List.Contains(selected))
         {
             GameManager.Instance.selected_unit_List.Add(selected);
             //Помечаем Unit как выбранный(управляемый игроком):
             GameManager.Instance.active_unit = selected;
             selected.setSelected();
         }
     }
 }
    //Метод получает на вход список и выводит наиближайший к нам обьект:
    public Movement_Units select_Enemy(List <Movement_Units> enemy_list)
    {
        //ВНИМАНИЕ! это место подлежит дальнейшей оптимизации. (думаю для тех количеств юнитов что у меня на уровне такое решение возможно)
        //Для выборки получаем первый элемент:
        Movement_Units select_enemy      = enemy_list [0];
        float          distance_to_enemy = Vector3.Distance(this.gameObject.transform.position, select_enemy.gameObject.transform.position);

        for (int i = 0; i < enemy_list.Count; i++)
        {
            float next_distance = Vector3.Distance(enemy_list [i].gameObject.transform.position, this.gameObject.transform.position);
            if (next_distance < distance_to_enemy)
            {
                distance_to_enemy = next_distance;
                select_enemy      = enemy_list [i];
            }
        }
        return(select_enemy);
    }
Ejemplo n.º 5
0
 //У всех кто вышел отключаем регенерацию:
 void OnTriggerExit(Collider coll)
 {
     if (coll.gameObject.tag == "player_unit")
     {
         Movement_Units inputed_unit = coll.gameObject.GetComponent <Movement_Units> ();
         //Добавляем юнит в сисок "У фантана"
         if (GameManager.Instance.player_unit_in_save_zone_List.Contains(inputed_unit))
         {
             GameManager.Instance.player_unit_in_save_zone_List.Remove(inputed_unit);
         }
         //Удаляем из списка карты:
         if (!GameManager.Instance.player_units_in_Map_List.Contains(inputed_unit))
         {
             GameManager.Instance.player_units_in_Map_List.Add(inputed_unit);
         }
         inputed_unit.regeneration = false;
     }
 }
 //при нажатии на правую кнопку мыши снимаем выделение с юнитов:
 public void deselect_all_units()
 {
     //Отключаем активные здания:
     if (Input.GetMouseButtonDown(1))
     {
         //Если мы были в казарме:
         if (GameManager.Instance.ui == GameManager.ui_type.distance_kazarm || GameManager.Instance.ui == GameManager.ui_type.melee_kazarm)
         {
             GameManager.Instance.disable_ui();
             GameManager.Instance.ui = GameManager.ui_type.empty;
         }
     }
     if (GameManager.Instance.selected_unit_List.Count > 1)
     {
         if (Input.GetMouseButtonDown(1))
         {
             if (GameManager.Instance.active_unit != null)
             {
                 GameManager.Instance.active_unit = null;
             }
             for (int i = 0; i < GameManager.Instance.selected_unit_List.Count; i++)
             {
                 Movement_Units next = GameManager.Instance.selected_unit_List [i];
                 next.setDeselected();
             }
             GameManager.Instance.selected_unit_List.Clear();
         }
     }
     else
     {
         if (Input.GetMouseButtonDown(1))
         {
             GameManager.Instance.deselect_active_unit();
         }
     }
 }
 //убираем пометку:
 public void deselectTarget()
 {
     active_enemy = null;
 }
 //Помечаем как мешень:
 public void setTarget(Movement_Units target)
 {
     active_enemy = target;
 }
    //Метод возвращает позицию клика:
    public IEnumerator getPositionClick()
    {
        if (Input.GetMouseButtonDown(0))
        {
            Ray        ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;
            if (Physics.Raycast(ray, out hit, 100))
            {
                //Если игрок кликает на другого юнита игрока:
                if (hit.collider.gameObject.tag == "player_unit")
                {
                    if (hit.collider.gameObject != GameManager.Instance.active_unit)
                    {
                        //Debug.Log ("Ты кликнул на другого юнита");
                        //Проверяем если выбрана не группа юнитов а один единственный, снимаем выдление с текущего и выделяем нового:
                        if (GameManager.Instance.selected_unit_List.Count == 1)
                        {
                            GameManager.Instance.deselect_active_unit();
                        }
                        //Теперь отмечаем новый юнит как помеченный:
                        GameManager.Instance.active_unit = hit.collider.gameObject.GetComponent <Movement_Units> ();
                        GameManager.Instance.active_unit.setSelected();
                    }
                }
                else
                //Игрок выделил казарму:
                if (hit.collider.gameObject.tag == "kazarm_melee")
                {
                    hit.collider.gameObject.GetComponent <Kazarm> ().kazarm_selected = true;
                    Debug.Log("Игрок выбрал казарму пехотинцев");
                    deselect_all_units();
                    //Отображаем интерфейс управления казармой:
                    GameManager.Instance.ui = GameManager.ui_type.melee_kazarm;
                }
                else if (hit.collider.gameObject.tag == "kazarm_distance")
                {
                    hit.collider.gameObject.GetComponent <Kazarm> ().kazarm_selected = true;
                    Debug.Log("Игрок выбрал казарму стрелков");
                    deselect_all_units();
                    //Отображаем интерфейс управления казармой:
                    GameManager.Instance.ui = GameManager.ui_type.distance_kazarm;
                }
                else if (hit.collider.gameObject.tag == "enemy")
                {
                    //итак игрок кликнул на врага, указываем всем подконтрольным унитом данного врага как цель:
                    for (int i = 0; i < GameManager.Instance.selected_unit_List.Count; i++)
                    {
                        GameManager.Instance.selected_unit_List [i].active_enemy = hit.collider.gameObject.GetComponent <Movement_Units> ();
                        //ну и переводим их в атаку
                        GameManager.Instance.selected_unit_List [i].order = Movement_Units.minion_order.atack;
                    }
                }
                else
                {
                    if (GameManager.Instance.active_unit != null)
                    {
                        //Передаем нашему подконтрольному юниту кординаты для дислокации:
                        if (GameManager.Instance.selected_unit_List.Count > 0)
                        {
                            for (int i = 0; i < GameManager.Instance.selected_unit_List.Count; i++)
                            {
                                Movement_Units select_unit = GameManager.Instance.selected_unit_List [i];
                                select_unit.setDestination(hit.point);
                                select_unit.order = Movement_Units.minion_order.empty;
                            }
                        }
                    }
                    Debug.DrawLine(ray.origin, hit.point);
                    result   = hit.point;
                    result.y = 0f;
                }
            }
        }
        click_position = result;
        yield return(new WaitForSeconds(2f));

        //Итак стартую выделение:
        selectBoxSone(click_position);
        yield return(null);
    }