private async void HandleSelectCharacterMessage(MsgSelectCharacter message) { var index = message.SelectedCharacterIndex; var userId = message.MsgChannel.UserId; if (!_cachedPlayerPrefs.TryGetValue(userId, out var prefsData) || !prefsData.PrefsLoaded.IsCompleted) { Logger.WarningS("prefs", $"User {userId} tried to modify preferences before they loaded."); return; } if (index < 0 || index >= MaxCharacterSlots) { return; } var curPrefs = prefsData.Prefs !; if (!curPrefs.Characters.ContainsKey(index)) { // Non-existent slot. return; } prefsData.Prefs = new PlayerPreferences(curPrefs.Characters, index); if (ShouldStorePrefs(message.MsgChannel.AuthType)) { await _db.SaveSelectedCharacterIndexAsync(message.MsgChannel.UserId, message.SelectedCharacterIndex); } }
private async void HandleSelectCharacterMessage(MsgSelectCharacter message) { await _preferencesDb.SaveSelectedCharacterIndexAsync(message.MsgChannel.SessionId.Username, message.SelectedCharacterIndex); }