// (c) 2005 kp@kp73.com
using System;
namespace KP.Tetris{
/// <summary>
/// Smallest element of the play area.
/// </summary>
public struct Cell
{
/// <summary>
/// Is the cell occupied with a section of tetramino.
/// </summary>
bool m_isOccupied;
/// <summary>
/// The colour of the cell if occupied.
/// </summary>
Colour m_colour;
/// <summary>
/// Get or set if the cell is occupied with a section of tetramino.
/// </summary>
public bool IsOccupied
{
get { return m_isOccupied; }
set { m_isOccupied = value; }
}
/// <summary>
/// Get or set the colour of the cell.
/// </summary>
public Colour CellColour
{
get { return m_colour; }
set { m_colour = value; }
}
/// <summary>
/// Initialises a new instance of the Cell structure.
/// </summary>
/// <param name="cellOccupied">Is the cell occupied with a tetramino piece.</param>
/// <param name="cellColour">The colour of the cell if occupied.</param>
internal Cell(bool cellOccupied, Colour cellColour)
{
m_isOccupied = cellOccupied;
m_colour = cellColour;
}
/// <summary>
/// Returns a value indicating whether this instance is equal to a specified object.
/// </summary>
/// <param name="obj"></param>
/// <returns></returns>
public override bool Equals(object obj)
{
if (obj.GetType() != typeof(Cell)) return false;
else
{
Cell c = (Cell)obj;
return c.IsOccupied == this.IsOccupied && c.CellColour == this.CellColour;
}
}
/// <summary>
/// Returns a value indicating whether this instance is equal to a specified object
/// </summary>
/// <param name="c1"></param>
/// <param name="c2"></param>
/// <returns></returns>
public static bool operator==(Cell c1, Cell c2)
{
return c1.Equals(c2);
}
/// <summary>
/// Returns a value indicating whether this instance is not equal to a specified object
/// </summary>
/// <param name="c1"></param>
/// <param name="c2"></param>
/// <returns></returns>
public static bool operator!=(Cell c1, Cell c2)
{
return !c1.Equals(c2);
}
/// <summary>
/// Returns the hash code for this instance.
/// </summary>
/// <returns></returns>
public override int GetHashCode()
{
return base.GetHashCode();
}
} // struct Cell
} // namespace KP.Tetris
|