Пример #1
0
 void OnTriggerEnter(Collider piece)
 {
     containedPiece = piece.GetComponent <PawnBehaviourScript>();
     containedPiece.SetCurrentPosition(column, row);
     occupado = true;
     if (setupStep && (row == 7 || row == 8))
     {
         containedPiece.colour = "Black";
     }
     setupStep = false;
 }
Пример #2
0
 public void AcceptPiece(PawnBehaviourScript piece)
 {
     //containedPiece.enabled = false;
     containedPiece = piece;
     containedPiece.SetCurrentPosition(column, row);
     occupado = true;
     if (setupStep && (row == 7 || row == 8))
     {
         containedPiece.colour = "Black";
         setupStep             = false;
     }
 }
Пример #3
0
    public static ZoneScript FindContainingZone(GameObject piece)
    {
        PawnBehaviourScript p = piece.GetComponent <PawnBehaviourScript>();

        ZoneScript[] z = FindObjectsOfType <ZoneScript>();
        foreach (ZoneScript zone in z)
        {
            if (zone.column == p.currentCol && zone.row == p.currentRow)
            {
                return(zone);
            }
        }
        return(null);
    }
Пример #4
0
    public void Move(char col, int row)
    {
        GameController.FindContainingZone(this.gameObject).occupado       = false;
        GameController.FindContainingZone(this.gameObject).containedPiece = null;
        ZoneScript TargetZone = GameController.SelectZone(col, row);

        if (TargetZone.occupado)
        {
            PawnBehaviourScript targetPiece = GameController.SelectPiece(col, row);
            targetPiece.gameObject.SetActive(false);
            Destroy(targetPiece.gameObject);
        }
        this.transform.position = TargetZone.gameObject.transform.position;
        this.currentCol         = col;
        this.currentRow         = row;
        //Destroy (this.gameObject);
    }
Пример #5
0
    void GetPlayerMove()
    {
        // TODO Controller input
        if (Mathf.Abs(Input.GetAxis("Vertical")) == 1.0F || Mathf.Abs(Input.GetAxis("Horizontal")) == 1.0F)
        {
            Debug.Log("Sorry, controller input not yet supported.");
        }


        // Select default piece (king), if none selected
        if (SelectedPiece == null)
        {
            SetDefaultPiece();
        }
        // Game is over if a king can't be selected
        if (SelectedPiece == null)
        {
            GameOver();
        }

        PawnBehaviourScript piece = SelectedPiece.GetComponent <PawnBehaviourScript>();

        try
        {
            if (pieceSelect)
            {
                FindNextPiece();
            }
            else if (zoneSelect)
            {
                // Default zone is one contining selected piece
                if (TargetZone == null)
                {
                    TargetZone = SelectZone(piece.currentCol, piece.currentRow);
                }
                FindNextZone(ref TargetZone);

                //A piece and zone have been selected
                if (!pieceSelect && !zoneSelect)
                {
                    if (piece.CheckMove(TargetZone))
                    {
                        piece.Move(TargetZone.column, TargetZone.row);
                        TargetZone.AcceptPiece(piece);
                        //                            string move = piece.name + "," + TargetZone.column + TargetZone.row + "\n";
                        // TODO SaveLoad.Update(move);
                        piece         = null;
                        TargetZone    = null;
                        SelectedZone  = null;
                        SelectedPiece = null;
                        pieceSelect   = true;
                        if (player1Turn)
                        {
                            Player(2);
                        }
                        else
                        {
                            Player(1);
                        }
                    }
                    else
                    {
                        Debug.Log("Not a valid move");
                        TargetZone = SelectZone(piece.currentCol, piece.currentRow);
                        zoneSelect = true;
                    }
                }
            }
        }
        catch (System.NullReferenceException ex)
        {
            Debug.Log("Nope, nothing there. " + ex.HelpLink);
            nope.Play();
        }
        catch (System.Exception ex)
        {
            Debug.Log("Something went wrong between selecting a zone/piece and making a move. " + ex.HelpLink);
        }
    }
Пример #6
0
    public void PromotePiece(PawnBehaviourScript piece, string newType)
    {
        GameObject Replacement = new GameObject();

        if (piece.colour == "White")
        {
            switch (newType)
            {
            case "Queen":
                Replacement = (GameObject)Instantiate(queen, GameController.FindContainingZone(piece.gameObject).GetComponent <BoxCollider>().bounds.center - offset, Quaternion.AngleAxis(180, Vector3.up));
                Destroy(GameController.FindContainingZone(piece.gameObject).containedPiece.gameObject);
                Replacement.tag = "Queen";
                Replacement.AddComponent <PawnBehaviourScript>();
                Replacement.AddComponent <Rigidbody>();
                Replacement.AddComponent <BoxCollider>();
                break;

            case "Knight":
                Replacement = (GameObject)Instantiate(knight, GameController.FindContainingZone(piece.gameObject).GetComponent <BoxCollider>().bounds.center - offset, Quaternion.AngleAxis(180, Vector3.up));
                Destroy(GameController.FindContainingZone(piece.gameObject).containedPiece.gameObject);
                Replacement.tag = "Knight";
                Replacement.AddComponent <PawnBehaviourScript>();
                Replacement.AddComponent <Rigidbody>();
                Replacement.AddComponent <BoxCollider>();
                break;

            case "Rook":
                Replacement = (GameObject)Instantiate(rook, GameController.FindContainingZone(piece.gameObject).GetComponent <BoxCollider>().bounds.center - offset, Quaternion.AngleAxis(180, Vector3.up));
                Destroy(GameController.FindContainingZone(piece.gameObject).containedPiece.gameObject);
                Replacement.tag = "Rook";
                Replacement.AddComponent <PawnBehaviourScript>();
                Replacement.AddComponent <Rigidbody>();
                Replacement.AddComponent <BoxCollider>();
                break;

            case "Bishop":
                Replacement = (GameObject)Instantiate(bishop, GameController.FindContainingZone(piece.gameObject).GetComponent <BoxCollider>().bounds.center - offset, Quaternion.AngleAxis(180, Vector3.up));
                Destroy(GameController.FindContainingZone(piece.gameObject).containedPiece.gameObject);
                Replacement.tag = "Bishop";
                Replacement.AddComponent <PawnBehaviourScript>();
                Replacement.AddComponent <Rigidbody>();
                Replacement.AddComponent <BoxCollider>();
                break;

            default:
                break;
            }
        }
        else if (piece.colour == "Black")
        {
            switch (newType)
            {
            case "Queen":
                Replacement = (GameObject)Instantiate(blackQueen, GameController.FindContainingZone(piece.gameObject).GetComponent <BoxCollider>().bounds.center - offset, Quaternion.identity);
                Destroy(GameController.FindContainingZone(piece.gameObject).containedPiece.gameObject);
                Replacement.tag = "Queen";
                Replacement.AddComponent <PawnBehaviourScript>();
                Replacement.AddComponent <Rigidbody>();
                Replacement.AddComponent <BoxCollider>();
                break;

            case "Knight":
                Replacement = (GameObject)Instantiate(blackKnight, GameController.FindContainingZone(piece.gameObject).GetComponent <BoxCollider>().bounds.center - offset, Quaternion.AngleAxis(180, Vector3.up));
                Destroy(GameController.FindContainingZone(piece.gameObject).containedPiece.gameObject);
                Replacement.tag = "Knight";
                Replacement.AddComponent <PawnBehaviourScript>();
                Replacement.AddComponent <Rigidbody>();
                Replacement.AddComponent <BoxCollider>();
                break;

            case "Rook":
                Replacement = (GameObject)Instantiate(blackRook, GameController.FindContainingZone(piece.gameObject).GetComponent <BoxCollider>().bounds.center - offset, Quaternion.AngleAxis(180, Vector3.up));
                Destroy(GameController.FindContainingZone(piece.gameObject).containedPiece.gameObject);
                Replacement.tag = "Rook";
                Replacement.AddComponent <PawnBehaviourScript>();
                Replacement.AddComponent <Rigidbody>();
                Replacement.AddComponent <BoxCollider>();
                break;

            case "Bishop":
                Replacement = (GameObject)Instantiate(blackBishop, GameController.FindContainingZone(piece.gameObject).GetComponent <BoxCollider>().bounds.center - offset, Quaternion.AngleAxis(180, Vector3.up));
                Destroy(GameController.FindContainingZone(piece.gameObject).containedPiece.gameObject);
                Replacement.tag = "Bishop";
                Replacement.AddComponent <PawnBehaviourScript>();
                Replacement.AddComponent <Rigidbody>();
                Replacement.AddComponent <BoxCollider>();
                break;

            default:
                break;
            }
        }
        if (Replacement.GetComponent <PawnBehaviourScript>())
        {
            Replacement.GetComponent <PawnBehaviourScript>().colour = piece.colour;
        }
    }