Exemplo n.º 1
0
    public override List <PieceAbstract> Attack(Transform[,] enemyPieceArray)
    {
        // 最も近い敵から攻撃(前列、手前優先、自身の位置は気にしない)
        List <PieceAbstract> targetPieces = new List <PieceAbstract>();
        bool canAttack = true;

        for (int i = 0; i < enemyPieceArray.GetLength(0); i++)
        {
            for (int j = 0; j < enemyPieceArray.GetLength(1); j++)
            {
                if (enemyPieceArray[i, j] && canAttack)
                {
                    PieceAbstract piece = enemyPieceArray[i, j].GetComponent <PieceAbstract>();

                    if (animator)
                    {
                        animator.Play("Attack01");
                    }
                    targetPieces.Add(piece);
                    //piece.GetHit(this.pieceStatus.str);
                    //攻撃は一回のみ
                    canAttack = false;
                }
            }
        }

        return(targetPieces);
    }
Exemplo n.º 2
0
 public void RegisterPiece(PieceAbstract piece)
 {
     if (piece.Filiation == PieceFiliation.player1)
     {
         player1Pieces.Add(piece);
     }
     if (piece.Filiation == PieceFiliation.player2)
     {
         player2Pieces.Add(piece);
     }
 }
Exemplo n.º 3
0
 private void setPieceToObserveTile(PieceAbstract piece)
 {
     //foreach (Transform tileTransform in playerObserveTilesParent.transform)
     //{
     //    if (!tileTransform.HasChild())
     //    {
     //        setPiece()
     //        break;
     //    }
     //}
 }
Exemplo n.º 4
0
    public void check_normal_piece_eat_not_null()
    {
        //Arrange
        var           gameObject  = new GameObject();
        PieceAbstract normalPiece = normalPiece = gameObject.AddComponent <NormalPiece>();

        //Act
        var result = normalPiece.Eat();

        //Assert
        Assert.IsNotNull(result);
    }
Exemplo n.º 5
0
    public void UnregisterPiece(PieceAbstract piece)
    {
        if (piece.Filiation == PieceFiliation.player1)
        {
            player1Pieces.Remove(piece);
        }
        if (piece.Filiation == PieceFiliation.player2)
        {
            player2Pieces.Remove(piece);
        }

        CheckForEndGameConditions();
    }
Exemplo n.º 6
0
    public void PieceEaten(PieceAbstract piece)
    {
        PieceFiliation filiation = piece.Filiation;

        if (filiation == PieceFiliation.player1)
        {
            player2Points += 1;
        }

        if (filiation == PieceFiliation.player2)
        {
            player1Points += 1;
        }

        UpdateScoreText();
    }
Exemplo n.º 7
0
    public void check_normal_piece_move_not_null()
    {
        //Arrange
        var           gameObject  = new GameObject();
        PieceAbstract normalPiece = gameObject.AddComponent <NormalPiece>();

        //Act
        normalPiece.Filiation = PieceFiliation.player1;
        var result = normalPiece.Move();

        Assert.IsNotNull(result);

        normalPiece.Filiation = PieceFiliation.player2;
        var result2 = normalPiece.Move();

        Assert.IsNotNull(result);
        //Assert
    }
Exemplo n.º 8
0
    public void check_king_piece_move_not_null()
    {
        //Arrange
        var           gameObject = new GameObject();
        PieceAbstract kingPiece  = gameObject.AddComponent <KingPiece>();


        kingPiece.Filiation = PieceFiliation.player1;
        var result = kingPiece.Move();

        Assert.IsNotNull(result);


        kingPiece.Filiation = PieceFiliation.player2;
        var result2 = kingPiece.Move();

        Assert.IsNotNull(result2);
    }
Exemplo n.º 9
0
    IEnumerator ActionAttackAll()
    {
        foreach (Transform piece in attackOrder)
        {
            PieceAbstract        pieceAbstract = piece.GetComponent <PieceAbstract>();
            List <PieceAbstract> targetPieces  = new List <PieceAbstract>();

            if (pieceAbstract.pieceSide == PieceSide.playerSide)
            {
                //pieceの配置チームを指定
                targetPieces = pieceAbstract.Attack(enemyPieceArray);
            }
            else if (pieceAbstract.pieceSide == PieceSide.enemySide)
            {
                targetPieces = pieceAbstract.Attack(playerPieceArray);
            }

            Animator anim = piece.GetComponent <Animator>();
            yield return(new WaitForSeconds(anim.GetCurrentAnimatorStateInfo(0).length / 2));

            //yield return new WaitForSeconds(anim.GetCurrentAnimatorStateInfo(0).length + anim.GetCurrentAnimatorStateInfo(0).normalizedTime);

            float maxGetHitLength = 0;
            foreach (PieceAbstract targetPiece in targetPieces)
            {
                // ダメージ処理 & アニメーション開始
                targetPiece.GetHit(pieceAbstract.pieceStatus.str);

                // 攻撃対象の中で最も長いアニメーションフレーム数を取得
                Animator targetAnim       = targetPiece.GetComponent <Animator>();
                float    targetAnimLength = targetAnim.GetCurrentAnimatorStateInfo(0).length;

                if (maxGetHitLength < targetAnimLength)
                {
                    maxGetHitLength = targetAnimLength;
                }
            }
            // ダメージアニメーションを終えてから次の攻撃処理へ
            yield return(new WaitForSeconds(maxGetHitLength));
        }
    }
Exemplo n.º 10
0
    private void SpawnPieceInThisSubMatrix(int linhaI, int linhaF, int colunaI, int colunaF, PieceFiliation filiation)
    {
        for (int i = colunaI; i < colunaF; i++)
        {
            for (int j = linhaI; j < linhaF; j++)
            {
                if ((i + j) % 2 == 0)
                {
                    Tile    tileToPutInto   = tilesMatrix[i, j];
                    Vector2 positionToSpawn = tileToPutInto.PiecePosition.position;

                    GameObject prefabToInstantiate = null;
                    prefabToInstantiate = filiation == PieceFiliation.player1 ? darkPiece : lightPiece;


                    PieceAbstract piece = Instantiate(prefabToInstantiate, positionToSpawn, Quaternion.identity).GetComponent <PieceAbstract>();
                    piece.Filiation       = filiation;
                    tileToPutInto.MyPiece = piece;

                    GameManager.Instance.RegisterPiece(piece);
                }
            }
        }
    }
Exemplo n.º 11
0
 void Start()
 {
     piece = transform.parent.gameObject.GetComponent <PieceAbstract>();
     this.initParameter();
 }