using System; using System.Collections.Generic; using System.Linq; using System.Text; using Chop.Game.Messages.IDs; using Chop.Game.Rooms; using Chop.Rooms; namespace Chop.Game.Messages.Incoming.navigator { class PopularRoomsSearchMessageComposer: IMessageHandler { public void Handle(GameClient client, RequestParser parser) { int categoryID = int.Parse(parser.ReadString()); // -1 for popular rooms int adIndex = parser.ReadInt32(); // adIndex ResponseBuilder message = new ResponseBuilder(OutgoingMessages.GuestRoomSearchResultEvent); // 451 List rooms; if (categoryID == -1) { Dictionary roomDictionary = Core.RoomManager.GetRooms(); roomDictionary = Core.RoomManager.GetRooms(); rooms = (from k in roomDictionary.Values orderby k.mUsers.Count descending select (NavigatorRoom)k).ToList(); } else { rooms = Core.NavigatorManager.GetRooms(categoryID, false); } message.AppendInt32(1); // searchType message.AppendString(""); // searchParam message.AppendInt32(rooms.Count); // room count foreach (Room room in rooms) { room.AddToPacket(message); } message.AppendBoolean(false); // is offical rooms client.SendMessage(message); } } }