Play time tracking: Job timers 3: more titles: when the (#9978)
Co-authored-by: Veritius <veritiusgaming@gmail.com> Co-authored-by: metalgearsloth <comedian_vs_clown@hotmail.com>
This commit is contained in:
committed by
GitHub
parent
6b94db0336
commit
e852ada6c8
@@ -1,4 +1,5 @@
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Content.Server.Database;
|
||||
using Content.Shared.CCVar;
|
||||
@@ -43,7 +44,7 @@ namespace Content.Server.Preferences.Managers
|
||||
var index = message.SelectedCharacterIndex;
|
||||
var userId = message.MsgChannel.UserId;
|
||||
|
||||
if (!_cachedPlayerPrefs.TryGetValue(userId, out var prefsData) || !prefsData.PrefsLoaded.IsCompleted)
|
||||
if (!_cachedPlayerPrefs.TryGetValue(userId, out var prefsData) || !prefsData.PrefsLoaded)
|
||||
{
|
||||
Logger.WarningS("prefs", $"User {userId} tried to modify preferences before they loaded.");
|
||||
return;
|
||||
@@ -83,7 +84,7 @@ namespace Content.Server.Preferences.Managers
|
||||
return;
|
||||
}
|
||||
|
||||
if (!_cachedPlayerPrefs.TryGetValue(userId, out var prefsData) || !prefsData.PrefsLoaded.IsCompleted)
|
||||
if (!_cachedPlayerPrefs.TryGetValue(userId, out var prefsData) || !prefsData.PrefsLoaded)
|
||||
{
|
||||
Logger.WarningS("prefs", $"User {userId} tried to modify preferences before they loaded.");
|
||||
return;
|
||||
@@ -116,7 +117,7 @@ namespace Content.Server.Preferences.Managers
|
||||
var slot = message.Slot;
|
||||
var userId = message.MsgChannel.UserId;
|
||||
|
||||
if (!_cachedPlayerPrefs.TryGetValue(userId, out var prefsData) || !prefsData.PrefsLoaded.IsCompleted)
|
||||
if (!_cachedPlayerPrefs.TryGetValue(userId, out var prefsData) || !prefsData.PrefsLoaded)
|
||||
{
|
||||
Logger.WarningS("prefs", $"User {userId} tried to modify preferences before they loaded.");
|
||||
return;
|
||||
@@ -163,14 +164,15 @@ namespace Content.Server.Preferences.Managers
|
||||
}
|
||||
}
|
||||
|
||||
public async void OnClientConnected(IPlayerSession session)
|
||||
// Should only be called via UserDbDataManager.
|
||||
public async Task LoadData(IPlayerSession session, CancellationToken cancel)
|
||||
{
|
||||
if (!ShouldStorePrefs(session.ConnectedClient.AuthType))
|
||||
{
|
||||
// Don't store data for guests.
|
||||
var prefsData = new PlayerPrefData
|
||||
{
|
||||
PrefsLoaded = Task.CompletedTask,
|
||||
PrefsLoaded = true,
|
||||
Prefs = new PlayerPreferences(
|
||||
new[] {new KeyValuePair<int, ICharacterProfile>(0, HumanoidCharacterProfile.Random())},
|
||||
0, Color.Transparent)
|
||||
@@ -182,7 +184,6 @@ namespace Content.Server.Preferences.Managers
|
||||
{
|
||||
var prefsData = new PlayerPrefData();
|
||||
var loadTask = LoadPrefs();
|
||||
prefsData.PrefsLoaded = loadTask;
|
||||
_cachedPlayerPrefs[session.UserId] = prefsData;
|
||||
|
||||
await loadTask;
|
||||
@@ -191,6 +192,7 @@ namespace Content.Server.Preferences.Managers
|
||||
{
|
||||
var prefs = await GetOrCreatePreferencesAsync(session.UserId);
|
||||
prefsData.Prefs = prefs;
|
||||
prefsData.PrefsLoaded = true;
|
||||
|
||||
var msg = new MsgPreferencesAndSettings();
|
||||
msg.Preferences = prefs;
|
||||
@@ -203,7 +205,6 @@ namespace Content.Server.Preferences.Managers
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void OnClientDisconnected(IPlayerSession session)
|
||||
{
|
||||
_cachedPlayerPrefs.Remove(session.UserId);
|
||||
@@ -214,11 +215,6 @@ namespace Content.Server.Preferences.Managers
|
||||
return _cachedPlayerPrefs.ContainsKey(session.UserId);
|
||||
}
|
||||
|
||||
public Task WaitPreferencesLoaded(IPlayerSession session)
|
||||
{
|
||||
return _cachedPlayerPrefs[session.UserId].PrefsLoaded;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Retrieves preferences for the given username from storage.
|
||||
/// Creates and saves default preferences if they are not found, then returns them.
|
||||
@@ -303,7 +299,7 @@ namespace Content.Server.Preferences.Managers
|
||||
|
||||
private sealed class PlayerPrefData
|
||||
{
|
||||
public Task PrefsLoaded = default!;
|
||||
public bool PrefsLoaded;
|
||||
public PlayerPreferences? Prefs;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user