Esempio n. 1
0
        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);
                });
            }
        }
Esempio n. 2
0
        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);
                }
            }
        }
Esempio n. 3
0
        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;
        }
Esempio n. 4
0
        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);
        }
Esempio n. 6
0
        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);
        }
Esempio n. 7
0
        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);
        }
Esempio n. 9
0
        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);
        }
Esempio n. 11
0
 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);
 }
Esempio n. 12
0
        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);
                });
            }
        }