mirror of
https://github.com/barelyprofessional/KfChatDotNet.git
synced 2026-05-02 04:22:04 -04:00
faster wheelspin (#11)
* fix dice lose print * dice can now display rigged results * lambchop * removed GetRandomNext * updated lambchop randomness to use GetRandomNumber() * Change lambchop game timeout to 12 seconds * lambchop quickfix * sync * wheel game * new newBalance calculation * wheel quickfix * experimental lambchop fix. Increased wheel animation time. * Wheel fix maybe? * wheelspin? * faster wheelspin
This commit is contained in:
committed by
GitHub
parent
85a5eb4dfd
commit
9583313316
@@ -38,7 +38,7 @@ public class WheelCommand : ICommand
|
|||||||
private const string HIGH_DIFFICULTY_WHEEL = "⚫⚫⚫⚫⚫⚫⚫⚫⚫⚫⚫⚫⚫⚫⚫⚫⚫⚫⚫🔴";
|
private const string HIGH_DIFFICULTY_WHEEL = "⚫⚫⚫⚫⚫⚫⚫⚫⚫⚫⚫⚫⚫⚫⚫⚫⚫⚫⚫🔴";
|
||||||
private const string MIDDLE_WHEEL_FILL = "....................⮝....................";
|
private const string MIDDLE_WHEEL_FILL = "....................⮝....................";
|
||||||
// game settings
|
// game settings
|
||||||
private const int MIN_WHEELSPIN_DELAY = 200;
|
private const int MIN_WHEELSPIN_DELAY = 100;
|
||||||
private const int MAX_WHEELSPIN_DELAY = 1000;
|
private const int MAX_WHEELSPIN_DELAY = 1000;
|
||||||
private static readonly Dictionary<string, decimal> LOW_DIFF_MULTIS = new()
|
private static readonly Dictionary<string, decimal> LOW_DIFF_MULTIS = new()
|
||||||
{
|
{
|
||||||
@@ -113,9 +113,17 @@ public class WheelCommand : ICommand
|
|||||||
// main loop
|
// main loop
|
||||||
for (int i = 0; i < stepsToTarget; i++)
|
for (int i = 0; i < stepsToTarget; i++)
|
||||||
{
|
{
|
||||||
double t = (double)i / (stepsToTarget - 1);
|
double t = (double)i / Math.Max(stepsToTarget - 1, 1);
|
||||||
double easeOut = 1 - Math.Pow(1 - t, 3); // cubic ease-out curve for 'realistic' wheelspin animation
|
|
||||||
|
// Combine sine wave for smooth deceleration with exponential ease-out
|
||||||
|
double sineEase = Math.Sin(t * Math.PI / 2); // 0 to 1, smooth acceleration
|
||||||
|
double expEase = 1 - Math.Pow(1 - t, 4); // Quartic ease-out for dramatic slow-down
|
||||||
|
|
||||||
|
// Blend both curves: start follows sine, end follows exponential
|
||||||
|
double blendFactor = t * t; // Quadratic blend - more exp influence as we progress
|
||||||
|
double easeOut = (1 - blendFactor) * sineEase + blendFactor * expEase;
|
||||||
|
|
||||||
|
// Early spins are fast, late spins are slow
|
||||||
int delay = (int)(MIN_WHEELSPIN_DELAY + easeOut * (MAX_WHEELSPIN_DELAY - MIN_WHEELSPIN_DELAY));
|
int delay = (int)(MIN_WHEELSPIN_DELAY + easeOut * (MAX_WHEELSPIN_DELAY - MIN_WHEELSPIN_DELAY));
|
||||||
await Task.Delay(delay, ctx);
|
await Task.Delay(delay, ctx);
|
||||||
wheel.RotateWheelOnce();
|
wheel.RotateWheelOnce();
|
||||||
|
|||||||
Reference in New Issue
Block a user