Esempio n. 1
0
    public void Init(bool istest, float m_Time)
    {
        Debug.Log("movieTime:" + m_Time);
        //时间默认值设定
        allOfTheGameTime            = 80;
        movieTime                   = m_Time > 3 ? m_Time : 3;
        readyTime                   = 5;
        gameTime                    = 20f;
        lastTime                    = 10f;
        minTime                     = movieTime + readyTime + gameTime + lastTime;
        startatTime                 = DateTime.MinValue;
        timeParam                   = 50;
        listenCurrentTime_Start     = false;
        listenCurrentTime_MovieDone = false;
        listenCurrentTime_ReadyDone = false;
        listenCurrentTime_GameDone  = false;
        listenCurrentTime_End       = true;
        DEBUGFORMAT                 = "yyyy/MM/dd/HH:mm:ss.fff";
        //参数获取

        if (istest)
        {
            //----------------------------↓↓↓↓ 测试专用区域↓↓↓↓----------------------------------//
            //----------------------------         ↓↓↓↓↓↓
            allOfTheGameTime = 69;
            DateTimeFormatInfo dtFormat = new System.Globalization.DateTimeFormatInfo();
            dtFormat.ShortDatePattern = DEBUGFORMAT;
            startatTime = Convert.ToDateTime("2017/03/17/12:21:00.000", dtFormat);//时间测试

            ////王总专用口
            startatTime = Convert.ToDateTime(DateTime.Now + TimeSpan.FromMilliseconds(0d), dtFormat);
            //----------------------------         ↑↑↑↑↑↑
            //----------------------------↑↑↑↑ 测试专用区域↑↑↑↑----------------------------------//
        }
        else
        {
            _GetImportantValue_Time();
        }



        endTime     = startatTime + new TimeSpan(0, 0, (int)allOfTheGameTime);
        dateTimeNow = DateTime.Now;
        Debug.LogFormat("real -----> now       :" + dateTimeNow.ToString(DEBUGFORMAT) + "\n");
        Debug.LogFormat("real -----> startat   :" + startatTime.ToString(DEBUGFORMAT) + "\n");
        Debug.LogFormat("real -----> endtime   :" + endTime.ToString(DEBUGFORMAT) + "\n");
        Debug.Log("time param : " + timeParam);

        if (dateTimeNow >= endTime)//当前时间大于结束时间
        {
            Debug.LogWarning("'current time' is out of 'end time'. end time is :" + endTime.ToString(DEBUGFORMAT) + "\n" +
                             "                                     but current time is :" + dateTimeNow.ToString(DEBUGFORMAT));
            Debug.Log("Application.Quit()");
            Application.Quit();
            return;
        }
        else if (dateTimeNow >= startatTime && dateTimeNow < endTime)//当前时间 > 启动时间
        {
            allOfTheGameTime = (float)(endTime - dateTimeNow).TotalSeconds;
            if (allOfTheGameTime >= minTime)
            {
                listenCurrentTime_Start     = false;
                listenCurrentTime_MovieDone = true;
                listenCurrentTime_ReadyDone = false;
                listenCurrentTime_GameDone  = false;
                //listenCurrentTime_End = false;
                Debug.LogError("'current time' > start time .and the residue time is enough.so play the game now.");
                gameTime = allOfTheGameTime - movieTime - readyTime - lastTime;

                startatTime = dateTimeNow;

                movieDateTimeDone = startatTime + new TimeSpan(0, 0, 0, 0, (int)(movieTime * 1000));
                readyDateTimeDone = movieDateTimeDone + new TimeSpan(0, 0, 0, 0, (int)(readyTime * 1000));
                gameDateTimeDone  = readyDateTimeDone + new TimeSpan(0, 0, 0, 0, (int)(gameTime * 1000));

                _startatTimeTime       = 0;
                _movieDateTimeDoneTime = movieTime * 1000;
                _readyDateTimeDoneTime = (movieTime + readyTime) * 1000;
                _gameDateTimeDoneTime  = (movieTime + readyTime + gameTime) * 1000;
                _endTimeTime           = (movieTime + readyTime + gameTime + lastTime) * 1000;



                _Init_DebugShow();
                _st = new System.Diagnostics.Stopwatch();
                _st.Start();
                if (StartGameEvent != null)
                {
                    StartGameEvent(this, new EventArgs());
                }

                Debug.Log("movieTime:" + movieTime);

                return;
            }
            else if (allOfTheGameTime < minTime)
            {
                MyProcess curentPorcess = new MyProcess();
                MyProcess.ShowWindow(curentPorcess.GetMainWindowHandle(System.Diagnostics.Process.GetCurrentProcess().Id), 3);
                Debug.LogWarning("'current time' > start time .and the residue time is not enough.so wait time done and quit .");
                movieTime = 0;
                readyTime = 0;
                gameTime  = 0;
                lastTime  = 0;
                listenCurrentTime_Start     = false;
                listenCurrentTime_MovieDone = false;
                listenCurrentTime_ReadyDone = false;
                listenCurrentTime_GameDone  = false;
                //listenCurrentTime_End = true;
                _startatTimeTime       = 0;
                _movieDateTimeDoneTime = 0;
                _readyDateTimeDoneTime = 0;
                _gameDateTimeDoneTime  = 0;
                _endTimeTime           = 0;
                _st = new System.Diagnostics.Stopwatch();
                _st.Start();

                movieDateTimeDone = startatTime;
                readyDateTimeDone = startatTime;
                gameDateTimeDone  = startatTime;

                _Init_DebugShow();
                return;
            }
        }
        else if (dateTimeNow < startatTime) //正常情况
        {
            Debug.Log("正常" + movieTime);
            gameTime = allOfTheGameTime - movieTime - readyTime - lastTime;

            if (gameTime < 10)
            {
                Application.Quit();
                return;
            }

            movieDateTimeDone = startatTime + new TimeSpan(0, 0, 0, 0, (int)(movieTime * 1000));
            readyDateTimeDone = movieDateTimeDone + new TimeSpan(0, 0, 0, 0, (int)(readyTime * 1000));
            gameDateTimeDone  = readyDateTimeDone + new TimeSpan(0, 0, 0, 0, (int)(gameTime * 1000));

            _Init_DebugShow();

            listenCurrentTime_Start     = true;
            listenCurrentTime_MovieDone = false;
            listenCurrentTime_ReadyDone = false;
            listenCurrentTime_GameDone  = false;

            //listenCurrentTime_End = false;
            _startatTimeTime       = (float)(startatTime - dateTimeNow).TotalMilliseconds;
            _movieDateTimeDoneTime = _startatTimeTime + movieTime * 1000;
            _readyDateTimeDoneTime = _movieDateTimeDoneTime + readyTime * 1000;
            _gameDateTimeDoneTime  = _readyDateTimeDoneTime + gameTime * 1000;
            _endTimeTime           = _gameDateTimeDoneTime + lastTime * 1000;
            _st = new System.Diagnostics.Stopwatch();
            _st.Start();
        }
        //_StartKillExe(_endTimeTime);
    }