public bool CompareWithNumber(Field leftSideField, ComparisonSign comparisonSign, int comparedValue)
        {
            if (comparisonSign == ComparisonSign.Equal)
            {
                return(leftSideField.Piece.Number == comparedValue);
            }

            if (comparisonSign == ComparisonSign.NotEqual)
            {
                return(leftSideField.Piece.Number != comparedValue);
            }

            if (comparisonSign == ComparisonSign.Greater)
            {
                return(leftSideField.Piece.Number > comparedValue);
            }

            if (comparisonSign == ComparisonSign.GreaterEqual)
            {
                return(leftSideField.Piece.Number >= comparedValue);
            }

            if (comparisonSign == ComparisonSign.Lesser)
            {
                return(leftSideField.Piece.Number < comparedValue);
            }

            if (comparisonSign == ComparisonSign.LesserEqual)
            {
                return(leftSideField.Piece.Number <= comparedValue);
            }

            throw new ArgumentException();
        }
        public bool CompareWithBot(Field leftSideField, ComparisonSign comparisonSign)
        {
            if (IsRelationSign(comparisonSign))
            {
                return(false);                                //how can we say left > bot?
            }
            if (comparisonSign == ComparisonSign.Equal)
            {
                return(leftSideField.Bot != null);
            }

            if (comparisonSign == ComparisonSign.NotEqual)
            {
                return(leftSideField.Bot == null);
            }

            throw new ArgumentException();
        }
        public bool CompareWithWall(Field leftSideField, ComparisonSign comparisonSign)
        {
            if (IsRelationSign(comparisonSign))
            {
                return(false);                                //how can we say left > wall?
            }
            if (comparisonSign == ComparisonSign.Equal)
            {
                return(leftSideField.TileType == TileType.Wall);
            }

            if (comparisonSign == ComparisonSign.NotEqual)
            {
                return(leftSideField.TileType != TileType.Wall);
            }

            throw new ArgumentException();
        }
        public bool CompareWithItem(Field leftSideField, ComparisonSign comparisonSign)
        {
            if (IsRelationSign(comparisonSign))
            {
                return(false);                                //how can we say left > item?
            }
            if (comparisonSign == ComparisonSign.Equal)
            {
                return(leftSideField.HasItem);
            }

            if (comparisonSign == ComparisonSign.NotEqual)
            {
                return(!leftSideField.HasItem);
            }

            throw new ArgumentException();
        }
        public bool CompareWithFloor(Field leftSideField, ComparisonSign comparisonSign)
        {
            if (IsRelationSign(comparisonSign))
            {
                return(false);                                //how can we say left > nothing?
            }
            if (comparisonSign == ComparisonSign.Equal)
            {
                return(leftSideField.IsEmptyFloor);
            }

            if (comparisonSign == ComparisonSign.NotEqual)
            {
                return(!leftSideField.IsEmptyFloor);
            }

            throw new ArgumentException();
        }
 public bool CompareWithDirection(Field leftSideField, Field rightSideField, ComparisonSign comparisonSign)
 {
     throw new System.NotImplementedException();
 }
 public bool IsRelationSign(ComparisonSign comparisonSign)
 {
     return(!IsEqualitySign(comparisonSign));
 }
 public bool IsEqualitySign(ComparisonSign comparisonSign)
 {
     return(comparisonSign == ComparisonSign.Equal || comparisonSign == ComparisonSign.NotEqual);
 }