public void showSingleButtonModal(string content)
    {
        QueuedModalInfo new_modal_info = new QueuedModalInfo();

        new_modal_info.content_text = content;
        m_modal_queue.Add(new_modal_info);
    }
    private void popModal()
    {
        QueuedModalInfo next_modal_in_queue = m_modal_queue[0];

        StartCoroutine(showModal(next_modal_in_queue));
        m_modal_queue.RemoveAt(0);
    }
    private IEnumerator showModal(QueuedModalInfo modal_info)
    {
        //this could be implemented to recieve various button texts, calbacks etc but I am keeping it simple here

        m_modal_is_showing = true;
        m_modal_dismissed  = false;

        //setup the modal text etc
        m_content_text.text = modal_info.content_text;
        m_blocker_image.gameObject.SetActive(true);

        //transition the modal in
        float enter_lifetime = 0.0f;

        while (enter_lifetime < m_modal_transition_time)
        {
            float normalized_transition = enter_lifetime / m_modal_transition_time;
            Color blocker_color         = Color.Lerp(Color.clear, m_blocker_color, normalized_transition);
            m_blocker_image.color = blocker_color;

            Vector2 modal_position = Vector2.Lerp(m_modal_rest_position, Vector2.zero, normalized_transition);
            m_modal_base_transform.anchoredPosition = modal_position;

            yield return(0);

            enter_lifetime += Time.deltaTime;
        }
        //force the final color, position
        m_blocker_image.color = m_blocker_color;
        m_modal_base_transform.anchoredPosition = Vector2.zero;

        //wait for a button press
        yield return(new WaitUntil(() => m_modal_dismissed == true));

        //transition the modal out
        float exit_lifetime = 0.0f;

        while (exit_lifetime < m_modal_transition_time)
        {
            float normalized_transition = 1 - (exit_lifetime / m_modal_transition_time);
            Color blocker_color         = Color.Lerp(Color.clear, m_blocker_color, normalized_transition);
            m_blocker_image.color = blocker_color;

            Vector2 modal_position = Vector2.Lerp(m_modal_rest_position, Vector2.zero, normalized_transition);
            m_modal_base_transform.anchoredPosition = modal_position;

            yield return(0);

            exit_lifetime += Time.deltaTime;
        }

        //wrap it up
        m_blocker_image.gameObject.SetActive(false);
        m_modal_is_showing = false;
    }
Example #4
0
 public void MessageBox(QueuedModalInfo info)
 {
     MessageBox(info.iconPic, info.title, info.question, info.yesEvent, info.noEvent, info.cancelEvent, info.okEvent, info.iconActive, info.messageType);
 }