public bool AddCondition(IGraphicCondition condition)
 {
     if (_conditions.ContainsKey(condition.Name)) return false;
     _conditions.Add(condition.Name, condition);
     return true;
 }
 private bool? EvaluateCondition(IGraphicCondition condition)
 {
     if (!GameGraphics.DoesDrawableExist(condition.DrawableName)) return null;
     switch (condition.GraphicConditionType)
     {
         case GraphicConditionType.Animation:
             IAnimationCondition animationCondition = (IAnimationCondition) condition;
             return EvaluateAnimationCondition(animationCondition);
         case GraphicConditionType.Position:
             IPositionCondition positionCondition = (IPositionCondition) condition;
             return EvaluatePositionCondition(positionCondition);
         case GraphicConditionType.Shape:
             IShapeCondition shapeCondition = (IShapeCondition) condition;
             return EvaluateShapeCondition(shapeCondition);
         case GraphicConditionType.String:
             StringCondition stringCondition = (StringCondition) condition;
             return EvaluateStringCondition(stringCondition);
     }
     return null;
 }