Exemple #1
0
        private void StartBtn_Click(object sender, RoutedEventArgs e)
        {
            if (context.Rewards.Max(x => x.Quantity) <= 0)
            {
                MessageBox.Show(this, "Sorry! there are no remaining rewards.", "Warning!", MessageBoxButton.OK, MessageBoxImage.Warning);
                return;
            }

            int CurrentWheelPint, RotateCount, StopPoint = 0;

            SettingsBtn.IsEnabled = StartBtn.IsEnabled = false;
            RotateCount           = random.Next(1, 50);

            Reward reward = null;

            while (reward == null)
            {
                reward = GetRwardByChance(context.Rewards.ToList());
                GetRewardPosetions(reward, out int Min, out int Max);
                if (reward.Posetion == 1)
                {
                    StopPoint = random.Next(random.Next(0, Min) + 1, random.Next(339, Max) + 1) + 1;
                    while (this.GetReward(StopPoint) != reward)
                    {
                        StopPoint = random.Next(random.Next(0, Min) + 1, random.Next(339, Max) + 1) + 1;
                    }
                }
                else
                {
                    StopPoint = random.Next(Min, Max) + 1;
                }
            }

            reward.Quantity--;
            context.SaveChanges();

            CurrentWheelPint = 0;
            int StopTotalPoints = (360 * RotateCount) + StopPoint + RotateCount;

            for (int i = 0; i < StopTotalPoints; i++)
            {
                var par = Dispatcher.Invoke((Action <int>)((CurI) =>
                {
                    if (CurrentWheelPint < 360)
                    {
                        CurrentWheelPint++;
                    }
                    else
                    {
                        //CurrentRotateNo++;
                        CurrentWheelPint = 0;
                    }

                    int CurrentAngle = CurrentWheelPint;
                    WheelTrans.Angle = Reward1.Angle = CurrentAngle;
                    CurrentAngle    += 45;
                    Reward2.Angle    = CurrentAngle;
                    CurrentAngle    += 45;
                    Reward3.Angle    = CurrentAngle;
                    CurrentAngle    += 45;
                    Reward4.Angle    = CurrentAngle;
                    CurrentAngle    += 45;
                    Reward5.Angle    = CurrentAngle;
                    CurrentAngle    += 45;
                    Reward6.Angle    = CurrentAngle;
                    CurrentAngle    += 45;
                    Reward7.Angle    = CurrentAngle;
                    CurrentAngle    += 45;
                    Reward8.Angle    = CurrentAngle;
                    this.UpdateLayout();
                }), DispatcherPriority.Background, i);//Background ContextIdle

                /*
                 * var task = Task.Factory.StartNew(() =>//o =>
                 * {
                 *
                 *  //Thread.Sleep(10);
                 * });
                 */
            }

            this.UpdateLayout();
            SettingsBtn.IsEnabled = StartBtn.IsEnabled = true;
            MessageBox.Show(this, "Congratulations! You won " + reward.ItemName + "!", "You won!", MessageBoxButton.OK, MessageBoxImage.Information);
        }
Exemple #2
0
        public void GetRewardPosetions(Reward reward, out int Min, out int Max)
        {
            switch (reward.Posetion)
            {
            case 1:
            {
                Min = 23;
                Max = 360;
                break;
            }

            case 8:
            {
                Min = 24;
                Max = 68;
                break;
            }

            case 7:
            {
                Min = 69;
                Max = 113;
                break;
            }

            case 6:
            {
                Min = 114;
                Max = 158;
                break;
            }

            case 5:
            {
                Min = 159;
                Max = 203;
                break;
            }

            case 4:
            {
                Min = 203;
                Max = 248;
                break;
            }

            case 3:
            {
                Min = 249;
                Max = 293;
                break;
            }

            case 2:
            {
                Min = 294;
                Max = 338;
                break;
            }

            default:
            {
                Min = 0;
                Max = 360;
                break;
            }
            }
        }