private script_cannon select_cannon()
    {
        if (m_speedy_round)
        {
            c_index = 0;
            foreach (script_cannon cannon in m_cannons)
            {
                if (cannon != m_selected_cannon)
                {
                    c_cannon_selection_pool[c_index] = cannon;
                    c_index++;
                    if (c_index == 2)
                    {
                        break;
                    }
                }
            }

            c_selected_cannon = c_cannon_selection_pool[Random.Range(0, c_cannon_selection_pool.Length)];
        }
        else
        {
            c_selected_cannon = m_cannons[Random.Range(0, 3)];
        }

        return(c_selected_cannon);
    }
    IEnumerator Shoot_Puck()
    {
        while (true)
        {
            //select cannon
            //m_selected_cannon = m_cannons[1];
            m_selected_cannon = select_cannon();

            m_selected_cannon.Shoot_prepare();
            yield return(new WaitForSeconds(0.4f));

            m_selected_cannon.Shoot_play_sound();
            yield return(new WaitForSeconds(0.2f));


            //puck fire
            m_goal_collider_exit.enabled = false;
            m_selected_cannon.Shoot(m_pucks[m_current_puck]);
            m_goal_collider_exit.enabled = true;
            Game_Event("count shots");

            //handle puck array index
            m_current_puck++;
            if (m_current_puck > m_pucks.Length - 1)
            {
                m_current_puck = 0;
            }

            //delay
            yield return(new WaitForSeconds(m_shoot_frequency));
        }
    }
 void Awake()
 {
     m_ui_world      = GameObject.Find("World Canvas").GetComponent <script_manager_ui_world>();
     m_cannon_center = GameObject.Find("Cannon C").GetComponent <script_cannon>();
     m_cannon_left   = GameObject.Find("Cannon L").GetComponent <script_cannon>();
     m_cannon_right  = GameObject.Find("Cannon R").GetComponent <script_cannon>();
     m_cannons[0]    = m_cannon_center;
     m_cannons[1]    = m_cannon_left;
     m_cannons[2]    = m_cannon_right;
     shoot_coroutine = Shoot_Puck();
     m_manager_audio = GetComponent <script_manager_audio>();
     m_memory_bank   = GetComponent <script_memory_bank>();
 }