Пример #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
        private async Task OnPlayerJoin(IServiceProvider serviceProvider, object sender, UnturnedUserConnectedEvent @event)
        {
            if ([email protected]("lastMovement"))
            {
                @event.User.Session.SessionData.Add("lastMovement", DateTime.Now.TimeOfDay);
            }

            if ([email protected]("isAfk"))
            {
                @event.User.Session.SessionData.Add("isAfk", false);
            }

            await UniTask.SwitchToMainThread();

            var component = @event.User.Player.Player.transform.GetOrAddComponent <PlayerMovementCheckerComponent>();

            component.Resolve(@event.User);
        }