public ProgressbarStarView(ProgressbarStar progressbar, double width, double height)
     : base(width, height)
 {
     PropagateClick = false;
     BackgroundColor = new Color(225, 225, 225);
     Build(progressbar);
 }
 public void Remove(ProgressbarStar level)
 {
     if (StarLevels.Contains(level))
     {
         StarLevels.Remove(level);
     }
 }
 public void Add(ProgressbarStar level)
 {
     if (!StarLevels.Contains(level))
     {
         StarLevels.Add(level);
     }
 }
 public void Build(ProgressbarStar progressbar)
 {
     progress = new View(0, 0, Math.Min(Width, Math.Max(0, Width * progressbar.Percentage)), Height) { BackgroundColor = new Color(40, 175, 100) };
     stars = new List<ImageView>();
     stars.AddRange(progressbar.ActivatedStarPercentages().Select(
         (starPercentage) =>
         {
             return new ImageView("star_activated.png", Height, Height)
             {
                 X = (double)starPercentage * Width - Height
             };
         }
         ));
     stars.AddRange(progressbar.DeactivatedStarPercentages().Select(
         (starPercentage) =>
         {
             return new ImageView("star.png", Height, Height)
             {
                 X = (double)starPercentage * Width - Height
             };
         }
         ));
     double? lastX = null;
     int numberOfEqualX = 1;
     for (int index = 0; index < stars.Count; index++)
     {
         if (stars[index].X - lastX < double.Epsilon)
         {
             stars[index].X -= numberOfEqualX * (stars[index].Width / 2);
             numberOfEqualX++;
         }
         else
         {
             lastX = stars[index].X;
         }
     }
     Children = new List<View>();
     Children.Add(progress);
     Children.AddRange(stars);
 }
예제 #5
0
        /// <summary>
        /// Sets up the model to complete the level.
        /// </summary>
        /// <param name="level">The desired level.</param>
        /// <param name="category">The desired category.</param>
        public void SetLevel(int level, int category)
        {
            User.CurrentLevelIndex = level;
            User.CurrentCategoryIndex = category;
            ExpressionSerializer serializer = new ExpressionSerializer();
            int endValue = serializer.Deserialize(User.Categories[category][level].StarExpressions.Last()).Size;
            int startValue = serializer.Deserialize(User.Categories[category][level].StartExpression).Size;
            int currentValue = serializer.Deserialize(User.Categories[category][level].CurrentExpression).Size;
            ProgressBar = new ProgressbarStar(startValue, endValue, currentValue);
            StarExpressions = new List<ExpressionBase>();

            foreach (string starExpression in User.CurrentLevel.StarExpressions)
            {
                ExpressionBase starExpressionBase = serializer.Deserialize(starExpression);
                StarExpressions.Add(starExpressionBase);
                ProgressBar.Add(starExpressionBase.Size);
            }
            ExprModel = new ExpressionModel(User.Categories[category][level].CurrentExpression, (m) => onExpressionChanged(m),
                Rules.ExponentToProductRule, Rules.ProductToExponentRule,
                Rules.VariableWithNegativeExponent, Rules.ReverseVariableWithNegativeExponent, Rules.ExponentProduct,
                Rules.CommonPowerParenthesisRule, Rules.ReverseCommonPowerParenthesisRule, Rules.SplittingFractions, Rules.ProductParenthesis,
                Rules.ReverseProductParenthesis, Rules.ParenthesisPowerRule, Rules.FractionToProductRule, Rules.SquareRootRule,
                Rules.RemoveParenthesisRule, Rules.ProductOfConstantAndFraction, Rules.FactorizeUnaryMinus, Rules.FactorizationRule,
                Rules.MultiplyOneRule, Rules.AddFractionWithCommonDenominatorRule, Rules.RemoveNull, Rules.MultiplyByNull,
                Rules.CalculateVariadicRule, Rules.CalculateBinaryRule, Rules.MultiplyMinusRule, Rules.DivisionEqualsOneRule, Rules.ProductOfFractions, Rules.VariablesEqualNull);
            UpdateLevelData();
            onExpressionChanged(ExprModel);
        }
 public void Update(ProgressbarStar progressbar)
 {
     Build(progressbar);
 }