internal void SerializeRoomData(ServerMessage Response, bool FromView, GameClient Session, bool SendRoom = false)
{
Response.Init(Outgoing.RoomData);
Response.AppendBoolean(true);
Response.AppendInt32(Id);
Response.AppendString(Name);
Response.AppendBoolean((411510 != OwnerId && Type == "private"));
Response.AppendInt32(OwnerId);
Response.AppendString(Owner);
Response.AppendInt32(State); // room state
Response.AppendInt32(UsersNow);
Response.AppendInt32(UsersMax);
Response.AppendString(Description);
Response.AppendInt32(0); // dunno!
Response.AppendInt32(2);//Response.AppendInt32((CurrentLoadingRoom.Category == 9) ? 2 : 0); // can trade!
Response.AppendInt32(Score);
Response.AppendInt32(0);
Response.AppendInt32(Category);
if (Group != null)
{
Response.AppendInt32(Group.Id);
Response.AppendString(Group.Name);
Response.AppendString(Group.Badge);
Response.AppendString("");
}
else
{
Response.AppendInt32(0);
Response.AppendString("");
Response.AppendString("");
Response.AppendString("");
}
Response.AppendInt32(TagCount);
foreach (string Tag in Tags)
Response.AppendString(Tag);
Response.AppendInt32(0);
Response.AppendInt32(0);
Response.AppendInt32(0); // loops I,I,I,I
Response.AppendBoolean(true);
Response.AppendBoolean(true);
Response.AppendString("");
Response.AppendString("");
Response.AppendInt32(0);
Response.AppendBoolean(FromView);
Response.AppendBoolean(false);
Response.AppendBoolean(false);
Response.AppendBoolean(false);
Response.AppendInt32(WhoCanMute);
Response.AppendInt32(WhoCanKick);
Response.AppendInt32(WhoCanBan);
if (SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Id) != null)
Response.AppendBoolean(SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Id).CheckRights(Session, true));
else
Response.AppendBoolean(true);
if (SendRoom)
{
if (SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Id) != null)
SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Id).SendMessage(Response);
}
else
Session.SendMessage(Response);
}