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); }
/// <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); }