コード例 #1
0
    public void UserPressedTile(SC_TileLogic tile)
    {
        print("currentTile is: " + GameBoard[tile.Row][tile.Col].tileStatus);
        if (currentSelectedPiece.piece != null)
        {
            if ((SC_Globals.GamePhase == SC_Globals.GameSituation.setPieces) && (tile.Row < 4))
            {
                if (GameBoard[tile.Row][tile.Col].tileStatus == SC_DefiendVariables.TileStatus.Empty)
                {
                    if (currentSelectedPiece.piece.currentTileRow != -1 && currentSelectedPiece.piece.currentTileCol != -1)
                    {
                        SC_Globals.instance.numOfDeployedBluePieces++;
                    }
                }
                MovePieceWhenEmpty(tile);
                if (SC_Globals.instance.numOfDeployedBluePieces == 40)
                {
                    SC_View.Instance.StartButton.SetActive(true);
                }
            }

            else if (SC_Globals.GamePhase == SC_Globals.GameSituation.Running)
            {
                if (currentTurn == SC_DefiendVariables.Turn.blueTurn)
                {
                    for (int i = 0; i < 4; i++)
                    {
                        print("[row]= " + validCoordinates[i].Row + " [Col]= " + validCoordinates[i].Col);

                        if (currentTurn == SC_DefiendVariables.Turn.blueTurn)
                        {
                            if ((validCoordinates[i].Row == tile.Row) && (validCoordinates[i].Col == tile.Col))
                            {
                                print("[Tile.row]= " + tile.Row + " [Tile.Col]= " + tile.Col);
                                pieceHasBeenSelected = true;
                                if (GameBoard[tile.Row][tile.Col].tileStatus == SC_DefiendVariables.TileStatus.Empty)
                                {
                                    MovePieceWhenEmpty(tile);
                                }
                                else if (GameBoard[tile.Row][tile.Col].tileStatus == SC_DefiendVariables.TileStatus.RedOccupied)
                                {
                                    fight(tile);
                                    ResetValidCoordinates();
                                }


                                //SC_View.Instance.movePieceToNewLocation(currentSelectedPiece.piece, tile);
                                ResetValidCoordinates();
                                SwitchTurn();
                            }
                        }
                    }
                }
            }
        }
    }
コード例 #2
0
ファイル: SC_View.cs プロジェクト: omrifin/Stratego
 public void movePieceToNewLocation(SC_PieceLogic piece, SC_TileLogic tile)
 {
     SC_Logic.Instance.EmptyPieceTile(piece);
     piece.transform.position = tile.transform.position;
     //print("tile row = " + tile.Row + " tile col= " + tile.Col);
     SC_Logic.Instance.GameBoard[tile.Row][tile.Col].tileStatus = SC_DefiendVariables.TileStatus.BlueOccupied;
     if (SC_Globals.currentSitutation == SC_Globals.GameSituation.setPieces)
     {
         disableHintColorBeforeGameStart();
     }
 }
コード例 #3
0
    private void MovePieceWhenDefeatEnemy(SC_PieceLogic attack, SC_TileLogic tile)
    {
        GameBoard[attack.currentTileRow][attack.currentTileCol].piece = null;
        GameBoard[tile.Row][tile.Col].tileStatus = GameBoard[attack.currentTileRow][attack.currentTileCol].tileStatus;
        GameBoard[attack.currentTileRow][attack.currentTileCol].tileStatus = SC_DefiendVariables.TileStatus.Empty;
        attack.currentTileRow = tile.Row;
        attack.currentTileCol = tile.Col;
        GameBoard[tile.Row][tile.Col].piece = attack;

        SC_View.Instance.movePieceToNewLocation(attack, tile);
    }
コード例 #4
0
ファイル: SC_Logic.cs プロジェクト: omrifin/Stratego
 private void SearchTile(SC_TileLogic tile)
 {
     for (int i = 0; i < 10; i++)
     {
         for (int j = 0; j < 10; j++)
         {
             if (GameBoard[i][j].tile == tile)
             {
                 GameBoard[i][j].tileStatus = SC_DefiendVariables.TileStatus.Empty;
             }
         }
     }
 }
コード例 #5
0
ファイル: SC_Logic.cs プロジェクト: omrifin/Stratego
    public void CheckIfUserWantsToFight(SC_PieceLogic redPiece, SC_TileLogic tile)
    {
        print("redPiece= " + redPiece.name + " maybe blue= " + currentSelectedPiece.piece.name);

        if (currentSelectedPiece.piece != null)
        {
            if ((Math.Abs(currentSelectedPiece.piece.currentTileRow - redPiece.currentTileRow) == 0) && (Math.Abs(currentSelectedPiece.piece.currentTileCol - redPiece.currentTileCol) == 1) ||
                (Math.Abs(currentSelectedPiece.piece.currentTileRow - redPiece.currentTileRow) == 1) && (Math.Abs(currentSelectedPiece.piece.currentTileCol - redPiece.currentTileCol) == 0))
            {
                fight(tile);
            }
        }
    }
コード例 #6
0
 private void KillPiece(SC_PieceLogic defender, SC_TileLogic tile)
 {
     GameBoard[defender.currentTileRow][defender.currentTileCol].tileStatus = SC_DefiendVariables.TileStatus.Empty;
     GameBoard[defender.currentTileRow][defender.currentTileCol].piece      = null;
     GameBoard[tile.Row][tile.Col].tileStatus = SC_DefiendVariables.TileStatus.Empty;
     GameBoard[tile.Row][tile.Col].piece      = null;
     defender.currentTileRow = -1;
     defender.currentTileCol = -1;
     SC_View.Instance.KillPiece(defender);
     if (currentTurn == SC_DefiendVariables.Turn.RedTurn)
     {
         enemyArray.Remove(defender);
     }
 }
コード例 #7
0
ファイル: SC_Logic.cs プロジェクト: omrifin/Stratego
 private void KillPiece(SC_PieceLogic defender, SC_TileLogic tile)
 {
     print("KillPiece");
     GameBoard[defender.currentTileRow][defender.currentTileCol].tileStatus = SC_DefiendVariables.TileStatus.Empty;
     GameBoard[defender.currentTileRow][defender.currentTileCol].piece      = null;
     GameBoard[tile.Row][tile.Col].tileStatus = SC_DefiendVariables.TileStatus.Empty;
     GameBoard[tile.Row][tile.Col].piece      = null;
     defender.currentTileRow = -1;
     defender.currentTileCol = -1;
     SC_View.Instance.KillPiece(defender);
     if (defender.whoAmI == SC_DefiendVariables.whoAmI.Red)
     {
         enemyArray.Remove(defender);
         //enemyArrayCount--;
     }
 }
コード例 #8
0
ファイル: SC_Logic.cs プロジェクト: omrifin/Stratego
    public void MovePieceWhenEmpty(SC_TileLogic tile)
    {
        GameBoard[tile.Row][tile.Col].tileStatus = SC_DefiendVariables.TileStatus.BlueOccupied;
        GameBoard[tile.Row][tile.Col].piece      = currentSelectedPiece.piece;
        SC_View.Instance.movePieceToNewLocation(currentSelectedPiece.piece, tile);
        if (currentSelectedPiece.piece.currentTileRow != -1)
        {
            GameBoard[currentSelectedPiece.piece.currentTileRow][currentSelectedPiece.piece.currentTileCol].piece      = null;
            GameBoard[currentSelectedPiece.piece.currentTileRow][currentSelectedPiece.piece.currentTileCol].tileStatus = SC_DefiendVariables.TileStatus.Empty;
        }
        currentSelectedPiece.piece.currentTileRow = tile.Row;
        currentSelectedPiece.piece.currentTileCol = tile.Col;

        //GameBoard[currentSelectedPiece.piece.currentTileRow =
        currentSelectedPiece.piece = null;
        currentSelectedPiece.tile  = null;

        SC_View.Instance.HideValidPlacements();
    }
コード例 #9
0
ファイル: SC_Logic.cs プロジェクト: omrifin/Stratego
    private void MovePieceWhenDefeatEnemy(SC_PieceLogic attack, SC_TileLogic tile)
    {
        GameBoard[attack.currentTileRow][attack.currentTileCol].piece = null;
        GameBoard[tile.Row][tile.Col].tileStatus = GameBoard[attack.currentTileRow][attack.currentTileCol].tileStatus;
        GameBoard[attack.currentTileRow][attack.currentTileCol].tileStatus = SC_DefiendVariables.TileStatus.Empty;
        attack.currentTileRow = tile.Row;
        attack.currentTileCol = tile.Col;
        GameBoard[tile.Row][tile.Col].piece = attack;
        if (attack.whoAmI == SC_DefiendVariables.whoAmI.Blue)
        {
            SC_View.Instance.movePieceToNewLocation(attack, tile);
        }


        if (attack.whoAmI == SC_DefiendVariables.whoAmI.Red)
        {
            SC_View.Instance.movePieceToNewLocation(attack, tile);
            //if(attack.whoAmI == SC_DefiendVariables.whoAmI.Red)
            //StartCoroutine(ShowRedPieceStrengh(attack));
            redWinnerPiece = attack;
            ShowRedPieceStrength();
        }
    }
コード例 #10
0
ファイル: SC_Controller.cs プロジェクト: omrifin/Stratego
 public void UserPressedTile(SC_TileLogic sC_TileLogic)
 {
     SC_Logic.Instance.UserPressedTile(sC_TileLogic);
 }
コード例 #11
0
ファイル: SC_View.cs プロジェクト: omrifin/Stratego
 public void movePieceToNewLocation(SC_PieceLogic piece, SC_TileLogic tile)
 {
     //Vector3.MoveTowards(tile.transform.position, piece.transform.position,50f);
     //piece.transform.position = Vector2.MoveTowards(piece.transform.position, tile.transform.position, 50f);
     piece.transform.position = tile.transform.position;
 }
コード例 #12
0
ファイル: SC_Logic.cs プロジェクト: omrifin/Stratego
 private void GameOver(SC_TileLogic tile)
 {
     //print(v);
 }
コード例 #13
0
ファイル: SC_Logic.cs プロジェクト: omrifin/Stratego
    public void fight(SC_TileLogic tile)
    {
        SC_PieceLogic attack   = currentSelectedPiece.piece;
        SC_PieceLogic defender = GameBoard[tile.Row][tile.Col].piece;

        print("currentAttacker= " + currentTurn + "[" + attack.currentTileRow + "][" + attack.currentTileCol + "].strengh = " + attack.pieceStrengh);
        print("currentAttacker= " + currentTurn + "[" + defender.currentTileRow + "][" + defender.currentTileCol + "].strengh = " + defender.pieceStrengh);
        if ((attack.pieceStrengh == SC_Globals.SoldierRank.spy) && (defender.pieceStrengh == SC_Globals.SoldierRank.ten))
        {
            //spy captured your marshell
            KillPiece(defender, tile);
            MovePieceWhenDefeatEnemy(attack, tile);
            SwitchTurn();
        }
        else if ((defender.pieceStrengh == SC_Globals.SoldierRank.bomb) && (attack.pieceStrengh == SC_Globals.SoldierRank.three))
        {
            //defuse the bomb!
            KillPiece(defender, tile);
            MovePieceWhenDefeatEnemy(attack, tile);
            SwitchTurn();
        }

        else if (defender.pieceStrengh == SC_Globals.SoldierRank.flag)
        {
            print("GAMEOVER");
            SC_Globals.GamePhase = SC_Globals.GameSituation.Finished;
            SC_View.Instance.EndGamePanel.SetActive(true);
            if (defender.whoAmI == SC_DefiendVariables.whoAmI.Blue)
            {
                SC_View.Instance.EndGameText.GetComponent <Text>().text = "Winner: Red"; //Red won!
            }
            SC_View.Instance.EndGameText.GetComponent <Text>().text = "Winner: Blue";    //blue won!
        }

        else if (defender.pieceStrengh == SC_Globals.SoldierRank.bomb)
        {
            //red steps on your bomb! he need to die!
            KillPiece(defender, tile);
            KillPiece(attack, tile);
            SwitchTurn();
        }
        else if (defender.pieceStrengh == attack.pieceStrengh)
        {
            //same strength! they r both need to die
            KillPiece(defender, tile);
            KillPiece(attack, tile);
            SwitchTurn();
        }
        else
        {
            if (attack.pieceStrengh > defender.pieceStrengh)
            {
                KillPiece(defender, tile);
                MovePieceWhenDefeatEnemy(attack, tile);
                SwitchTurn();
            }
            else
            {
                KillPiece(attack, tile);
                MovePieceWhenDefeatEnemy(defender, tile);
                SwitchTurn();
                if (defender.whoAmI == SC_DefiendVariables.whoAmI.Blue)
                {
                    GameBoard[tile.Row][tile.Col].tileStatus = SC_DefiendVariables.TileStatus.BlueOccupied;
                }

                else
                {
                    GameBoard[tile.Row][tile.Col].tileStatus = SC_DefiendVariables.TileStatus.RedOccupied;
                }
            }
        }


        currentSelectedPiece.piece = null;
        SC_View.Instance.HideValidPlacements();
    }
コード例 #14
0
ファイル: SC_View.cs プロジェクト: omrifin/Stratego
    public void showEmptySlot(int i, int j)
    {
        SC_TileLogic _tmpTile = SC_Globals.Instance.unityObjects["Grass1_Cus2(Clone)" + i + j].GetComponent <SC_TileLogic>();

        _tmpTile.GetComponent <SpriteRenderer>().color = new Color(120f, 0f, 0f, 1f);
    }