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; }
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; } }
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); }
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); }
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); } }
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; } }