Пример #1
0
    private void initializeResult()
    {
        if (status == SpinStatus.Result)
        {
            int column = 1;
            int next   = 3;

            for (int i = 0; i < reel.symbol.result.Count; i++)
            {
                if (column == 1)
                {
                    reel.spin.win.line[reel.symbol.result[i]] += 1;
                }

                if (i == next)
                {
                    column++;
                    next += 3;
                }
            }

            initializeQueue();

            status = SpinStatus.Idle;
        }
    }
Пример #2
0
    private void initialize()
    {
        initializeReel();

        initializeQueue();

        status = SpinStatus.Idle;
    }
Пример #3
0
 public Piece(int kind, int x, int y, int r, SpinStatus spin)
 {
     this.kind = kind;
     this.x    = x;
     this.y    = y;
     this.r    = r;
     this.spin = spin;
 }
Пример #4
0
 public void spin()
 {
     if (status == SpinStatus.Idle)
     {
         status          = SpinStatus.Spinning;
         reel.spin.count = new List <int>()
         {
             0, 0, 0, 0, 0
         };
         reel.spin.statuses = new List <ReelSpinStatus>()
         {
             ReelSpinStatus.Start, ReelSpinStatus.Start, ReelSpinStatus.Start, ReelSpinStatus.Start, ReelSpinStatus.Start
         };
     }
 }
Пример #5
0
        float CalculateReward(SpinStatus inputStatus)
        {
            float minFalseReward = SlotsGame.Instance.SlotMachineConfig.rewardLimits.MinFalseReward;
            float maxLuckyReward = SlotsGame.Instance.SlotMachineConfig.rewardLimits.MaxLuckyReward;
            float minBigReward   = SlotsGame.Instance.SlotMachineConfig.rewardLimits.MinBigReward;
            float maxBigReward   = SlotsGame.Instance.SlotMachineConfig.rewardLimits.MaxBigReward;

            float outputReward = 0.0f;

            if (inputStatus == SpinStatus.Lose)
            {
                outputReward = 0.0f;
            }
            else if (inputStatus == SpinStatus.False)
            {
                outputReward =
                    Random.Range(minFalseReward / 100.0f, 1.0f);
            }
            else if (inputStatus == SpinStatus.Lucky)
            {
                outputReward =
                    Random.Range(1.0f, Mathf.Max((maxLuckyReward * rewardMods.LuckyFactor) / 100.0f, 1.0f));
            }
            else
            {
                outputReward =
                    Random.Range(Mathf.Max((minBigReward * rewardMods.BigWinFactor) / 100.0f, 1.0f),
                                 Mathf.Max((maxBigReward * rewardMods.BigWinFactor) / 100.0f, 1.0f));
            }

            return(outputReward);


            /*
             * //todo: override base reward by modificators
             * if (currentSpin.currentActivedMod != SpinModificatorType.None)
             * {
             *  currentSpin.finalRewardPercent = currentActivedMod.ProcessReward(currentSpin);
             * }
             * else
             * {
             *  currentSpin.finalRewardPercent = currentSpin.baseRewardPercent;
             * }
             * currentSpin.moneyReward = Mathf.RoundToInt((float)currentSpin.bet * currentSpin.finalRewardPercent);
             */
        }
Пример #6
0
        /// <summary>
        /// Change spin Status
        /// </summary>
        /// <param name="spinId"></param>
        /// <param name="spinStatus"></param>
        /// <returns></returns>
        public async Task ChangeSpinStatus(int spinId, SpinStatus spinStatus)
        {
            using (var db = _dbProvider.GetDBInstance())
            {
                db.Open();

                var changeSpinStatusSqlCmd = @"update spins
                                            set UpdatedAt=@UpdatedAt,
                                            SpinStatus=@SpinStatus
                                            where id=@Id";

                await db.ExecuteAsync(changeSpinStatusSqlCmd, new
                {
                    UpdatedAt  = DateTime.Now,
                    SpinStatus = (byte)spinStatus,
                    id         = spinId
                });

                db.Close();
            }
        }
Пример #7
0
      /// <summary>
      /// Attempt to start the spinner. Will return false if something went wrong.
      /// </summary>
      public bool Start()
      {
         //You're already running, you dingus!
         if (Running)
         {
            Log(SpinnerName + " already running!", LogLevel.Warning);
            return true;
         }

         //Initialize the spin thread and start it up.
         shouldStop = false;
         spinnerStatus = SpinStatus.None;

         ThreadStart starter = Spin;
         starter += Complete;
         spinner = new Thread(starter);
         spinner.Start();

         DateTime start = DateTime.Now;

         //Now make sure everything is running smoothly for the spinner!
         while (ReportsSpinStatus && spinnerStatus != SpinStatus.Spinning && spinnerStatus != SpinStatus.Complete)
         {
            if (spinnerStatus == SpinStatus.Error)
            {
               Stop();
               Log(SpinnerName + " failed while starting", LogLevel.Error);
               return false;
            }

            Thread.Sleep(100);
         }

         Log(SpinnerName + " started successfully", LogLevel.Debug);

         //It must've gone smoothly because the spinner is spinning.
         return true;
      }
Пример #8
0
 public static PlacementKind Create(int clearedLine, SpinStatus spin)
 {
     return((PlacementKind)((int)spin * 8 + clearedLine));
 }
Пример #9
0
    private void spinning()
    {
        for (int i = 0; i < reels.Count; i++)
        {
            if (reel.spin.count[i] <= reel.spin.duration)
            {
                Spin spin = new Spin(
                    false,
                    reels[i].transform.localPosition.y,
                    false
                    );

                if (reel.spin.statuses[i] == ReelSpinStatus.Start)
                {
                    if (spin.coordinate <= reel.spin.limit.start.max)
                    {
                        if (reel.spin.count[i] == 0)
                        {
                            if (i > 0)
                            {
                                if (reel.spin.statuses[(i - 1)] == ReelSpinStatus.Middle)
                                {
                                    spin.animate = true;

                                    spin.coordinate += (reel.spin.step / 4);
                                }
                            }
                            else
                            {
                                spin.animate = true;

                                spin.coordinate += (reel.spin.step / 4);
                            }
                        }
                    }
                    else if (spin.coordinate > reel.spin.limit.start.max)
                    {
                        reel.spin.statuses[i] = ReelSpinStatus.Middle;
                    }
                }
                else if (reel.spin.statuses[i] == ReelSpinStatus.Middle)
                {
                    if (spin.coordinate >= reel.spin.limit.middle.max)
                    {
                        spin.animate = true;

                        spin.coordinate -= reel.spin.step;

                        if (reel.spin.count[i] < reel.spin.duration)
                        {
                            if (spin.coordinate <= reel.spin.limit.middle.max)
                            {
                                spin.coordinate = reel.spin.limit.start.min;

                                spin.repeat = true;
                            }
                        }
                        else
                        {
                            if (spin.coordinate <= reel.spin.limit.end.min)
                            {
                                reel.spin.statuses[i] = ReelSpinStatus.End;
                            }
                        }
                    }
                }
                else if (reel.spin.statuses[i] == ReelSpinStatus.End)
                {
                    if (spin.coordinate <= reel.spin.limit.end.max)
                    {
                        spin.animate = true;

                        spin.coordinate += reel.spin.step;

                        if (spin.coordinate >= reel.spin.limit.end.max)
                        {
                            spin.repeat = true;

                            reel.spin.statuses[i] = ReelSpinStatus.Result;
                        }
                    }
                }

                if (spin.animate)
                {
                    reels[i].transform.localPosition = new Vector3(reels[i].transform.localPosition.x, spin.coordinate, reels[i].transform.localPosition.z);
                }

                if (spin.repeat)
                {
                    if (reel.spin.count[i] < reel.spin.duration)
                    {
                        reels[i].transform.localPosition = new Vector3(reels[i].transform.localPosition.x, reel.spin.limit.middle.min, reels[i].transform.localPosition.z);

                        int minIndex = i * 3;
                        int maxIndex = minIndex + 3;

                        for (int j = minIndex; j < maxIndex; j++)
                        {
                            reelSymbols[j].sprite  = reelSymbols_[j].sprite;
                            reelSymbols_[j].sprite = symbols[reel.symbol.queue[reel.spin.count[i]][j]];
                        }
                    }
                    else
                    {
                        reels[i].transform.localPosition = new Vector3(reels[i].transform.localPosition.x, reel.spin.limit.start.min, reels[i].transform.localPosition.z);

                        int index  = (i * 3) + 1;
                        int index_ = index - 1;
                        reelSymbols[index].sprite = reelSymbols[index_].sprite;

                        index -= 1;
                        index_ = index + 2;
                        reelSymbols[index].sprite = reelSymbols_[index_].sprite;

                        index += 2;
                        index_ = index - 1;
                        reelSymbols_[index].sprite = reelSymbols_[index_].sprite;
                    }

                    reel.spin.count[i]++;

                    bool result = true;

                    foreach (int integer in reel.spin.count)
                    {
                        if (integer <= reel.spin.duration)
                        {
                            result = false;

                            break;
                        }
                    }

                    if (result)
                    {
                        status = SpinStatus.Result;

                        initializeResult();
                    }
                }
            }
        }
    }