goatcorp / DIPs

Dalamud Improvement Proposals
Other
9 stars 8 forks source link

Seasonal Events Feature #61

Open KazWolfe opened 1 year ago

KazWolfe commented 1 year ago

Recently, a number of developers have expressed an interest for Dalamud to have a global setting for "Seasonal Events." This feature would manifest as a simple boolean available via PluginInterface (or some global settings provider?) denoting if the user wants to participate in seasonal events.

Plugin developers may use the Seasonal Events setting to change certain behavior of plugins in response to events. Intended uses of this flag include snow themes in winter, jokes on April 1, ghost motifs in October, and similar. Developers would ultimately have complete creative control of what they would or would not like to do with the flag simply providing a unified setting across all plugins.

To plugins, this boolean setting will be read-only; it must be set in Dalamud's Settings UI or specific Dalamud interfaces. Plugin developers are encouraged to make use of this flag for seasonal events.

Per popular request, this feature must have the internal name of IsFunAllowed.

This proposal currently has a few unanswered questions that are blocking it from being codified into a DIP proper, namely:

Stakeholders: @avafloww, TBD

KazWolfe commented 1 year ago

Something discussed with @avafloww prior (over Discord) and revised:

It may be good to provide a RequestSeasonalEvents() method somewhere that plugins can call when a Seasonal Event is available. If the flag is currently unset (that is, was not explicitly enabled or disabled), users will see an induction pop-up message letting them know about the feature and giving them a chance to opt in (or out).

Use of this call would be optional, plugins may simply read the state of IsFunAllowed and act accordingly without ever prompting the user.

I (personally) see value in this specific design but this adds a few extra concerns:

karashiiro commented 1 year ago

How will we decide what does and doesn't get added to the list of holidays? That's something that varies between countries and cultures, so we'll have to be choosy about this at some level.

KazWolfe commented 1 year ago

How will we decide what does and doesn't get added to the list of holidays?

Easy answer, we don't. Plugin devs have full latitude to choose when to host their seasonal events. All we are doing is providing a single flag for them to check whether the user wants to participate in those events.

Ideally this checkbox (or whatever) will be visible year-round for exactly this purpose.

kalilistic commented 1 year ago

Opt out but eventually could be prompted as part of the new user wizard dip so people know the option exists.

kalilistic commented 1 year ago

Could have a field and an event like we do for language.

philpax commented 1 year ago

I would say make it opt-in and get the new user wizard in. You don't want an aggrieved user's first encounter with a seasonal event to be that seasonal event.