Пример #1
0
        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();
        }
Пример #2
0
        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);
            });
        }
Пример #3
0
        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));
            });
        }
Пример #4
0
        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]);
                    }
                }
            }
        }
Пример #5
0
        // 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);
            });
        }
Пример #6
0
        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);
 }
Пример #8
0
 public UnturnedUserSession(UnturnedUser user, IUserSession baseSession)
 {
     User             = user;
     SessionData      = baseSession?.SessionData ?? new Dictionary <string, object>();
     SessionStartTime = baseSession?.SessionStartTime ?? DateTime.Now;
 }