// Use this for initialization
    void Awake()
    {
        mSp = GetComponent<ScenePrelude>();
        if (mSp == null)
            return;

        GameMain.EvtFreezeBombActive += Handle_FreezeBombActive;
        GameMain.EvtFreezeBombDeactive += Handle_FreezeBombDeactive;
    }
Example #2
0
    // Use this for initialization
    void Awake()
    {
        mSp = GetComponent <ScenePrelude>();
        if (mSp == null)
        {
            return;
        }

        GameMain.EvtFreezeBombActive   += Handle_FreezeBombActive;
        GameMain.EvtFreezeBombDeactive += Handle_FreezeBombDeactive;
    }
Example #3
0
    IEnumerator _Coro_MainProcess()
    {
        if (EvtMainProcess_FirstEnterScene != null)
        {
            EvtMainProcess_FirstEnterScene();
        }

        float tmpTime = 0F;

        while (true)
        {
            State_ = State.Normal;
            SoundMgr.PlayNewBgm();

            FishGenerator.StartFishGenerate();
            //yield return new WaitForSeconds(TimeNormalScene);

            tmpTime = Time.time;
            while (IsMainProcessPause || Time.time - tmpTime < TimeNormalScene)
            {
                yield return(0);
            }

            State_ = State.BeforeSweeping_WaitBulletClear;
            //*准备过场
            if (EvtMainProcess_PrepareChangeScene != null)
            {
                EvtMainProcess_PrepareChangeScene();
            }

            //停止玩家攻击
            foreach (Player p in Players)
            {
                p.GunInst.Fireable = false;
                p.CanChangeScore   = false;
            }
            //等待场景所有子弹消失
            Player[] tmpPlayers = new Player[Players.Length];
            for (int i = 0; i != Players.Length; ++i)
            {
                tmpPlayers[i] = Players[i];
            }
            while (true)
            {
                float numPlayerHaventBullet = 0;
                for (int i = 0; i != tmpPlayers.Length; ++i)
                {
                    if (tmpPlayers[i] != null && tmpPlayers[i].GunInst.NumBulletInWorld == 0)
                    {
                        tmpPlayers[i] = null;
                    }
                    if (tmpPlayers[i] == null)
                    {
                        ++numPlayerHaventBullet;
                    }
                }
                if (numPlayerHaventBullet == tmpPlayers.Length)
                {
                    break;
                }
                yield return(0);
            }
            State_ = State.Sweeping;
            //停止出鱼
            FishGenerator.StopFishGenerate();
            SoundMgr.StopBgm();

            //开始播放过场,清鱼
            SceneBGMgr.Sweep();
            yield return(new WaitForSeconds(SceneBGMgr.UseTime + 0.3F));

            State_ = State.Preluding;

            SoundMgr.PlayNewBgm();

            if (EvtMainProcess_FinishChangeScene != null)
            {
                EvtMainProcess_FinishChangeScene();
            }
            //恢复玩家攻击
            foreach (Player p in Players)
            {
                p.GunInst.Fireable = true;
                p.CanChangeScore   = true;
            }


            //开场鱼阵

            ScenePrelude pl = ScenePreludeMgr.DoPrelude();
            //string preludeName = pl.gameObject.name;
            //Debug.Log("sceneprelude start = " + preludeName+ "   fish num = "+NumFishAlive);
            bool waitPrelude = true;
            pl.Evt_PreludeEnd += () => { waitPrelude = false; };
            while (waitPrelude)
            {
                yield return(new WaitForSeconds(0.1F));
            }
            //Debug.Log("sceneprelude end = " + preludeName + "   fish num = " + NumFishAlive);

            //loop:下一次正常出鱼
            if (EvtMainProcess_FinishPrelude != null)
            {
                EvtMainProcess_FinishPrelude();
            }
        }
    }