ServerCanvasManager.cs 2.59 KB
using UnityEngine;
using System.Collections;

public class ServerCanvasManager : Singleton<ServerCanvasManager>
{
    public AVProWindowsMediaMovie movieScript;
    public CanvasGroup inUseCanvas;
    public CanvasGroup timeoutCanvas;
    public CanvasGroup videoCanvas;
    public float tweenTime;
    public float appTimeout;

    void Start()
    {
        inUseCanvas.alpha = 1;
        timeoutCanvas.alpha = 0;
        videoCanvas.alpha = 0;
        StartCoroutine(AppTimeout());
    }

    private bool _videoPlaying = false;
    private float _timeout = 0;
    private bool _didTimeout = false;

    private IEnumerator AppTimeout()
    {
        while(true)
        {
            _timeout = 0;
            _didTimeout = false;

            while (!_videoPlaying)
            {
                if (!_didTimeout)
                    _timeout += Time.deltaTime;

                if (_timeout >= appTimeout && !_didTimeout)
                {
                    _didTimeout = true;

                    AppManager.Instance.TweenCanvasGroup(inUseCanvas, 0, tweenTime);
                    AppManager.Instance.TweenCanvasGroup(timeoutCanvas, 1, tweenTime);
                }

                yield return null;
            }

            yield return null;
        }
    }

    public void ResetTimer()
    {
        if (_videoPlaying) return;

        AppManager.Instance.TweenCanvasGroup(inUseCanvas, 1, tweenTime);
        AppManager.Instance.TweenCanvasGroup(timeoutCanvas, 0, tweenTime);

        _timeout = 0;
        _didTimeout = false;
    }

    private Coroutine movieCoroutine;

    public void LoadMovie(string filename)
    {
        movieScript.UnloadMovie();

        movieScript._filename = filename;
        movieScript.LoadMovie(true);

        if (movieCoroutine != null)
            StopCoroutine(movieCoroutine);

        movieCoroutine = StartCoroutine(MoviePlaying());
    }

    private IEnumerator MoviePlaying()
    {
        StopCoroutine("AppTimeout");

        _videoPlaying = true;
        AppManager.Instance.TweenCanvasGroup(videoCanvas, 1, tweenTime);
        //TweenCanvasGroup(inUseCanvas, 0, tweenTime);
        //TweenCanvasGroup(timeoutCanvas, 0, tweenTime);

        float holdTime = movieScript.MovieInstance.DurationSeconds - tweenTime;

        yield return new WaitForSeconds(holdTime);

        AppManager.Instance.TweenCanvasGroup(videoCanvas, 0, tweenTime);
        AppManager.Instance.TweenCanvasGroup(inUseCanvas, 1, tweenTime);

        yield return new WaitForSeconds(tweenTime);

        _videoPlaying = false;
        movieScript.UnloadMovie();

        StartCoroutine("AppTimeout");
    }
}