GamePiece.cs

mail@pastecode.io avatar
unknown
csharp
7 months ago
3.7 kB
1
Indexable
Never
using UnityEngine;
using System.Collections;

// This script is attached to each game piece or actual board position (game object).  Together, each game piece makes up the tic tack toe board
// see gameboard in GameBoard script.

public class GamePiece : MonoBehaviour {
	
    // Sets boundary for game board.
	public const float BOUND_MIN_X= -12;
	public const float BOUND_MAX_X= 15;
	public const float BOUND_MIN_Z= -15;
	public const float BOUND_MAX_Z= 10;
	public float spaceBetween = 1;
	
	public GameBoard.PLAYERS_ID PlayerID 
	{
		get
		{
			return playerID;
		}
		set
		{
			playerID = value;
		}
	}
	
	public int Row 
	{
		get
		{
			return row;
		}
		set
		{
			row = value;
		}
	}
	
	public int Column 
	{
		get
		{
			return column;
		}
		set
		{
			column = value;
		}
	}
	
	public bool Occupied 
	{
		get
		{
			return isOccupied;
		}
		set
		{
			isOccupied = value;
		}
	}
	
	public void SetStartPosition( Vector3 startPos )
	{
		startPosition = startPos;
	}
	
	public void SetEndPosition( Vector3 endPos )
	{
		endPosition = endPos;
	}
	
	public void SetParameters(int boardRow, int boardColumn )
	{
		row =  boardRow;
		column = boardColumn;
	}
    
    public void SetColor(Color newColor)
    {
        GetComponent<Renderer>().material.color = newColor;
    }

    // Assigns the square to be occupied by playerNum.
    public void AddPlayerToSquare(GameBoard.PLAYERS_ID playerNum, int boardRow, int boardColumn)
    {
        isOccupied = true;
        playerID = playerNum;
        row = boardRow;
        column = boardColumn;
    }
    // Initialize the "square" for game board
    public void InitPlayerSquare(int boardRow, int boardColumn)
    {
        isOccupied = false;
        playerID = GameBoard.PLAYERS_ID.PLAYER_NONE;
        row = boardRow;
        column = boardColumn;
        SetGamePiecePositions();
        SetParameters(boardRow, boardColumn);
        GetComponent<Renderer>().material.color = new Color(255, 255, 0);
    }
    #region Private Members

    private const float YPos = 2.0f;
    private GameBoard.PLAYERS_ID playerID;          // Stores the player ID of that occupies game piece/spot
    private bool isOccupied = false;                // True if player chooses a this spot

    private Vector3 startPosition = Vector3.zero;   // Allows for movement of board pieces if required
    private Vector3 endPosition = Vector3.zero;     // Allows for movement of board pieces if required

    private int row;                                // Specifies the row and column position on board grid
    private int column;


    void Awake()
    {
        spaceBetween = 4;
        row = -1;
        column = -1;
        isOccupied = false;
    }
    // Use this for initialization
    void Start () {
	
	}
	
	// Update is called once per frame
	void Update () {
		
		transform.position = endPosition;
	
	}
	private void OnMouseDown()
	{
		print("game piece " + " row " + row + " column " + column );
		GameBoard.BoardClicked( row, column, isOccupied, GameBoard.PLAYERS_ID.PLAYER_ONE );
	}
	
    // Uses the column, row data to set positions for game piece.
	private void SetGamePiecePositions()
	{
		float startX = GamePiece.BOUND_MIN_X + (column * spaceBetween);
		float endX = GamePiece.BOUND_MIN_X + (column * spaceBetween);
		
		float startZ = GamePiece.BOUND_MAX_Z;
		float endZ = GamePiece.BOUND_MAX_Z - row * spaceBetween;
		
		SetStartPosition(new Vector3(startX,YPos,startZ));
		SetEndPosition(new Vector3(endX,YPos,endZ));
	}
    #endregion
}