Example #1
0
    public override IEnumerator Loop1(int Select_Level_number)
    {
        int number = Select_Level_number - 1;

        IEnumerator e = null;

        for (int i = 0; i < LevelParameter [number].GetLength(0); i++)
        {
            var Loop = LevelParameter [number] [i, 0];

            var map = CT1.Get_arrangement(LevelParameter [number] [i, 1]);

            var random = LevelParameter [number] [i, 2];

            e = Loop2(Loop, random, map);

            yield return(StartCoroutine(e));

            if ((int)e.Current != 0)
            {
                break;
            }
        }

        yield return(e.Current);       //回傳至GameLoop
    }
Example #2
0
    public override IEnumerator Loop2(params object[] args)
    {
        var Loop     = (int)args [0];
        var random   = (int)args [1];
        var step     = (int)args [2];
        var mapIndex = (int)args [3];

        CT1.useL1DB.random = random;

        mCamera.Step(step);

        int CheckCode = 0;

        if (!CT1.useL1DB.start)
        {
            for (int j = 0; j <= mapIndex; j++)
            {
                yield return(StartCoroutine(LevelManagement(CT1.Get_arrangement(j))));
            }
        }

        for (int i = 0; i < Loop; i++)
        {
            //隨機亂數
            yield return(StartCoroutine(MakeRandom(CT1.useL1DB.random)));

            //亮燈
            yield return(StartCoroutine(ShowLight()));

            //答案比對
            yield return(StartCoroutine(AnswerCompare()));

            //重置
            yield return(StartCoroutine(Reset()));

            if (CT1.Feedback())
            {
                CheckCode = 1;
                break;
            }

            if (CT1.IfTimeOut)
            {
                CheckCode = 2;
                break;
            }
        }
        yield return(CheckCode);       //回傳至Loop1
    }
Example #3
0
    public override IEnumerator Loop2(params object[] args)
    {
        var number = (int)args [0];

        //只抓取陣列第一筆資料
        var Loop = LevelParameter [number] [0, 0, 1];

        var CameraStep = LevelParameter [number] [0, 0, 4];

        mCamera.Step(CameraStep);         //設定camera距離

        //用來使群組能順逆轉
        int dirCount = 0;
        int dir      = 1;

        int random = 0;

        for (int i = 0; i < LevelParameter [number].GetLength(0); i++)
        {
            for (int j = 0; j < LevelParameter [number].GetLength(1); j++)               //每次都從第一個開始 一直跑到最後

            {
                var mode = LevelParameter [number] [i, j, 0];

                var map = CT1.Get_arrangement(LevelParameter [number] [i, j, 2]);

                random = LevelParameter [number] [i, j, 3];

                CT1.useL1DB.random = random;

                yield return(StartCoroutine(LevelManagement(mode, Forward_OR_Reverse(ref dir, ref dirCount), map)));
            }
        }

        IEnumerator e = Loop3(Loop);

        yield return(StartCoroutine(e));

        yield return(e.Current);       //回傳至Loop1
    }