public override void HandleMessage(Yupi.Model.Domain.Habbo session, Yupi.Protocol.Buffers.ClientMessage request, Yupi.Protocol.IRouter router) { int roomId = request.GetInteger(); request.GetBool(); // TODO Unused RoomData roomData = RoomRepository.Find(roomId); if (roomData == null) { return; } // TODO TOGGLE?! AchievementManager.ProgressUserAchievement(roomData.Owner, RoomBuilderAchievement.StaffPickedRooms); // TODO Add room to Staff Pick category! throw new NotImplementedException(); Room room = RoomManager.GetIfLoaded(roomData); if (room != null) { room.EachUser( (entitySession) => { entitySession.Router.GetComposer <RoomDataMessageComposer>() .Compose(entitySession, roomData, entitySession.Info, true, true); }); } }
public override void HandleMessage(Yupi.Model.Domain.Habbo session, Yupi.Protocol.Buffers.ClientMessage request, Yupi.Protocol.IRouter router) { int roomId = request.GetInteger(); bool shouldAdd = request.GetBool(); string word = request.GetString(); RoomData room = RoomRepository.Find(roomId); if (room != null && room.HasOwnerRights(session.Info)) { bool hasChanged = false; if (shouldAdd) { hasChanged = room.WordFilter.Add (word); } else { hasChanged = room.WordFilter.Remove (word); } if (hasChanged) { RoomRepository.Save(room); } } }
public override void HandleMessage(Yupi.Model.Domain.Habbo session, Yupi.Protocol.Buffers.ClientMessage request, Yupi.Protocol.IRouter router) { request.GetBool(); // TODO Unused string idAsString = request.GetString(); int userId; int.TryParse(idAsString, out userId); if (userId == 0) { return; } string message = request.GetString(); Habbo guide = GuideManager.GetRandomGuide(); if (guide == null) { router.GetComposer <OnGuideSessionErrorComposer>().Compose(session); return; } router.GetComposer <OnGuideSessionAttachedMessageComposer>().Compose(session, false, userId, message, 30); router.GetComposer <OnGuideSessionAttachedMessageComposer>().Compose(guide, true, userId, message, 15); guide.GuideOtherUser = session; session.GuideOtherUser = guide; }
public override void HandleMessage(Yupi.Model.Domain.Habbo session, Yupi.Protocol.Buffers.ClientMessage request, Yupi.Protocol.IRouter router) { int groupId = request.GetInteger(); int threadId = request.GetInteger(); bool pin = request.GetBool(); bool Lock = request.GetBool(); Group theGroup = GroupRepository.Find(groupId); if (theGroup == null) { return; } GroupForumThread thread = theGroup.Forum.GetThread(threadId); if (thread.Creator == session.Info || theGroup.Admins.Contains(session.Info)) { thread.Locked = Lock; thread.Pinned = pin; } //GroupForumPost thread = new GroupForumPost(row); throw new NotImplementedException(); /* * if (thread.Pinned != pin) { * router.GetComposer<SuperNotificationMessageComposer> ().Compose (session, string.Empty, string.Empty, string.Empty, string.Empty, * pin ? "forums.thread.pinned" : "forums.thread.unpinned", 0); * } * * if (thread.Locked != Lock) { * router.GetComposer<SuperNotificationMessageComposer> ().Compose (session, string.Empty, string.Empty, string.Empty, string.Empty, * Lock ? "forums.thread.locked" : "forums.thread.unlocked", 0); * } * * router.GetComposer<GroupForumThreadUpdateMessageComposer> ().Compose (session, groupId, thread, pin, Lock); */ }
public override void HandleMessage(Yupi.Model.Domain.Habbo session, Yupi.Protocol.Buffers.ClientMessage message, Yupi.Protocol.IRouter router) { bool onDuty = message.GetBool(); // TODO Use these values message.GetBool(); message.GetBool(); message.GetBool(); if (onDuty) { GuideManager.Add(session); } else { GuideManager.Remove(session); } router.GetComposer <HelperToolConfigurationMessageComposer>().Compose(session, onDuty, GuideManager.Guides.Count, GuideManager.Helpers.Count, GuideManager.Guardians.Count); }
public override void HandleMessage(Yupi.Model.Domain.Habbo session, Yupi.Protocol.Buffers.ClientMessage request, Yupi.Protocol.IRouter router) { int groupId = request.GetInteger(); bool newWindow = request.GetBool(); Group group = GroupRepository.Find(groupId); if (group == null) { return; } router.GetComposer <GroupDataMessageComposer>().Compose(session, group, session.Info, newWindow); }
public override void HandleMessage(Yupi.Model.Domain.Habbo session, Yupi.Protocol.Buffers.ClientMessage message, Yupi.Protocol.IRouter router) { int userId = message.GetInteger(); message.GetBool(); // TODO Unused (never set to false in client?) UserInfo user = UserRepository.Find(userId); if (user == null) { return; } router.GetComposer <UserProfileMessageComposer>().Compose(session, user, session.Info); router.GetComposer <UserBadgesMessageComposer>().Compose(session, user); }
public override void HandleMessage(Yupi.Model.Domain.Habbo session, Yupi.Protocol.Buffers.ClientMessage message, Yupi.Protocol.IRouter router) { bool state = message.GetBool(); // TODO What?! if (!state) { return; } Habbo requester = session.GuideOtherUser; // TODO SessionStarted on Detach??? router.GetComposer <OnGuideSessionStartedMessageComposer>().Compose(session, requester.Info); router.GetComposer <OnGuideSessionStartedMessageComposer>().Compose(requester, requester.Info); }
public override void HandleMessage(Yupi.Model.Domain.Habbo session, Yupi.Protocol.Buffers.ClientMessage request, Yupi.Protocol.IRouter router) { bool deleteAll = request.GetBool(); request.GetInteger(); // TODO Unused IRepository <FriendRequest> requests = DependencyFactory.Resolve <IRepository <FriendRequest> > (); if (deleteAll) { requests.Delete(x => x.To == session.Info); } else { int senderId = request.GetInteger(); UserInfo sender = UserRepository.Find(senderId); // TODO Refactor this. It should not be necessary to load the sender... requests.Delete(x => x.To == session.Info && x.From == sender); } }
public override void HandleMessage(Yupi.Model.Domain.Habbo session, Yupi.Protocol.Buffers.ClientMessage message, Yupi.Protocol.IRouter router) { int pageId = message.GetInteger(); int itemId = message.GetInteger(); string extraData = message.GetString(); string giftUser = message.GetString(); string giftMessage = message.GetString(); int giftSpriteId = message.GetInteger(); int giftLazo = message.GetInteger(); int giftColor = message.GetInteger(); bool showSender = message.GetBool(); UserInfo info = UserRepository.Find(x => x.Name == giftUser); if (info == null) { router.GetComposer <GiftErrorMessageComposer>().Compose(session, giftUser); } CatalogOffer item = CatalogController.GetById(pageId, itemId); CatalogController.PurchaseGift(session, item, extraData, info); }
public override void HandleMessage(Yupi.Model.Domain.Habbo session, Yupi.Protocol.Buffers.ClientMessage message, Yupi.Protocol.IRouter router) { session.Info.Preferences.PreferOldChat = message.GetBool(); UserRepository.Save(session.Info); }
public override void HandleMessage(Yupi.Model.Domain.Habbo session, Yupi.Protocol.Buffers.ClientMessage request, Yupi.Protocol.IRouter router) { int roomId = request.GetInteger(); RoomData roomData = RoomRepository.Find(roomId); if (roomData == null || !roomData.HasOwnerRights(session.Info)) { return; } // TODO Filter string newName = request.GetString(); // TODO Magic constant if (newName.Length > 2) { roomData.Name = newName; } // TODO Filter roomData.Description = request.GetString(); int stateId = request.GetInteger(); RoomState state; if (RoomState.TryFromInt32(stateId, out state)) { roomData.State = state; } roomData.Password = request.GetString(); roomData.UsersMax = request.GetInteger(); int categoryId = request.GetInteger(); FlatNavigatorCategory category = NavigatorCategoryRepository.Find(categoryId); if (category != null && category.MinRank <= session.Info.Rank) { roomData.Category = category; } int tagCount = request.GetInteger(); if (tagCount <= 2) { roomData.Tags.Clear(); IRepository <Tag> TagRepository = DependencyFactory.Resolve <IRepository <Tag> > (); for (int i = 0; i < tagCount; i++) { string tagValue = request.GetString().ToLower(); Tag tag = TagRepository.Find(tagValue); if (tag == null) { tag = new Tag(tagValue); } roomData.Tags.Add(tag); } } TradingState tradeState; if (TradingState.TryFromInt32(request.GetInteger(), out tradeState)) { roomData.TradeState = tradeState; } roomData.AllowPets = request.GetBool(); roomData.AllowPetsEating = request.GetBool(); roomData.AllowWalkThrough = request.GetBool(); bool hideWall = request.GetBool(); int wallThickness = request.GetInteger(); int floorThickness = request.GetInteger(); if (session.Info.Subscription.HasLevel(ClubLevel.HC)) { roomData.HideWall = hideWall; roomData.WallThickness = wallThickness; roomData.FloorThickness = floorThickness; } else { roomData.HideWall = false; roomData.WallThickness = 0; roomData.FloorThickness = 0; } RoomModerationRight right; if (RoomModerationRight.TryFromInt32(request.GetInteger(), out right)) { roomData.ModerationSettings.WhoCanMute = right; } if (RoomModerationRight.TryFromInt32(request.GetInteger(), out right)) { roomData.ModerationSettings.WhoCanKick = right; } if (RoomModerationRight.TryFromInt32(request.GetInteger(), out right)) { roomData.ModerationSettings.WhoCanBan = right; } ChatType chatType; if (ChatType.TryFromInt32(request.GetInteger(), out chatType)) { roomData.Chat.Type = chatType; } ChatBalloon chatBalloon; if (ChatBalloon.TryFromInt32(request.GetInteger(), out chatBalloon)) { roomData.Chat.Balloon = chatBalloon; } ChatSpeed chatSpeed; if (ChatSpeed.TryFromInt32(request.GetInteger(), out chatSpeed)) { roomData.Chat.Speed = chatSpeed; } int maxDistance = request.GetInteger(); if (roomData.Chat.isValidDistance(maxDistance)) { roomData.Chat.SetMaxDistance(maxDistance); } FloodProtection floodProtection; if (FloodProtection.TryFromInt32(request.GetInteger(), out floodProtection)) { roomData.Chat.FloodProtection = floodProtection; } request.GetBool(); //TODO allow_dyncats_checkbox router.GetComposer <RoomSettingsSavedMessageComposer>().Compose(session, roomData.Id); Room room = RoomManager.GetIfLoaded(roomData); if (room != null) { room.EachUser(x => { x.Router.GetComposer <RoomUpdateMessageComposer>().Compose(x, roomData.Id); x.Router.GetComposer <RoomFloorWallLevelsMessageComposer>().Compose(x, roomData); x.Router.GetComposer <RoomChatOptionsMessageComposer>().Compose(x, roomData); x.Router.GetComposer <RoomDataMessageComposer>().Compose(x, roomData, x.Info, true, true); }); } }