Client customization late-join spawner priority for arrivals/cryostorage (#24586)
* Initial commit, requires server restart to take effect * Exposes callbacks directly instead, takes effect immediately * Cleaned up control flow, swapped cvar for client customization * Switched to int, dictionary of callbacks, migration * Update Content.Shared/Preferences/SpawnPriorityPreference.cs * krunkle stan --------- Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Co-authored-by: metalgearsloth <comedian_vs_clown@hotmail.com>
This commit is contained in:
@@ -72,6 +72,7 @@ namespace Content.Client.Preferences.UI
|
||||
private Slider _skinColor => CSkin;
|
||||
private OptionButton _clothingButton => CClothingButton;
|
||||
private OptionButton _backpackButton => CBackpackButton;
|
||||
private OptionButton _spawnPriorityButton => CSpawnPriorityButton;
|
||||
private SingleMarkingPicker _hairPicker => CHairStylePicker;
|
||||
private SingleMarkingPicker _facialHairPicker => CFacialHairPicker;
|
||||
private EyeColorPicker _eyesPicker => CEyeColorPicker;
|
||||
@@ -340,6 +341,21 @@ namespace Content.Client.Preferences.UI
|
||||
|
||||
#endregion Backpack
|
||||
|
||||
#region SpawnPriority
|
||||
|
||||
foreach (var value in Enum.GetValues<SpawnPriorityPreference>())
|
||||
{
|
||||
_spawnPriorityButton.AddItem(Loc.GetString($"humanoid-profile-editor-preference-spawn-priority-{value.ToString().ToLower()}"), (int) value);
|
||||
}
|
||||
|
||||
_spawnPriorityButton.OnItemSelected += args =>
|
||||
{
|
||||
_spawnPriorityButton.SelectId(args.Id);
|
||||
SetSpawnPriority((SpawnPriorityPreference) args.Id);
|
||||
};
|
||||
|
||||
#endregion SpawnPriority
|
||||
|
||||
#region Eyes
|
||||
|
||||
_eyesPicker.OnEyeColorPicked += newColor =>
|
||||
@@ -799,6 +815,12 @@ namespace Content.Client.Preferences.UI
|
||||
IsDirty = true;
|
||||
}
|
||||
|
||||
private void SetSpawnPriority(SpawnPriorityPreference newSpawnPriority)
|
||||
{
|
||||
Profile = Profile?.WithSpawnPriorityPreference(newSpawnPriority);
|
||||
IsDirty = true;
|
||||
}
|
||||
|
||||
public void Save()
|
||||
{
|
||||
IsDirty = false;
|
||||
@@ -974,6 +996,16 @@ namespace Content.Client.Preferences.UI
|
||||
_backpackButton.SelectId((int) Profile.Backpack);
|
||||
}
|
||||
|
||||
private void UpdateSpawnPriorityControls()
|
||||
{
|
||||
if (Profile == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
_spawnPriorityButton.SelectId((int) Profile.SpawnPriority);
|
||||
}
|
||||
|
||||
private void UpdateHairPickers()
|
||||
{
|
||||
if (Profile == null)
|
||||
@@ -1113,6 +1145,7 @@ namespace Content.Client.Preferences.UI
|
||||
UpdateSpecies();
|
||||
UpdateClothingControls();
|
||||
UpdateBackpackControls();
|
||||
UpdateSpawnPriorityControls();
|
||||
UpdateAgeEdit();
|
||||
UpdateEyePickers();
|
||||
UpdateSaveButton();
|
||||
|
||||
Reference in New Issue
Block a user