mirror of
https://github.com/barelyprofessional/KfChatDotNet.git
synced 2026-05-03 04:52:04 -04:00
Created initial models for kasino events
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
using KfChatDotNetBot.Models.DbModels;
|
||||
using System.ComponentModel;
|
||||
|
||||
namespace KfChatDotNetBot.Models;
|
||||
|
||||
@@ -54,4 +54,93 @@ public class NextVipLevelModel
|
||||
/// The wager requirement to reach this tier that factors in the tier
|
||||
/// </summary>
|
||||
public required decimal WagerRequirement { get; set; }
|
||||
}
|
||||
|
||||
public class KasinoEventModel
|
||||
{
|
||||
/// <summary>
|
||||
/// Text summary of the event itself such as: "How long until the chase ends?" or "Parole granted?"
|
||||
/// </summary>
|
||||
public required string EventText { get; set; }
|
||||
/// <summary>
|
||||
/// Unique reference used for tying this event to wagers gamblers are placing
|
||||
/// </summary>
|
||||
public required string EventId { get; set; }
|
||||
/// <summary>
|
||||
/// The set of options available for gamblers to select. This is only applicable to WinLose-type bets
|
||||
/// It'll be an empty array for closest to finish
|
||||
/// </summary>
|
||||
public required List<KasinoEventOptionModel> Options { get; set; } = [];
|
||||
/// <summary>
|
||||
/// The type of event this is, which is important for the purposes of calculating the payout correctly
|
||||
/// </summary>
|
||||
public required KasinoEventType EventType { get; set; }
|
||||
/// <summary>
|
||||
/// Timestamp of when the announcement message was received by the client for the purposes of calculating selection
|
||||
/// delay. This value is null when the message hasn't been seen yet (either event not started or message lost.
|
||||
/// Do not accept wagers where this is null.
|
||||
/// </summary>
|
||||
public DateTimeOffset? EventAnnouncementReceived { get; set; } = null;
|
||||
/// <summary>
|
||||
/// State of the kasino event
|
||||
/// </summary>
|
||||
public required KasinoEventState EventState { get; set; } = KasinoEventState.Incomplete;
|
||||
}
|
||||
|
||||
public class KasinoEventOptionModel
|
||||
{
|
||||
/// <summary>
|
||||
/// Unique reference used for tying a gambler's selection to a given option
|
||||
/// </summary>
|
||||
public required string OptionId { get; set; }
|
||||
/// <summary>
|
||||
/// Text to describe the option that users are picking
|
||||
/// </summary>
|
||||
public required string OptionText { get; set; }
|
||||
/// <summary>
|
||||
/// Whether this option won or not, null while incomplete
|
||||
/// </summary>
|
||||
public bool? Won { get; set; } = null;
|
||||
}
|
||||
|
||||
public enum KasinoEventType
|
||||
{
|
||||
[Description("Win/Lose")]
|
||||
WinLose,
|
||||
[Description("Closest to prediction")]
|
||||
Prediction,
|
||||
[Description("Closest to prediction (payout weighted to favor early bets)")]
|
||||
PredictionSelectionTimeWeighted,
|
||||
[Description("Win/Lose (payout weighted to favor early bets)")]
|
||||
WinLoseSelectionTimeWeighted
|
||||
}
|
||||
|
||||
public enum KasinoEventState
|
||||
{
|
||||
/// <summary>
|
||||
/// Event still under construction. This is the initial state when an admin creates an event but hasn't yet launched it
|
||||
/// </summary>
|
||||
Incomplete,
|
||||
/// <summary>
|
||||
/// Event has been launched but the announcement message hasn't yet been acknowledged by Sneedchat
|
||||
/// No bets will be processed until the message is seen
|
||||
/// If the message is ultimately lost, the event will never launch
|
||||
/// </summary>
|
||||
PendingAnnouncement,
|
||||
/// <summary>
|
||||
/// The event announcement message was seen, the event has started and wagers can now be placed
|
||||
/// </summary>
|
||||
Started,
|
||||
/// <summary>
|
||||
/// Closed to new wagers but the event is still ongoing
|
||||
/// </summary>
|
||||
Closed,
|
||||
/// <summary>
|
||||
/// Event has closed, it's so over.
|
||||
/// </summary>
|
||||
Over,
|
||||
/// <summary>
|
||||
/// Event was abandoned and all wagers canceled
|
||||
/// </summary>
|
||||
Abandoned
|
||||
}
|
||||
Reference in New Issue
Block a user