Beispiel #1
0
        public ThreadCreatedComposer(GameClient Session, GroupForumThread Thread)
            : base(ServerPacketHeader.ThreadCreatedMessageComposer)
        {
            base.WriteInteger(Thread.ParentForum.Id); //Thread ID
            Thread.SerializeData(Session, this);

            /*
             * base.WriteInteger(Thread.Id); //Thread ID
             * base.WriteInteger(Thread.GetAuthor().Id);
             * base.WriteString(Thread.GetAuthor().Username); //Thread Author
             * base.WriteString(Thread.Caption); //Thread Title
             * base.WriteBoolean(false); //Pinned
             * base.WriteBoolean(false); //Locked
             * base.WriteInteger((int)(QuasarEnvironment.GetUnixTimestamp() - Thread.Timestamp)); //Created Secs Ago
             * base.WriteInteger(Thread.Posts.Count); //Message count
             * base.WriteInteger(Thread.GetUnreadMessages(Session.GetHabbo().Id)); //Unread message count
             * base.WriteInteger(0); // idk
             * base.WriteInteger(0); // idk
             *
             * base.WriteString("Unknown");// Last User Post Username
             * base.WriteInteger(65); // Last User Post time ago [Sec]
             *
             * base.WriteByte(0); //idk
             * base.WriteInteger(10);// idk
             * base.WriteString("Str4"); //idk
             * base.WriteInteger(11);//idk*/
        }
        public ThreadUpdatedComposer(GameClient Session, GroupForumThread Thread)
            : base(ServerPacketHeader.ThreadUpdatedMessageComposer)
        {
            WriteInteger(Thread.ParentForum.Id);

            Thread.SerializeData(Session, this);
        }
Beispiel #3
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();
            int stateToSet = request.GetInteger();

            Group theGroup = GroupRepository.Find(groupId);

            if (theGroup != null)
            {
                GroupForumThread thread = theGroup.Forum.GetThread(threadId);

                if (thread != null && (thread.Creator == session.Info || theGroup.Admins.Contains(session.Info)))
                {
                    thread.Hidden   = stateToSet == 20;
                    thread.HiddenBy = session.Info;

                    GroupRepository.Save(theGroup);

                    router.GetComposer <SuperNotificationMessageComposer>()
                    .Compose(session, string.Empty, string.Empty, string.Empty, string.Empty,
                             stateToSet == 20 ? "forums.thread.hidden" : "forums.thread.restored", 0);

                    router.GetComposer <GroupForumThreadUpdateMessageComposer>()
                    .Compose(session, groupId, thread, thread.Pinned, thread.Locked);
                }
            }
        }
        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();
            int startIndex = request.GetInteger();

            request.GetInteger(); // TODO Unused

            Group theGroup = GroupRepository.Find(groupId);

            if (theGroup == null)
            {
                return;
            }

            GroupForumThread thread = theGroup.Forum.GetThread(threadId);

            if (thread == null)
            {
                return;
            }

            // TODO Magic constant
            List <GroupForumPost> posts = thread.Posts.Skip(startIndex).Take(20).ToList();

            router.GetComposer <GroupForumReadThreadMessageComposer>()
            .Compose(session, groupId, threadId, startIndex, posts);
        }
 public override void Compose(Yupi.Protocol.ISender session, int groupId, GroupForumThread thread, bool pin,
                              bool Lock)
 {
     // TODO Hardcoded message
     using (ServerMessage message = Pool.GetMessageBuffer(Id))
     {
         message.AppendInteger(groupId);
         message.AppendInteger(thread.Id);
         message.AppendInteger(thread.Creator.Id);
         message.AppendString(thread.Creator.Name);
         message.AppendString(thread.Subject);
         message.AppendBool(thread.Pinned);
         message.AppendBool(thread.Locked);
         message.AppendInteger((int)(DateTime.Now - thread.CreatedAt).TotalSeconds);
         message.AppendInteger(thread.Posts.Count);
         message.AppendInteger(0);
         message.AppendInteger(0);
         message.AppendInteger(1);
         message.AppendString(string.Empty);
         message.AppendInteger((int)(DateTime.Now - thread.CreatedAt).TotalSeconds);
         message.AppendByte(thread.Hidden ? 10 : 1);
         message.AppendInteger(1);
         message.AppendString(thread.HiddenBy.Name);
         message.AppendInteger(0);
         session.Send(message);
     }
 }
        public ThreadDataComposer(GroupForumThread Thread, int StartIndex, int MaxLength)
            : base(ServerPacketHeader.ThreadDataMessageComposer)
        {
            base.WriteInteger(Thread.ParentForum.Id);
            base.WriteInteger(Thread.Id);
            base.WriteInteger(StartIndex);
            base.WriteInteger(Thread.Posts.Count); //Messages count

            foreach (var Post in Thread.Posts)
            {
                Post.SerializeData(this);
            }
        }
        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 ThreadCreatedComposer(GameClient Session, GroupForumThread Thread)
            : base(ServerPacketHeader.ThreadCreatedMessageComposer)
        {
            base.WriteInteger(Thread.ParentForum.Id);                                       //Thread ID
            base.WriteInteger(Thread.Id);                                                   //Thread ID
            base.WriteInteger(Thread.GetAuthor().Id);
            base.WriteString(Thread.GetAuthor().Username);                                  //Thread Author
            base.WriteString(Thread.Caption);                                               //Thread Title
            base.WriteBoolean(false);                                                       //Pinned
            base.WriteBoolean(false);                                                       //Locked
            base.WriteInteger((int)(RocketEmulador.GetUnixTimestamp() - Thread.Timestamp)); //Created Secs Ago
            base.WriteInteger(Thread.Posts.Count);                                          //Message count
            base.WriteInteger(Thread.GetUnreadMessages(Session.GetHabbo().Id));             //Unread message count
            base.WriteInteger(0);                                                           // idk
            base.WriteInteger(0);                                                           // idk

            base.WriteString("Unknown");                                                    // Last User Post Username
            base.WriteInteger(65);                                                          // Last User Post time ago [Sec]

            base.WriteByte(0);                                                              //idk
            base.WriteInteger(10);                                                          // idk
            base.WriteString("Str4");                                                       //idk
            base.WriteInteger(11);                                                          //idk
        }
Beispiel #9
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();
            string subject  = request.GetString();
            string content  = request.GetString();

            Group group = GroupRepository.Find(groupId);

            if (group == null)
            {
                return;
            }

            GroupForumThread thread;

            if (threadId == 0)
            {
                // New thread
                thread = new GroupForumThread();
            }
            else
            {
                thread = group.Forum.GetThread(threadId);

                if (thread == null)
                {
                    return;
                }
            }

            if (thread.Locked || thread.Hidden)
            {
                return;
            }

            GroupForumPost post = new GroupForumPost()
            {
                Content = content,
                Subject = subject,
                Poster  = session.Info
            };

            group.Forum.ForumScore += 0.25;
            // TODO SAVE
            throw new NotImplementedException();

            /*
             * group.UpdateForum();
             *
             * if (threadId == 0)
             * {
             *  router.GetComposer<GroupForumNewThreadMessageComposer> ().Compose (session, groupId, threadId, session.GetHabbo ().Id, subject, content, timestamp);
             * }
             * else
             * {
             *  router.GetComposer<GroupForumNewResponseMessageComposer> ().Compose (
             *      session, groupId, threadId, group.Forum.ForumMessagesCount, session.GetHabbo (), timestamp);
             * }*/
        }
Beispiel #10
0
 public virtual void Compose(Yupi.Protocol.ISender session, int groupId, GroupForumThread thread, bool pin,
                             bool Lock)
 {
     // Do nothing by default.
 }