protected virtual void OnPlayerConnected(SteamPlayer steamPlayer) { if (m_Users.Any(d => d.Player.SteamPlayer.Equals(steamPlayer))) { return; } var pending = m_PendingUsers.FirstOrDefault(d => d.SteamId == steamPlayer.playerID.steamID); if (pending != null) { FinishSession(pending); } var user = new UnturnedUser(this, m_UserDataStore, steamPlayer.player, pending); m_Users.Add(user); var connectedEvent = new UnturnedUserConnectedEvent(user); async UniTaskVoid EmitDelayedEvent(UnturnedUserConnectedEvent @event) { await UniTask.DelayFrame(1); await m_EventBus.EmitAsync(m_Runtime, this, @event); } EmitDelayedEvent(connectedEvent).Forget(); }
protected virtual void OnPlayerConnected(CSteamID steamID) { var pending = m_PendingUsers.FirstOrDefault(d => d.SteamId == steamID); if (pending != null) { FinishSession(pending); } var steamPlayer = PlayerTool.getSteamPlayer(steamID); if (steamPlayer == null) { return; } var user = new UnturnedUser(this, m_UserDataStore, steamPlayer.player, pending); m_Users.Add(user); AsyncContext.Run(async() => { var @event = new UnturnedUserConnectedEvent(user); await m_EventBus.EmitAsync(m_Runtime, this, @event); }); }
protected virtual void OnPlayerConnected(SteamPlayer player) { AsyncHelper.RunSync(() => { var pending = m_PendingUsers.First(d => d.SteamId == player.playerID.steamID); FinishSession(pending); var user = new UnturnedUser(m_UserDataStore, player.player, pending); m_UnturnedUsers.Add(user); var connectedEvent = new UserConnectedEvent(user); return(m_EventBus.EmitAsync(m_Runtime, this, connectedEvent)); }); }
public UnturnedUserSession(UnturnedUser user, IUserSession baseSession = null) : base(user) { SessionData = baseSession?.SessionData ?? new Dictionary <string, object>(); SessionStartTime = baseSession?.SessionStartTime ?? DateTime.Now; if (baseSession != null) { // copy instance data foreach (var key in baseSession.InstanceData.Keys) { if (!InstanceData.ContainsKey(key)) { InstanceData.Add(key, baseSession.InstanceData[key]); } } } }
// todo: memory leak, m_PendingUsers does not get cleared up when pending user gets rejected // Unturned does not have an event for handling rejections yet. protected virtual void OnPlayerConnected(SteamPlayer player) { AsyncHelper.RunSync(async() => { var pending = m_PendingUsers.First(d => d.SteamId == player.playerID.steamID); FinishSession(pending); var user = new UnturnedUser(player.player, pending) { SessionStartTime = DateTime.Now, }; m_UnturnedUsers.Add(user); var connectedEvent = new UserConnectedEvent(user); await m_EventBus.EmitAsync(m_Runtime, this, connectedEvent); }); }
protected virtual void OnPlayerConnected(SteamPlayer player) { if (m_UnturnedUsers.Any(d => d.SteamPlayer.Equals(player))) { return; } var pending = m_PendingUsers.FirstOrDefault(d => d.SteamId == player.playerID.steamID); if (pending != null) { FinishSession(pending); } var user = new UnturnedUser(m_UserDataStore, player.player, pending); m_UnturnedUsers.Add(user); var connectedEvent = new UserConnectedEvent(user); AsyncHelper.RunSync(() => m_EventBus.EmitAsync(m_Runtime, this, connectedEvent)); }
public bool Equals(UnturnedUser other) { return(other?.SteamId == SteamId); }
public UnturnedUserSession(UnturnedUser user, IUserSession baseSession) { User = user; SessionData = baseSession?.SessionData ?? new Dictionary <string, object>(); SessionStartTime = baseSession?.SessionStartTime ?? DateTime.Now; }