protected virtual void OnPendingPlayerConnecting(ValidateAuthTicketResponse_t callback, ref bool isValid, ref string explanation) { if (m_PendingUsers.Any(d => d.SteamId == callback.m_SteamID)) { return; } if (!isValid) { return; } //todo check if it is working, if not this should be patched var isPendingValid = isValid; var rejectExplanation = explanation; AsyncHelper.RunSync(async() => { var steamPending = Provider.pending.FirstOrDefault(d => d.playerID.steamID == callback.m_SteamID); if (steamPending == null) { return; } var pendingUser = new UnturnedPendingUser(m_UserDataStore, steamPending); await m_DataSeeder.SeedUserDataAsync(pendingUser.Id, pendingUser.Type, pendingUser.DisplayName); var userData = await m_UserDataStore.GetUserDataAsync(pendingUser.Id, pendingUser.Type); if (userData != null) { userData.LastSeen = DateTime.Now; userData.LastDisplayName = pendingUser.DisplayName; await m_UserDataStore.SaveUserDataAsync(userData); } m_PendingUsers.Add(pendingUser); var userConnectingEvent = new UserConnectingEvent(pendingUser); await m_EventBus.EmitAsync(m_Runtime, this, userConnectingEvent); if (!string.IsNullOrEmpty(userConnectingEvent.RejectionReason)) { isPendingValid = false; rejectExplanation = userConnectingEvent.RejectionReason; } if (userConnectingEvent.IsCancelled) { isPendingValid = false; } }); isValid = isPendingValid; explanation = rejectExplanation; }
protected virtual void OnPendingPlayerConnected(ValidateAuthTicketResponse_t callback, ref bool isvalid, ref string explanation) { var isvalid_ = isvalid; var explanation_ = explanation; AsyncHelper.RunSync(async() => { if (!isvalid_) { return; } var steamPending = Provider.pending.First(d => d.playerID.steamID == callback.m_SteamID); var pendingUser = new UnturnedPendingUser(steamPending); await m_DataSeeder.SeedUserDataAsync(pendingUser.Id, pendingUser.Type, pendingUser.DisplayName); var userData = await m_UserDataStore.GetUserDataAsync(pendingUser.Type, pendingUser.Id); userData.LastSeen = DateTime.Now; userData.LastDisplayName = pendingUser.DisplayName; await m_UserDataStore.SaveUserDataAsync(userData); pendingUser.PersistentData = userData.Data; m_PendingUsers.Add(pendingUser); var userConnectingEvent = new UserConnectingEvent(pendingUser); await m_EventBus.EmitAsync(m_Runtime, this, userConnectingEvent); if (!string.IsNullOrEmpty(userConnectingEvent.RejectionReason)) { isvalid_ = false; explanation_ = userConnectingEvent.RejectionReason; } if (userConnectingEvent.IsCancelled) { isvalid_ = false; } }); isvalid = isvalid_; explanation = explanation_; }