private DialogRequest m_Current; // The current request being processed. /// <inheritdoc /> public void ReceiveRequest(DialogRequest request) { request.disposed += OnRequestDisposed; if (m_Current == null) { m_Current = request; m_Current.dialog.Show(); } else { if (m_Current.priority < request.priority) { m_Current.dialog.Hide(); m_Requests.Push(m_Current); m_Current = request; m_Current.dialog.Show(); } else { m_Requests.Push(request); request.dialog.Hide(); } } }
/// <inheritdoc /> public IDialog DisplayAlert(DialogPriority priority, string title, string message, string cancel, string confirm, Action onConfirm = null, Action onCancel = null) { IDialog dialog = (DialogComponent)m_AlertDialogFactory.Create(title, message, cancel, confirm, onCancel, onConfirm); m_DialogService.SendRequest(DialogRequest.Create(dialog, priority)); return(dialog); }
/// <inheritdoc /> public IDialog DisplayActivity(DialogPriority priority, string message) { IDialog dialog = (DialogComponent)m_ActivityIndicatorDialogFactory.Create(message); m_DialogService.SendRequest(DialogRequest.Create(dialog, priority)); return(dialog); }
private void DisplayNext() { if (m_Requests.Count == 0) { return; } m_Current = m_Requests.Pop(); m_Current.dialog.Show(); }
private void OnRequestDisposed(DialogRequest request) { request.disposed -= OnRequestDisposed; if (m_Current == request) { m_Current = null; DisplayNext(); } else { m_Requests.Remove(request); } }
/// <inheritdoc /> public void SendRequest(DialogRequest request) { m_RequestReceiver.ReceiveRequest(request); }