public TileChoise(TileShape tileShape, TileCriteria upCriteria = TileCriteria.DontCare, TileCriteria downCriteria = TileCriteria.DontCare, TileCriteria leftCriteria = TileCriteria.DontCare, TileCriteria rightCriteria = TileCriteria.DontCare, TileCriteria upLeftCriteria = TileCriteria.DontCare, TileCriteria downLeftCriteria = TileCriteria.DontCare, TileCriteria upRightCriteria = TileCriteria.DontCare, TileCriteria downRightCriteria = TileCriteria.DontCare) { m_upCriteria = upCriteria; m_downCriteria = downCriteria; m_leftCriteria = leftCriteria; m_rightCriteria = rightCriteria; m_upLeftCriteria = upLeftCriteria; m_downLeftCriteria = downLeftCriteria; m_upRightCriteria = upRightCriteria; m_downRightCriteria = downRightCriteria; m_tileShape = tileShape; }
bool Test(bool exists, TileCriteria criteria) { return criteria == TileCriteria.DontCare || (criteria == TileCriteria.Yes && exists) || (criteria == TileCriteria.No && !exists); }