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; } }
private void initialize() { initializeReel(); initializeQueue(); status = SpinStatus.Idle; }
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; }
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 }; } }
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); */ }
/// <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(); } }
/// <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; }
public static PlacementKind Create(int clearedLine, SpinStatus spin) { return((PlacementKind)((int)spin * 8 + clearedLine)); }
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(); } } } } }