Beispiel #1
0
    public IEnumerator Fill()    //填充所有网格
    {
        bool needsRefill = true; //决定是否再次填充

        while (needsRefill)      //一直循环创建直到没有配对的元素
        {
            yield return(new WaitForSeconds(0.7f));

            while (FillStep())//控制物体移动
            {
                inverse = !inverse;
                yield return(new WaitForSeconds(fillTime));
            }
            if (First == 1)
            {
                needsRefill = false;
            }
            else
            {
                needsRefill = ClearAllValidMatches();
            }
        }
        if (First != 1)
        {
            NormalPiece nor = ClearMgr.Instance.Out(); //////在此刻向外部发送消息
            FightMgr.Instance.Init(nor);               //注意,数组为引用类型,传递时不能清除
            ClearMgr.Instance.clear();                 //清空NormalPiece当前记录的消除数据
        }
        else
        {
            First++;
        }
    }
Beispiel #2
0
        public async Task TestPickAsync()
        {
            var conf         = GenerateConfiguration();
            var socketClient = GenerateSocketClient();
            var player       = GenerateGMPlayer(conf, socketClient);
            var piece        = new ShamPiece();
            var field        = new TaskField(0, 0);

            Assert.True(field.MoveHere(player));
            Assert.True(player.Holding is null);

            // Act
            bool picked = await player.PickAsync(CancellationToken.None);

            Assert.False(picked);
            Assert.True(player.Holding is null);
            Assert.Equal(MessageID.PickError, lastSended.MessageID);
            var payload = (PickErrorPayload)lastSended.Payload;

            Assert.Equal(PickError.NothingThere, payload.ErrorSubtype);
            Assert.Null(prevSended);

            // delay
            await Task.Delay(conf.PickupPenalty * 2);

            field.Put(piece);
            lastSended = null;
            picked     = await player.PickAsync(CancellationToken.None);

            Assert.True(picked);
            Assert.Equal(piece, player.Holding);
            Assert.Equal(MessageID.PickAnswer, lastSended.MessageID);

            // delay
            await Task.Delay(conf.PickupPenalty * 2);

            lastSended = null;
            picked     = await player.PickAsync(CancellationToken.None);

            Assert.False(picked);
            Assert.Equal(piece, player.Holding);
            Assert.Equal(MessageID.PickError, lastSended.MessageID);
            payload = (PickErrorPayload)lastSended.Payload;
            Assert.Equal(PickError.Other, payload.ErrorSubtype);

            // delay
            await Task.Delay(conf.PickupPenalty * 2);

            var secondPiece = new NormalPiece();

            field.Put(secondPiece);
            lastSended = null;
            picked     = await player.PickAsync(CancellationToken.None);

            Assert.False(picked);
            Assert.Equal(piece, player.Holding);
            Assert.Equal(MessageID.PickError, lastSended.MessageID);
            payload = (PickErrorPayload)lastSended.Payload;
            Assert.Equal(PickError.Other, payload.ErrorSubtype);
        }
Beispiel #3
0
        public async Task TestPutAsync()
        {
            var conf         = GenerateConfiguration();
            var socketClient = GenerateSocketClient();
            var player       = GenerateGMPlayer(conf, socketClient);
            var piece        = new NormalPiece();
            var field        = new GoalField(0, 0);

            player.Holding = piece;
            Assert.True(field.MoveHere(player));

            // Act
            (PutEvent putEvent, bool removed) = await player.PutAsync(CancellationToken.None);

            Assert.True(putEvent == PutEvent.NormalOnGoalField && removed);
            Assert.True(player.Holding is null);
            Assert.Equal(MessageID.PutAnswer, lastSended.MessageID);
            Assert.Null(prevSended);

            await Task.Delay(conf.PutPenalty * 2);

            lastSended          = null;
            (putEvent, removed) = await player.PutAsync(CancellationToken.None);

            Assert.False(putEvent == PutEvent.NormalOnGoalField || removed);
            Assert.Equal(MessageID.PutError, lastSended.MessageID);
            var payload = (PutErrorPayload)lastSended.Payload;

            Assert.Equal(PutError.AgentNotHolding, payload.ErrorSubtype);
        }
 void LoadPrefabs()
 {
     movablePiecePrefab   = Resources.Load <NormalPiece>("Prefabs/GamePieces/NormalPiece");
     backgroundPiece      = Resources.Load <GameObject>("Prefabs/GamePieces/Background");
     staticPiecePrefab    = Resources.Load <StaticPiece>("Prefabs/GamePieces/StaticPiece");
     goalPiecePrefab      = Resources.Load <GoalPiece>("Prefabs/GamePieces/Goal");
     objectivePiecePrefab = Resources.Load <ObjectivePiece>("Prefabs/GamePieces/Objective");
 }
Beispiel #5
0
        public void TestNormalPiecePut()
        {
            int         x      = 3;
            int         y      = 4;
            NormalPiece piece  = new NormalPiece();
            GoalField   field  = new GoalField(x, y);
            bool        result = field.Put(piece).putEvent == PutEvent.NormalOnGoalField ? true : false;

            Assert.True(result);
        }
Beispiel #6
0
    public void Init(NormalPiece nor)             //在Grid中调用,回合初始化主函数
    {
        this.nor = nor;                           //获取并解析本轮中消除的格子数量

        for (int i = 0; i < enemyList.Count; i++) //查找一个当前敌人
        {
            if (enemyList[i] != null)
            {
                Debug.Log("找到了一个敌人");
                CurEnemy(enemyList[i]);//设置敌人目标
                break;
            }
        }

        StartCoroutine(Fight());
        //协程控制人物动画
    }
Beispiel #7
0
    public NormalPiece Out()//传出
    {
        //Debug.Log(magic + " " + heart + " " + shield + " " + sword);
        //foreach (var item in istrue)
        //{
        //    Debug.Log(item);
        //}
        NormalPiece nor = new NormalPiece();

        nor.magic  = magic;
        nor.heart  = heart;
        nor.shield = shield;
        nor.sword  = sword;
        nor.istrue = istrue;
        //outData.Add(Skill);
        //outData.Add(Rainbow);
        //Debug.Log(magic+" "+heart+" "+shield+" "+sword);

        return(nor);
    }
Beispiel #8
0
        public void TestNormalPieceCheck()
        {
            NormalPiece piece = new NormalPiece();

            Assert.False(piece.CheckForSham());
        }
Beispiel #9
0
 public bool Compare(NormalPiece piece)
 {
     return(piece.pieceType == pieceType);
 }