public static void GuildMemberListR(MsgrClient client, Guild guild)
{
var packet = new Packet(Op.Msgr.GuildMemberListR, 0);
packet.PutByte(guild != null);
if (guild == null)
{
packet.PutLong(0);
packet.PutInt(0);
}
else
{
var members = guild.GetMembers();
packet.PutLong(guild.Id);
packet.PutInt(members.Count);
foreach (var member in members)
{
// TODO: Don't do this for every member.
var contact = (Contact)MsgrServer.Instance.Database.GetUserByCharacterId(member.CharacterId);
if (contact == null)
throw new Exception(string.Format("Contact not found for character id '0x{0:X16}'.", member.CharacterId));
var user = MsgrServer.Instance.UserManager.GetUserByCharacterId(member.CharacterId);
var status = (user == null ? ContactStatus.Offline : user.Status);
var channelName = (user == null ? "" : user.ChannelName);
packet.PutInt(contact.Id);
packet.PutByte((byte)status);
packet.PutInt((int)member.Rank);
packet.PutString(contact.FullName);
packet.PutString(channelName);
packet.PutLong(contact.LastLogin.Ticks);
}
}
client.Send(packet);
}