using System; using System.Collections.Generic; using System.Linq; using System.Text; using Chop.Game.Messages.IDs; using Chop.Game.Rooms; using Chop.Game.User; using Chop.Rooms; namespace Chop.Game.Messages.Incoming.navigator { class GetGuestRoomMessageComposer: IMessageHandler { public void Handle(GameClient client, RequestParser parser) { int roomID = parser.ReadInt32(); bool unk1 = parser.ReadBoolean(); // these 2 bools could have with forwarding to do bool unk2 = parser.ReadBoolean(); NavigatorRoom room = Core.NavigatorManager.GetRoom(client.mRoomUser.mEnteringRoomID); ResponseBuilder message = new ResponseBuilder(OutgoingMessages.GetGuestRoomResultEvent); message.AppendBoolean(true); // enterRoom room.AddToPacket(message); message.AppendBoolean(false); // roomForward message.AppendBoolean(true); // staffPick client.SendMessage(message); if (Core.RoomManager.ContainsRoom(client.mRoomUser.mEnteringRoomID)) client.mRoom = Core.RoomManager.GetRoom(client.mRoomUser.mEnteringRoomID); else { client.mRoom = Room.Load(client.mRoomUser.mEnteringRoomID); Core.RoomManager.AddRoom(client.mRoom); } client.mRoom.AddUser(client.mRoomUser); message = new ResponseBuilder(OutgoingMessages.HeightMapMessageEvent); message.AppendString(client.mRoom.mTemplate.Heightmap); client.SendMessage(message); message = new ResponseBuilder(OutgoingMessages.FloorHeightMapMessageEvent); message.AppendString(client.mRoom.mTemplate.Heightmap); client.SendMessage(message); message = new ResponseBuilder(OutgoingMessages.UsersMessageEvent); message.AppendInt32(client.mRoom.mUsers.Count); foreach (RoomUser user in client.mRoom.mUsers.Values) { user.AddToMessage(message); } client.SendMessage(message); } } }