public static void SerializeDelta(Stream stream, PlayerTeam instance, PlayerTeam previous) { MemoryStream memoryStream = Pool.Get <MemoryStream>(); if (instance.teamID != previous.teamID) { stream.WriteByte(8); ProtocolParser.WriteUInt64(stream, instance.teamID); } if (instance.teamName != null && instance.teamName != previous.teamName) { stream.WriteByte(18); ProtocolParser.WriteString(stream, instance.teamName); } if (instance.teamLeader != previous.teamLeader) { stream.WriteByte(24); ProtocolParser.WriteUInt64(stream, instance.teamLeader); } if (instance.members != null) { for (int i = 0; i < instance.members.Count; i++) { PlayerTeam.TeamMember item = instance.members[i]; stream.WriteByte(34); memoryStream.SetLength((long)0); PlayerTeam.TeamMember.SerializeDelta(memoryStream, item, item); uint length = (uint)memoryStream.Length; ProtocolParser.WriteUInt32(stream, length); stream.Write(memoryStream.GetBuffer(), 0, (int)length); } } Pool.FreeMemoryStream(ref memoryStream); }
public static void SerializeDelta(Stream stream, PlayerTeam.TeamMember instance, PlayerTeam.TeamMember previous) { MemoryStream memoryStream = Pool.Get <MemoryStream>(); if (instance.displayName != null && instance.displayName != previous.displayName) { stream.WriteByte(10); ProtocolParser.WriteString(stream, instance.displayName); } if (instance.userID != previous.userID) { stream.WriteByte(16); ProtocolParser.WriteUInt64(stream, instance.userID); } if (instance.healthFraction != previous.healthFraction) { stream.WriteByte(29); ProtocolParser.WriteSingle(stream, instance.healthFraction); } if (instance.position != previous.position) { stream.WriteByte(34); memoryStream.SetLength((long)0); Vector3Serialized.SerializeDelta(memoryStream, instance.position, previous.position); uint length = (uint)memoryStream.Length; ProtocolParser.WriteUInt32(stream, length); stream.Write(memoryStream.GetBuffer(), 0, (int)length); } stream.WriteByte(40); ProtocolParser.WriteBool(stream, instance.online); Pool.FreeMemoryStream(ref memoryStream); }
public override void Save(BaseNetworkable.SaveInfo info) { base.Save(info); info.msg.relationshipManager = (__Null)Pool.Get <RelationshipManager>(); ((RelationshipManager)info.msg.relationshipManager).maxTeamSize = (__Null)RelationshipManager.maxTeamSize; if (!info.forDisk) { return; } ((RelationshipManager)info.msg.relationshipManager).lastTeamIndex = (__Null)(long)this.lastTeamIndex; ((RelationshipManager)info.msg.relationshipManager).teamList = (__Null)Pool.GetList <ProtoBuf.PlayerTeam>(); foreach (KeyValuePair <ulong, RelationshipManager.PlayerTeam> playerTeam1 in this.playerTeams) { RelationshipManager.PlayerTeam playerTeam2 = playerTeam1.Value; if (playerTeam2 != null) { ProtoBuf.PlayerTeam playerTeam3 = (ProtoBuf.PlayerTeam)Pool.Get <ProtoBuf.PlayerTeam>(); playerTeam3.teamLeader = (__Null)(long)playerTeam2.teamLeader; playerTeam3.teamID = (__Null)(long)playerTeam2.teamID; playerTeam3.teamName = (__Null)playerTeam2.teamName; playerTeam3.members = (__Null)Pool.GetList <ProtoBuf.PlayerTeam.TeamMember>(); foreach (ulong member in playerTeam2.members) { ProtoBuf.PlayerTeam.TeamMember teamMember = (ProtoBuf.PlayerTeam.TeamMember)Pool.Get <ProtoBuf.PlayerTeam.TeamMember>(); BasePlayer byId = RelationshipManager.FindByID(member); teamMember.displayName = Object.op_Inequality((Object)byId, (Object)null) ? (__Null)byId.displayName : (__Null)"DEAD"; teamMember.userID = (__Null)(long)member; ((List <ProtoBuf.PlayerTeam.TeamMember>)playerTeam3.members).Add(teamMember); } ((List <ProtoBuf.PlayerTeam>)((RelationshipManager)info.msg.relationshipManager).teamList).Add(playerTeam3); } } }
public override void Load(BaseNetworkable.LoadInfo info) { base.Load(info); if (!info.fromDisk || info.msg.relationshipManager == null) { return; } this.lastTeamIndex = (ulong)((RelationshipManager)info.msg.relationshipManager).lastTeamIndex; using (List <ProtoBuf.PlayerTeam> .Enumerator enumerator1 = ((List <ProtoBuf.PlayerTeam>)((RelationshipManager)info.msg.relationshipManager).teamList).GetEnumerator()) { while (enumerator1.MoveNext()) { ProtoBuf.PlayerTeam current1 = enumerator1.Current; RelationshipManager.PlayerTeam playerTeam = (RelationshipManager.PlayerTeam)Pool.Get <RelationshipManager.PlayerTeam>(); playerTeam.teamLeader = (ulong)current1.teamLeader; playerTeam.teamID = (ulong)current1.teamID; playerTeam.teamName = (string)current1.teamName; playerTeam.members = new List <ulong>(); using (List <ProtoBuf.PlayerTeam.TeamMember> .Enumerator enumerator2 = ((List <ProtoBuf.PlayerTeam.TeamMember>)current1.members).GetEnumerator()) { while (enumerator2.MoveNext()) { ProtoBuf.PlayerTeam.TeamMember current2 = enumerator2.Current; playerTeam.members.Add((ulong)current2.userID); } } this.playerTeams[playerTeam.teamID] = playerTeam; } } }
public override void Save(BaseNetworkable.SaveInfo info) { base.Save(info); info.msg.relationshipManager = Pool.Get <ProtoBuf.RelationshipManager>(); info.msg.relationshipManager.maxTeamSize = RelationshipManager.maxTeamSize; if (info.forDisk) { info.msg.relationshipManager.lastTeamIndex = this.lastTeamIndex; info.msg.relationshipManager.teamList = Pool.GetList <ProtoBuf.PlayerTeam>(); foreach (KeyValuePair <ulong, RelationshipManager.PlayerTeam> playerTeam in this.playerTeams) { RelationshipManager.PlayerTeam value = playerTeam.Value; if (value == null) { continue; } ProtoBuf.PlayerTeam list = Pool.Get <ProtoBuf.PlayerTeam>(); list.teamLeader = value.teamLeader; list.teamID = value.teamID; list.teamName = value.teamName; list.members = Pool.GetList <ProtoBuf.PlayerTeam.TeamMember>(); foreach (ulong member in value.members) { ProtoBuf.PlayerTeam.TeamMember teamMember = Pool.Get <ProtoBuf.PlayerTeam.TeamMember>(); BasePlayer basePlayer = RelationshipManager.FindByID(member); teamMember.displayName = (basePlayer != null ? basePlayer.displayName : "DEAD"); teamMember.userID = member; list.members.Add(teamMember); } info.msg.relationshipManager.teamList.Add(list); } } }
public static PlayerTeam.TeamMember Deserialize(byte[] buffer, PlayerTeam.TeamMember instance, bool isDelta = false) { using (MemoryStream memoryStream = new MemoryStream(buffer)) { PlayerTeam.TeamMember.Deserialize(memoryStream, instance, isDelta); } return(instance); }
public void CopyTo(PlayerTeam.TeamMember instance) { instance.displayName = this.displayName; instance.userID = this.userID; instance.healthFraction = this.healthFraction; instance.position = this.position; instance.online = this.online; }
public virtual void WriteToStreamDelta(Stream stream, PlayerTeam.TeamMember previous) { if (previous == null) { PlayerTeam.TeamMember.Serialize(stream, this); return; } PlayerTeam.TeamMember.SerializeDelta(stream, this, previous); }
public static PlayerTeam.TeamMember Deserialize(byte[] buffer) { PlayerTeam.TeamMember teamMember = Pool.Get <PlayerTeam.TeamMember>(); using (MemoryStream memoryStream = new MemoryStream(buffer)) { PlayerTeam.TeamMember.Deserialize(memoryStream, teamMember, false); } return(teamMember); }
public static byte[] SerializeToBytes(PlayerTeam.TeamMember instance) { byte[] array; using (MemoryStream memoryStream = new MemoryStream()) { PlayerTeam.TeamMember.Serialize(memoryStream, instance); array = memoryStream.ToArray(); } return(array); }
public static void ResetToPool(PlayerTeam.TeamMember instance) { if (!instance.ShouldPool) { return; } instance.displayName = string.Empty; instance.userID = (ulong)0; instance.healthFraction = 0f; instance.position = new Vector3(); instance.online = false; Pool.Free <PlayerTeam.TeamMember>(ref instance); }
public static PlayerTeam.TeamMember Deserialize(Stream stream, PlayerTeam.TeamMember instance, bool isDelta) { while (true) { int num = stream.ReadByte(); if (num == -1) { break; } if (num <= 16) { if (num == 10) { instance.displayName = ProtocolParser.ReadString(stream); continue; } else if (num == 16) { instance.userID = ProtocolParser.ReadUInt64(stream); continue; } } else if (num == 29) { instance.healthFraction = ProtocolParser.ReadSingle(stream); continue; } else if (num == 34) { Vector3Serialized.DeserializeLengthDelimited(stream, ref instance.position, isDelta); continue; } else if (num == 40) { instance.online = ProtocolParser.ReadBool(stream); continue; } Key key = ProtocolParser.ReadKey((byte)num, stream); if (key.Field == 0) { throw new ProtocolBufferException("Invalid field id: 0, something went wrong in the stream"); } ProtocolParser.SkipKey(stream, key); } return(instance); }
public static void SerializeLengthDelimited(Stream stream, PlayerTeam.TeamMember instance) { byte[] bytes = PlayerTeam.TeamMember.SerializeToBytes(instance); ProtocolParser.WriteUInt32(stream, (uint)bytes.Length); stream.Write(bytes, 0, (int)bytes.Length); }
public static PlayerTeam.TeamMember DeserializeLengthDelimited(Stream stream) { PlayerTeam.TeamMember teamMember = Pool.Get <PlayerTeam.TeamMember>(); PlayerTeam.TeamMember.DeserializeLengthDelimited(stream, teamMember, false); return(teamMember); }
public static PlayerTeam.TeamMember DeserializeLength(Stream stream, int length) { PlayerTeam.TeamMember teamMember = Pool.Get <PlayerTeam.TeamMember>(); PlayerTeam.TeamMember.DeserializeLength(stream, length, teamMember, false); return(teamMember); }
public PlayerTeam.TeamMember Copy() { PlayerTeam.TeamMember teamMember = Pool.Get <PlayerTeam.TeamMember>(); this.CopyTo(teamMember); return(teamMember); }