Example #1
0
        public async Task Process(ChangeUserStatus userStatus)
        {
            if (!IsLoggedIn || userStatus == null)
            {
                return;
            }
            var changed = false;

            if ((userStatus.IsInGame != null) && (User.IsInGame != userStatus.IsInGame))
            {
                if (userStatus.IsInGame == true)
                {
                    User.InGameSince = DateTime.UtcNow;
                }
                else
                {
                    User.InGameSince = null;
                }
                changed = true;
            }
            if ((userStatus.IsAfk != null) && (User.IsAway != userStatus.IsAfk))
            {
                if (userStatus.IsAfk == true)
                {
                    User.AwaySince = DateTime.UtcNow;
                }
                else
                {
                    User.AwaySince = null;
                }
                changed = true;
            }
            if (changed)
            {
                Interlocked.Increment(ref User.SyncVersion);
                await server.SyncUserToAll(this);
            }
        }