Skip to content

Implement multi-speed tasks #25

@kierio04

Description

@kierio04

A multi-speed task is a window of time (usually 1 or 2 weeks) where you can run multiple distinct speed tasks simultaneously, allowing competitors to choose which ones they participate in, when, and in which order. Below is a list of all the changes that would need to be made to the existing speed module to achieve this functionality.

  • $/start-task is updated such that any integer from 0 to 256 in the speed-task argument is accepted.
    • 0 means not a speed task. Default value
    • 1 means regular speed task.
    • 2 to 256 means multi-speed task. 256 is a reasonable upper bound as the maximum number of ghosts you can store in an rksys.dat save file.
  • $/speed-task-length, $/speed-task-desc, and $/speed-task-reminders all have an optional first argument added specifying which task is being edited (note that $/speed-task-desc can't be used as a slash command, since it requires a multi-line argument)
    • If the speed-task parameter was set to 1, this first argument is omitted and these commands are called as usual (this prevents having to specify that you're editing the only task for normal speed tasks) (if you have a better idea, please discuss) (note that
    • Acceptable values are from 1 to the value of speed-task. Values outside this result in a warning response.
  • There is one submission array for each task
    • The submission list is a combination of all tasks, displaying who has submitted to at least one of the tasks
    • $/delete-submission, $/edit-submissions, $/get-results, $/get-submissions, $/submit also all have the optional argument as described above
  • $/requesttask is also given the same optional argument as described above
    • As usual, if the value of speed-task is 1, then this is truly optional, and omitting it will still result in the task being sent
    • If the value of speed-task is 2 or greater, then omitting the argument is not allowed, and results in a warning response.
    • The command can only be used once per task rather than once overall
    • The command can only be used if a timer for another task is not already running (i.e. you can't participate in multiple tasks at the same time)
  • For now, the public release of the task and public reminders are disabled entirely whenever speed-task is 2 or greater (i.e. for multi-speed tasks).
    • If $/requesttask is used once the requested task is in its final duration (e.g. task 3 has a length of 2 hours and they request it with 1 hour left until the deadline), then their custom deadline is simply set to the final deadline and the speed task continues as usual.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requesthelp wantedExtra attention is needed

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions