private void ResetHeart(HeartShape heart, int minHeight, int maxHeight, int minWidth, int maxWidth) { heart.AnimationSpeed = AnimationSpeed; heart.Height = CommonFunctions.RandomNext(minHeight, maxHeight); heart.Left = CommonFunctions.RandomNext(0, (int)ActualWidth); heart.Width = CommonFunctions.RandomNext(minWidth, maxWidth); heart.Top = heart.Height * -1; heart.Start(); }
private HeartShape CreateHeart(int minHeight, int maxHeight, int minWidth, int maxWidth) { CommonFunctions.FixMinMax(ref minHeight, ref maxHeight); CommonFunctions.FixMinMax(ref minWidth, ref maxWidth); HeartShape newHeart = new HeartShape { Fill = CommonFunctions.RandomGradientBrush <RadialGradientBrush>(), Stroke = CommonFunctions.RandomSolidColorBrush() }; ResetHeart(newHeart, minHeight, maxHeight, minWidth, maxWidth); return(newHeart); }
private void TimerTick(object sender, EventArgs e) { if (Parent != null) { double actualHeight = (double)Parent.GetValue(ActualHeightProperty); double actualWidth = (double)Parent.GetValue(ActualWidthProperty); for (int i = Children.Count - 1; i >= 0; i--) { HeartShape currentHeart = Children[i] as HeartShape; if (currentHeart != null) { if (!currentHeart.IsReallyVisible(actualHeight, actualWidth)) { currentHeart.Stop(); _Hearts.Enqueue(currentHeart); Children.RemoveAt(i); Settings.Instance.DecreaseHeartCount(); } } } int currentCount = Settings.Instance.HeartCount; if (currentCount < Settings.Instance.MaximumHearts) { int maxHearts = ((Settings.Instance.MaximumHearts - currentCount) / 10) + 1; if (maxHearts == 1) { maxHearts = 2; } int minHeight = (int)(actualHeight * (Settings.Instance.Scale / 150.0)); int maxHeight = minHeight * 2; int minWidth = (int)(actualWidth * (Settings.Instance.Scale / 150.0)); int maxWidth = minWidth * 2; int heartsToCreate = CommonFunctions.RandomNext(1, maxHearts); for (int i = 0; i < heartsToCreate; i++) { HeartShape newHeart; if (_Hearts.Count > 0) { newHeart = _Hearts.Dequeue(); newHeart.Reset(); ResetHeart(newHeart, minHeight, maxHeight, minWidth, maxWidth); } else { newHeart = CreateHeart(minHeight, maxHeight, minWidth, maxWidth); } Children.Add(newHeart); Settings.Instance.IncreaseHeartCount(); } } } }