Goal Description
This will require client-side changes mostly
Pages
Allow the ability to send settings as pages to client, this will handle everything on the client side rather than server side - This means settings don't need to be handled janky with keybinds since client will know the page exists
Permission Handling
Ability to only send a setting to players when they meet a specific condition
More Controlled Settings Sync
Rather than always sending all settings at once, add ability to send one at a time, or a page at a time - this will be more efficient when a setting becomes available to only send that one, or hide only that one, instead of syncing 50 settings at once, etc.
Notes
public abstract class SettingPage
{
public string Label;
public PlayerSetting[] Settings;
}
public abstract class PlayerSetting
{
public string Label;
public string Description;
public int Id;
public bool CanView(Player player) => true;
public abstract void OnBeforeSent(); // Called before sending setting to client (allows setting per player values for dropdowns etc)
public abstract void OnUpdated(); // Called on client updating value
}
Goal Description
This will require client-side changes mostly
Pages
Allow the ability to send settings as pages to client, this will handle everything on the client side rather than server side - This means settings don't need to be handled janky with keybinds since client will know the page exists
Permission Handling
Ability to only send a setting to players when they meet a specific condition
More Controlled Settings Sync
Rather than always sending all settings at once, add ability to send one at a time, or a page at a time - this will be more efficient when a setting becomes available to only send that one, or hide only that one, instead of syncing 50 settings at once, etc.
Notes