Is your feature request related to a problem or enhancement? Please describe.
A native subsystem for wheel spins, a common interaction done during subathons.
Describe the solution you'd like
Similar setup to prompts -> A "Wheel" has "Wheel Items", can have many "Wheels" but only one active. Though active does not matter in a subathon sense, and it is not tied to subathon object. Interactions are only on the currently viewable wheel.
Button to "Spin wheel". Each wheel will have a count of how many times it has been spun. Option to override this in case you mess up something or want to reset. Option to have a number field for "number of spins owed" which you can populate yourself, so you can watch it tick down - when it hits zero it will have a label saying "No spins owed!"
is there any way we could wire up
Wheel:
WheelItem:
- weight
- text
- quantity (infinite default, if quantity hits zero, it won't show up in the wheel anymore).
- bool for enabled or not (if quant is zero, disables too)
- Optional, if wheel spin is to trigger a subathon timer action, to have it auto-perform
- for ex, you can select either "add time", "subtract time", "multiplier X amount for Y time for time and/or points"
- these will be auto completed (special case for multiplier, if one is currently running, should we override it?)
WheelSpinHistory:
- wheel item (to show result)
- set it belongs to
- status of pending or completed or cancelled
- timestamps
and unique ids for em all, cascade deletes etc.
View on wheelspin page to see history. Options to Complete, Mark Pending, or Cancel (not show current one) no matter the current status.
Websocket events for wheel set change or update (only on save, add new or delete item, or swap set).
Websocket on spin trigger, to get the result of the spin
Websocket on spin status change (including initial). Only useful for external things that hook into it (add to streamerbot setup)
New discord webhook for wheelspin results and statuses.
For overlays, fetch current set and update as needed to display a wheel. On spin trigger, it already calculates the result and it's sent to UI via overlay, (Note, how do we hide the history for streamer spoilers when spinning in UI and delay stuff). Overlay is in control of the delay in spin time. but it will make sure to land on the matching WheelItem id. *If the set changes due to quantity reduction after a spin, update wheel only on new spin request or reload. I.E., if a result is displayed, do not edit the visual wheel, but like if anything else comes in, do)
option to export wheelspin history as csv
Wheelspin history: Tab for "Current Wheel" and "All Wheels". Button to "delete history" for a wheel entirely or all wheels in here too.
Wheelspin count can show modified count and history count (modified shown, history count on hover). modified count can never be below 0 of course. deleting history will do idk either subtract from the modifiable count, or not? idk.
Alternative for timing
Set a delay time for the wheel (default 5s? do we store on wheel or in config or somewhere else?) where it emits a spin event with that delay time included?
Describe alternatives you've considered
some website
Additional context
IDK
Is your feature request related to a problem or enhancement? Please describe.
A native subsystem for wheel spins, a common interaction done during subathons.
Describe the solution you'd like
Similar setup to prompts -> A "Wheel" has "Wheel Items", can have many "Wheels" but only one active. Though active does not matter in a subathon sense, and it is not tied to subathon object. Interactions are only on the currently viewable wheel.
Button to "Spin wheel". Each wheel will have a count of how many times it has been spun. Option to override this in case you mess up something or want to reset. Option to have a number field for "number of spins owed" which you can populate yourself, so you can watch it tick down - when it hits zero it will have a label saying "No spins owed!"
is there any way we could wire up
Wheel:
WheelItem:
WheelSpinHistory:
and unique ids for em all, cascade deletes etc.
View on wheelspin page to see history. Options to Complete, Mark Pending, or Cancel (not show current one) no matter the current status.
Websocket events for wheel set change or update (only on save, add new or delete item, or swap set).
Websocket on spin trigger, to get the result of the spin
Websocket on spin status change (including initial). Only useful for external things that hook into it (add to streamerbot setup)
New discord webhook for wheelspin results and statuses.
For overlays, fetch current set and update as needed to display a wheel. On spin trigger, it already calculates the result and it's sent to UI via overlay, (Note, how do we hide the history for streamer spoilers when spinning in UI and delay stuff). Overlay is in control of the delay in spin time. but it will make sure to land on the matching WheelItem id. *If the set changes due to quantity reduction after a spin, update wheel only on new spin request or reload. I.E., if a result is displayed, do not edit the visual wheel, but like if anything else comes in, do)
option to export wheelspin history as csv
Wheelspin history: Tab for "Current Wheel" and "All Wheels". Button to "delete history" for a wheel entirely or all wheels in here too.
Wheelspin count can show modified count and history count (modified shown, history count on hover). modified count can never be below 0 of course. deleting history will do idk either subtract from the modifiable count, or not? idk.
Alternative for timing
Set a delay time for the wheel (default 5s? do we store on wheel or in config or somewhere else?) where it emits a spin event with that delay time included?
Describe alternatives you've considered
some website
Additional context
IDK