public static Directionale ConvertIntToDir(int dir) { Directionale res = Directionale.In; switch (dir) { case 0: res = Directionale.Left; break; case 1: res = Directionale.Up; break; case 2: res = Directionale.Right; break; case 3: res = Directionale.Down; break; case 4: res = Directionale.In; break; default: res = Directionale.In; break; } return(res); }
public static Square GetSquareInDirection(Pawn pawn, Directionale dir) { Square res = null; if (CheckValidMove(pawn, dir)) { switch (dir) { case Directionale.Up: res = Board.BoardInst.Squares[(int)pawn.transform.position.x, (int)pawn.transform.position.y + 1]; break; case Directionale.Right: res = Board.BoardInst.Squares[(int)pawn.transform.position.x + 1, (int)pawn.transform.position.y]; break; case Directionale.Down: res = Board.BoardInst.Squares[(int)pawn.transform.position.x, (int)pawn.transform.position.y - 1]; break; case Directionale.Left: res = Board.BoardInst.Squares[(int)pawn.transform.position.x - 1, (int)pawn.transform.position.y]; break; case Directionale.In: if (pawn.Player1Owned) { res = Board.BoardInst.Squares[2, 0]; } else { res = Board.BoardInst.Squares[2, 4]; } break; default: Debug.Log("Pawn could not find a square"); break; } } return(res); }
public static bool CheckValidMove(Pawn pawn, Directionale dir) { bool CanIMove = false; switch (dir) { case Directionale.Up: if (pawn.transform.position.y < 4) { if (Board.BoardInst.Squares[(int)pawn.transform.position.x, (int)pawn.transform.position.y + 1].Occupant == null) { Vector3 vec = pawn.transform.position + Vector3.up; if (vec != pawn.lastPos) { CanIMove = true; } } } break; case Directionale.Right: if (pawn.transform.position.x < 4) { if (Board.BoardInst.Squares[(int)pawn.transform.position.x + 1, (int)pawn.transform.position.y].Occupant == null) { Vector3 vec = pawn.transform.position + Vector3.right; if (vec != pawn.lastPos) { CanIMove = true; } } } break; case Directionale.Down: if (pawn.transform.position.y > 0) { if (Board.BoardInst.Squares[(int)pawn.transform.position.x, (int)pawn.transform.position.y - 1].Occupant == null) { Vector3 vec = pawn.transform.position + Vector3.down; if (vec != pawn.lastPos) { CanIMove = true; } } } break; case Directionale.Left: if (pawn.transform.position.x > 0) { if (Board.BoardInst.Squares[(int)pawn.transform.position.x - 1, (int)pawn.transform.position.y].Occupant == null) { Vector3 vec = pawn.transform.position + Vector3.left; if (vec != pawn.lastPos) { CanIMove = true; } } } break; case Directionale.In: if (pawn.Player1Owned) { if (Board.BoardInst.Squares[2, 0].Occupant == null) { CanIMove = true; } else { if (!Board.BoardInst.Squares[2, 0].Occupant.GetComponent <Pawn>().Player1Owned) { CanIMove = true; } } } else { if (Board.BoardInst.Squares[2, 4].Occupant == null) { CanIMove = true; } else { if (Board.BoardInst.Squares[2, 4].Occupant.GetComponent <Pawn>().Player1Owned) { CanIMove = true; } } } break; default: throw new ArgumentOutOfRangeException("dir", dir, null); } return(CanIMove); }
public bool CheckValidMove(Directionale dir) { bool CanIMove = false; switch (dir) { case Directionale.Up: if (transform.position.y < 4) { if (Board.BoardInst.Squares[(int)transform.position.x, (int)transform.position.y + 1].Occupant == null) { Vector3 vec = transform.position + Vector3.up; if (vec != lastPos) { CanIMove = true; } } } break; case Directionale.Right: if (transform.position.x < 4) { if (Board.BoardInst.Squares[(int)transform.position.x + 1, (int)transform.position.y].Occupant == null) { Vector3 vec = transform.position + Vector3.right; if (vec != lastPos) { CanIMove = true; } } } break; case Directionale.Down: if (transform.position.y > 0) { if (Board.BoardInst.Squares[(int)transform.position.x, (int)transform.position.y - 1].Occupant == null) { Vector3 vec = transform.position + Vector3.down; if (vec != lastPos) { CanIMove = true; } } } break; case Directionale.Left: if (transform.position.x > 0) { if (Board.BoardInst.Squares[(int)transform.position.x - 1, (int)transform.position.y].Occupant == null) { Vector3 vec = transform.position + Vector3.left; if (vec != lastPos) { CanIMove = true; } } } break; default: throw new ArgumentOutOfRangeException("dir", dir, null); } return(CanIMove); }
public void Move(Directionale dir) { Thread.Sleep(50); if (!OnBoard) { Debug.Log("Not on board"); return; } switch (dir) { case Directionale.Left: if (CheckValidMove(dir)) { lastPos = transform.position; Board.BoardInst.Squares[(int)transform.position.x, (int)transform.position.y].Occupant = null; transform.position += Vector3.left; Board.BoardInst.Squares[(int)transform.position.x, (int)transform.position.y].Occupant = gameObject; } break; case Directionale.Up: if (CheckValidMove(dir)) { lastPos = transform.position; Board.BoardInst.Squares[(int)transform.position.x, (int)transform.position.y].Occupant = null; transform.position += Vector3.up; Board.BoardInst.Squares[(int)transform.position.x, (int)transform.position.y].Occupant = gameObject; } break; case Directionale.Right: if (CheckValidMove(dir)) { lastPos = transform.position; Board.BoardInst.Squares[(int)transform.position.x, (int)transform.position.y].Occupant = null; transform.position += Vector3.right; Board.BoardInst.Squares[(int)transform.position.x, (int)transform.position.y].Occupant = gameObject; } break; case Directionale.Down: if (CheckValidMove(dir)) { lastPos = transform.position; Board.BoardInst.Squares[(int)transform.position.x, (int)transform.position.y].Occupant = null; transform.position += Vector3.down; Board.BoardInst.Squares[(int)transform.position.x, (int)transform.position.y].Occupant = gameObject; } break; default: throw new ArgumentOutOfRangeException("dir", dir, null); } if (Board.BoardInst.Squares[(int)transform.position.x, (int)transform.position.y].SQColour == Colour) { Board.BoardInst.KillColour(Player1Owned, Colour); } if (GameManager.GmInst.GameMasterMode) { ResetLastPosition(); } GameManager.GmInst.Moves--; }