fCraft.FlatfilePlayerDBProvider.LoadBinaryFormat0 C# (CSharp) Method

LoadBinaryFormat0() private method

private LoadBinaryFormat0 ( [ reader ) : PlayerInfo
reader [
return PlayerInfo
        PlayerInfo LoadBinaryFormat0( [NotNull] BinaryReader reader ) {
            if( reader == null ) throw new ArgumentNullException( "reader" );
            int id = Read7BitEncodedInt( reader );
            // ReSharper disable UseObjectOrCollectionInitializer
            PlayerInfo info = new PlayerInfo( id );
            // ReSharper restore UseObjectOrCollectionInitializer

            // General
            info.Name = reader.ReadString();
            info.DisplayedName = ReadString( reader );
            info.LastSeen = DateTimeUtil.ToDateTime( reader.ReadUInt32() );

            // Rank
            int rankIndex = Read7BitEncodedInt( reader );
            info.Rank = GetRankByIndex( rankIndex );
            {
                bool hasPrevRank = reader.ReadBoolean();
                if( hasPrevRank ) {
                    int prevRankIndex = Read7BitEncodedInt( reader );
                    info.PreviousRank = GetRankByIndex( prevRankIndex );
                }
            }
            info.RankChangeType = (RankChangeType)reader.ReadByte();
            if( info.RankChangeType != RankChangeType.Default ) {
                info.RankChangeDate = ReadDate( reader );
                info.RankChangedBy = ReadString( reader );
                info.RankChangeReason = ReadString( reader );
            }

            // Bans
            info.BanStatus = (BanStatus)reader.ReadByte();
            info.BanDate = ReadDate( reader );
            info.BannedBy = ReadString( reader );
            info.BanReason = ReadString( reader );
            if( info.BanStatus == BanStatus.Banned ) {
                info.BannedUntil = ReadDate( reader );
                info.LastFailedLoginDate = ReadDate( reader );
                info.LastFailedLoginIP = ReadIPAddress( reader );
            } else {
                info.UnbanDate = ReadDate( reader );
                info.UnbannedBy = ReadString( reader );
                info.UnbanReason = ReadString( reader );
            }

            // Stats
            info.FirstLoginDate = ReadDate( reader );
            info.LastLoginDate = ReadDate( reader );
            info.TotalTime = ReadTimeSpan( reader );
            info.BlocksBuilt = Read7BitEncodedInt( reader );
            info.BlocksDeleted = Read7BitEncodedInt( reader );
            if( reader.ReadBoolean() ) {
                info.BlocksDrawn = reader.ReadInt64();
            }
            info.TimesVisited = Read7BitEncodedInt( reader );
            info.MessagesWritten = Read7BitEncodedInt( reader );
            info.TimesKickedOthers = Read7BitEncodedInt( reader );
            info.TimesBannedOthers = Read7BitEncodedInt( reader );

            // Kicks
            info.TimesKicked = Read7BitEncodedInt( reader );
            if( info.TimesKicked > 0 ) {
                info.LastKickDate = ReadDate( reader );
                info.LastKickBy = ReadString( reader );
                info.LastKickReason = ReadString( reader );
            }

            // Freeze/Mute
            info.IsFrozen = reader.ReadBoolean();
            if( info.IsFrozen ) {
                info.FrozenOn = ReadDate( reader );
                info.FrozenBy = ReadString( reader );
            }
            info.MutedUntil = ReadDate( reader );
            if( info.MutedUntil != DateTime.MinValue ) {
                info.MutedBy = ReadString( reader );
            }

            // Misc
            info.Password = ReadString( reader );
            info.LastModified = ReadDate( reader );
            reader.ReadBoolean(); // info.IsOnline - skip
            info.IsHidden = reader.ReadBoolean();
            info.LastIP = ReadIPAddress(reader );
            info.LeaveReason = (LeaveReason)reader.ReadByte();
            info.BandwidthUseMode = (BandwidthUseMode)reader.ReadByte();

            return info;
        }