internal LeaderboardEntriesCallback( JobID jobID, CMsgClientLBSGetLBEntriesResponse resp ) { this.JobID = jobID; this.Result = ( EResult )resp.eresult; this.EntryCount = resp.leaderboard_entry_count; var list = new List<LeaderboardEntry>(); list.AddRange( resp.entries.Select( e => new LeaderboardEntry( e ) ) ); Entries = new ReadOnlyCollection<LeaderboardEntry>( list ); }
internal LeaderboardEntry( CMsgClientLBSGetLBEntriesResponse.Entry entry ) { GlobalRank = entry.global_rank; Score = entry.score; SteamID = new SteamID( entry.steam_id_user ); UGCId = new UGCHandle( entry.ugc_id ); var details = new List<int>(); using ( var stream = new MemoryStream( entry.details ) ) { while ( ( stream.Length - stream.Position ) >= sizeof( int ) ) { details.Add( stream.ReadInt32() ); } } Details = new ReadOnlyCollection<int>( details ); }