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); } }