Ejemplo n.º 1
0
        private List <MessageBoardPost> GetLastPostsToFitHeight(MessageBoardThread thread, int height, int width,
                                                                int margin, int ImageSize, int PostHeaderOffset, int ThreadFooterSize, int maxOPSize = 2147483647)
        {
            var list = new List <MessageBoardPost>();
            var num1 = ThreadFooterSize + margin * 4;
            var val2 = MeasurePost(thread.posts[0], width, margin, ImageSize, PostHeaderOffset);
            var num2 = Math.Min(maxOPSize, val2);

            list.Add(thread.posts[0]);
            var num3 = num1 + num2;

            for (var index = thread.posts.Count - 1; index >= 0; --index)
            {
                var num4 = MeasurePost(thread.posts[index], width, margin, ImageSize, PostHeaderOffset);
                if (num3 + num4 < height)
                {
                    list.Insert(1, thread.posts[index]);
                    num3 += num4;
                }
                else
                {
                    break;
                }
            }
            return(list);
        }
Ejemplo n.º 2
0
 public MessageBoardThread ParseThread(string threadData)
 {
     try
     {
         string[] strArray = threadData.Split(new string[3] {
             "------------------------------------------\r\n", "------------------------------------------\n", "------------------------------------------"
         }, StringSplitOptions.None);
         string             str1 = strArray[0].Replace("\n", "").Replace("\r", "");
         MessageBoardThread messageBoardThread = new MessageBoardThread()
         {
             id = str1, posts = new List <MessageBoardPost>()
         };
         for (int index = 1; index < strArray.Length; ++index)
         {
             if (strArray[index].Length > 1)
             {
                 MessageBoardPost messageBoardPost = new MessageBoardPost();
                 string           str2             = strArray[index];
                 if (strArray[index].StartsWith("#"))
                 {
                     string str3 = strArray[index].Substring(1, strArray[index].IndexOf('\n'));
                     try
                     {
                         MessageBoardPostImage messageBoardPostImage = (MessageBoardPostImage)Enum.Parse(typeof(MessageBoardPostImage), str3);
                         messageBoardPost.img = messageBoardPostImage;
                         str2 = strArray[index].Substring(strArray[index].IndexOf('\n') + 1);
                     }
                     catch (ArgumentException ex)
                     {
                         messageBoardPost.img = MessageBoardPostImage.None;
                     }
                 }
                 else
                 {
                     messageBoardPost.img = MessageBoardPostImage.None;
                 }
                 messageBoardPost.text = str2;
                 messageBoardThread.posts.Add(messageBoardPost);
             }
         }
         return(messageBoardThread);
     }
     catch (Exception ex)
     {
         MessageBoardThread messageBoardThread = new MessageBoardThread();
         messageBoardThread.id = "error";
         // ISSUE: explicit reference operation
         // ISSUE: explicit reference operation
         (^ @messageBoardThread).posts = new List <MessageBoardPost>((IEnumerable <MessageBoardPost>) new MessageBoardPost[1]
         {
             new MessageBoardPost()
             {
                 img  = MessageBoardPostImage.None,
                 text = "-- Error Parsing Thread --"
             }
         });
         return(messageBoardThread);
     }
 }
Ejemplo n.º 3
0
 public void ViewThread(MessageBoardThread thread, int width, int margin, int ImageSize, int headerOffset)
 {
     this.CurrentThreadHeight = 20;
     for (int index = 0; index < thread.posts.Count; ++index)
     {
         this.CurrentThreadHeight += this.MeasurePost(thread.posts[index], width, margin, ImageSize, headerOffset) + margin * 2;
     }
     this.state                = MessageBoardDaemon.MessageBoardState.Thread;
     this.viewingThread        = thread;
     this.ThreadScrollPosition = Vector2.Zero;
 }
Ejemplo n.º 4
0
        public MessageBoardThread ParseThread(string threadData)
        {
            var strArray = threadData.Split(new string[3]
            {
                "------------------------------------------\r\n",
                "------------------------------------------\n",
                "------------------------------------------"
            }, StringSplitOptions.None);
            var str1 = strArray[0].Replace("\n", "").Replace("\r", "");
            var messageBoardThread = new MessageBoardThread
            {
                id    = str1,
                posts = new List <MessageBoardPost>()
            };

            for (var index = 1; index < strArray.Length; ++index)
            {
                if (strArray[index].Length > 1)
                {
                    var messageBoardPost = new MessageBoardPost();
                    var str2             = strArray[index];
                    if (strArray[index].StartsWith("#"))
                    {
                        var str3 = strArray[index].Substring(1, strArray[index].IndexOf('\n'));
                        try
                        {
                            var messageBoardPostImage =
                                (MessageBoardPostImage)Enum.Parse(typeof(MessageBoardPostImage), str3);
                            messageBoardPost.img = messageBoardPostImage;
                            str2 = strArray[index].Substring(strArray[index].IndexOf('\n') + 1);
                        }
                        catch (ArgumentException ex)
                        {
                            messageBoardPost.img = MessageBoardPostImage.None;
                        }
                    }
                    else
                    {
                        messageBoardPost.img = MessageBoardPostImage.None;
                    }
                    messageBoardPost.text = str2;
                    messageBoardThread.posts.Add(messageBoardPost);
                }
            }
            return(messageBoardThread);
        }
Ejemplo n.º 5
0
        private void DrawFullThreadView(SpriteBatch sb, MessageBoardThread thread, Rectangle dest)
        {
            var rectangle = dest;

            rectangle.Height = CurrentThreadHeight + 50;
            var flag = CurrentThreadHeight > dest.Height;

            if (flag)
            {
                ScrollablePanel.beginPanel(1931655001, rectangle, ThreadScrollPosition);
                rectangle.X = rectangle.Y = 0;
            }
            DrawThread(thread, GuiData.spriteBatch, rectangle, false);
            if (!flag)
            {
                return;
            }
            float maxScroll = Math.Max(dest.Height, CurrentThreadHeight - dest.Height);

            ThreadScrollPosition = ScrollablePanel.endPanel(1931655001, ThreadScrollPosition, dest, maxScroll, false);
        }
Ejemplo n.º 6
0
        private void DrawThread(MessageBoardThread thread, SpriteBatch sb, Rectangle bounds, bool isPreview = false)
        {
            var num1             = 4;
            var margin           = 8;
            var num2             = 450;
            var height           = 36;
            var num3             = 20;
            var ImageSize        = 80;
            var ThreadFooterSize = 30;
            var font             = GuiData.tinyfont;
            var dest             = new Rectangle(bounds.X + margin, bounds.Y + margin, num2, height);
            var num4             = bounds.Y;
            var list             = thread.posts;

            if (isPreview)
            {
                list = GetLastPostsToFitHeight(thread, 415 - ThreadFooterSize, bounds.Width, margin, ImageSize, num3,
                                               ThreadFooterSize, int.MaxValue);
            }
            for (var index = 0; index < list.Count; ++index)
            {
                var messageBoardPost = list[index];
                var width            = bounds.Width - 4 * margin;
                if (messageBoardPost.img != MessageBoardPostImage.None)
                {
                    width -= ImageSize;
                }
                var text1   = Utils.SmartTwimForWidth(messageBoardPost.text, width, font);
                var vector2 = font.MeasureString(text1);
                vector2.Y *= 1.3f;
                dest.Y     = num4;
                var val2 = (int)vector2.X + margin * 4;
                if (messageBoardPost.img != MessageBoardPostImage.None)
                {
                    val2 += ImageSize + margin;
                }
                dest.Width  = Math.Max(num2, val2);
                dest.Height = (int)vector2.Y + 2 * margin;
                dest.Width  = Math.Max(dest.Width, ImageSize + 2 * margin);
                if (messageBoardPost.img != MessageBoardPostImage.None)
                {
                    dest.Height = Math.Max(dest.Height, ImageSize + 2 * margin);
                }
                dest.Height += num3 + margin * 2;
                DrawPost(text1, messageBoardPost.img, dest, margin, ImageSize, num3, sb, font);
                num4 += dest.Height + num1;
                if (index == 0 && isPreview)
                {
                    var thread1 = thread;
                    var text2   = "[+] " + (thread.posts.Count - list.Count) + " posts and image replies omitted";
                    var text3   = "Click here to view.";
                    sb.DrawString(GuiData.tinyfont, text2, new Vector2(dest.X, num4), os.lightGray);
                    if (Button.doButton(17839000 + thread.id.GetHashCode(), dest.X + 290, num4 - 1, 160, 17, text3,
                                        new Color?()))
                    {
                        Console.WriteLine("clicked " + index);
                        ViewThread(thread1, bounds.Width, margin, ImageSize, num3);
                    }
                    num4 += 16 + num1;
                }
            }
            sb.Draw(Utils.white,
                    new Rectangle(bounds.X + margin, bounds.Y + bounds.Height - 6, bounds.Width - margin * 2, 1),
                    Color.White * 0.5f);
        }
Ejemplo n.º 7
0
        private void DrawThread(MessageBoardThread thread, SpriteBatch sb, Rectangle bounds, bool isPreview = false)
        {
            int        num1             = 4;
            int        margin           = 8;
            int        num2             = 450;
            int        height           = 36;
            int        num3             = 20;
            int        ImageSize        = 80;
            int        ThreadFooterSize = 30;
            SpriteFont tinyfont         = GuiData.tinyfont;
            Rectangle  dest             = new Rectangle(bounds.X + margin, bounds.Y + margin, num2, height);
            int        y = bounds.Y;
            List <MessageBoardPost> messageBoardPostList = thread.posts;

            if (isPreview)
            {
                messageBoardPostList = this.GetLastPostsToFitHeight(thread, 415 - ThreadFooterSize, bounds.Width, margin, ImageSize, num3, ThreadFooterSize, int.MaxValue);
            }
            for (int index = 0; index < messageBoardPostList.Count; ++index)
            {
                MessageBoardPost messageBoardPost = messageBoardPostList[index];
                int width = bounds.Width - 4 * margin;
                if (messageBoardPost.img != MessageBoardPostImage.None)
                {
                    width -= ImageSize;
                }
                string  text1   = Utils.SmartTwimForWidth(messageBoardPost.text, width, tinyfont);
                Vector2 vector2 = tinyfont.MeasureString(text1);
                vector2.Y *= 1.3f;
                dest.Y     = y;
                int val2 = (int)vector2.X + margin * 4;
                if (messageBoardPost.img != MessageBoardPostImage.None)
                {
                    val2 += ImageSize + margin;
                }
                dest.Width  = Math.Max(num2, val2);
                dest.Height = (int)vector2.Y + 2 * margin;
                dest.Width  = Math.Max(dest.Width, ImageSize + 2 * margin);
                if (messageBoardPost.img != MessageBoardPostImage.None)
                {
                    dest.Height = Math.Max(dest.Height, ImageSize + 2 * margin);
                }
                dest.Height += num3 + margin * 2;
                this.DrawPost(text1, messageBoardPost.img, dest, margin, ImageSize, num3, sb, tinyfont);
                y += dest.Height + num1;
                if (index == 0 && isPreview)
                {
                    MessageBoardThread thread1 = thread;
                    string             text2   = "[+] " + string.Format(LocaleTerms.Loc("{0} posts and image replies omitted"), (object)(thread.posts.Count - messageBoardPostList.Count));
                    string             text3   = LocaleTerms.Loc("Click here to view.");
                    TextItem.doFontLabel(new Vector2((float)dest.X, (float)y), text2, GuiData.tinyfont, new Color?(this.os.lightGray), 288f, 18f, true);
                    if (Button.doButton(17839000 + thread.id.GetHashCode(), dest.X + 290, y - 2, bounds.Width - 316, 17, text3, new Color?()))
                    {
                        Console.WriteLine("clicked " + (object)index);
                        this.ViewThread(thread1, bounds.Width, margin, ImageSize, num3);
                    }
                    y += 16 + num1;
                }
            }
            sb.Draw(Utils.white, new Rectangle(bounds.X + margin, bounds.Y + bounds.Height - 6, bounds.Width - margin * 2, 1), Color.White * 0.5f);
        }
Ejemplo n.º 8
0
 public MessageBoardThread ParseThread(string threadData)
 {
     var strArray = threadData.Split(new string[3]
     {
         "------------------------------------------\r\n",
         "------------------------------------------\n",
         "------------------------------------------"
     }, StringSplitOptions.None);
     var str1 = strArray[0].Replace("\n", "").Replace("\r", "");
     var messageBoardThread = new MessageBoardThread
     {
         id = str1,
         posts = new List<MessageBoardPost>()
     };
     for (var index = 1; index < strArray.Length; ++index)
     {
         if (strArray[index].Length > 1)
         {
             var messageBoardPost = new MessageBoardPost();
             var str2 = strArray[index];
             if (strArray[index].StartsWith("#"))
             {
                 var str3 = strArray[index].Substring(1, strArray[index].IndexOf('\n'));
                 try
                 {
                     var messageBoardPostImage =
                         (MessageBoardPostImage) Enum.Parse(typeof (MessageBoardPostImage), str3);
                     messageBoardPost.img = messageBoardPostImage;
                     str2 = strArray[index].Substring(strArray[index].IndexOf('\n') + 1);
                 }
                 catch (ArgumentException ex)
                 {
                     messageBoardPost.img = MessageBoardPostImage.None;
                 }
             }
             else
                 messageBoardPost.img = MessageBoardPostImage.None;
             messageBoardPost.text = str2;
             messageBoardThread.posts.Add(messageBoardPost);
         }
     }
     return messageBoardThread;
 }
Ejemplo n.º 9
0
 private List<MessageBoardPost> GetLastPostsToFitHeight(MessageBoardThread thread, int height, int width,
     int margin, int ImageSize, int PostHeaderOffset, int ThreadFooterSize, int maxOPSize = 2147483647)
 {
     var list = new List<MessageBoardPost>();
     var num1 = ThreadFooterSize + margin*4;
     var val2 = MeasurePost(thread.posts[0], width, margin, ImageSize, PostHeaderOffset);
     var num2 = Math.Min(maxOPSize, val2);
     list.Add(thread.posts[0]);
     var num3 = num1 + num2;
     for (var index = thread.posts.Count - 1; index >= 0; --index)
     {
         var num4 = MeasurePost(thread.posts[index], width, margin, ImageSize, PostHeaderOffset);
         if (num3 + num4 < height)
         {
             list.Insert(1, thread.posts[index]);
             num3 += num4;
         }
         else
             break;
     }
     return list;
 }
Ejemplo n.º 10
0
 private void DrawThread(MessageBoardThread thread, SpriteBatch sb, Rectangle bounds, bool isPreview = false)
 {
     var num1 = 4;
     var margin = 8;
     var num2 = 450;
     var height = 36;
     var num3 = 20;
     var ImageSize = 80;
     var ThreadFooterSize = 30;
     var font = GuiData.tinyfont;
     var dest = new Rectangle(bounds.X + margin, bounds.Y + margin, num2, height);
     var num4 = bounds.Y;
     var list = thread.posts;
     if (isPreview)
         list = GetLastPostsToFitHeight(thread, 415 - ThreadFooterSize, bounds.Width, margin, ImageSize, num3,
             ThreadFooterSize, int.MaxValue);
     for (var index = 0; index < list.Count; ++index)
     {
         var messageBoardPost = list[index];
         var width = bounds.Width - 4*margin;
         if (messageBoardPost.img != MessageBoardPostImage.None)
             width -= ImageSize;
         var text1 = Utils.SmartTwimForWidth(messageBoardPost.text, width, font);
         var vector2 = font.MeasureString(text1);
         vector2.Y *= 1.3f;
         dest.Y = num4;
         var val2 = (int) vector2.X + margin*4;
         if (messageBoardPost.img != MessageBoardPostImage.None)
             val2 += ImageSize + margin;
         dest.Width = Math.Max(num2, val2);
         dest.Height = (int) vector2.Y + 2*margin;
         dest.Width = Math.Max(dest.Width, ImageSize + 2*margin);
         if (messageBoardPost.img != MessageBoardPostImage.None)
             dest.Height = Math.Max(dest.Height, ImageSize + 2*margin);
         dest.Height += num3 + margin*2;
         DrawPost(text1, messageBoardPost.img, dest, margin, ImageSize, num3, sb, font);
         num4 += dest.Height + num1;
         if (index == 0 && isPreview)
         {
             var thread1 = thread;
             var text2 = "[+] " + (thread.posts.Count - list.Count) + " posts and image replies omitted";
             var text3 = "Click here to view.";
             sb.DrawString(GuiData.tinyfont, text2, new Vector2(dest.X, num4), os.lightGray);
             if (Button.doButton(17839000 + thread.id.GetHashCode(), dest.X + 290, num4 - 1, 160, 17, text3,
                 new Color?()))
             {
                 Console.WriteLine("clicked " + index);
                 ViewThread(thread1, bounds.Width, margin, ImageSize, num3);
             }
             num4 += 16 + num1;
         }
     }
     sb.Draw(Utils.white,
         new Rectangle(bounds.X + margin, bounds.Y + bounds.Height - 6, bounds.Width - margin*2, 1),
         Color.White*0.5f);
 }
Ejemplo n.º 11
0
 private void DrawFullThreadView(SpriteBatch sb, MessageBoardThread thread, Rectangle dest)
 {
     var rectangle = dest;
     rectangle.Height = CurrentThreadHeight + 50;
     var flag = CurrentThreadHeight > dest.Height;
     if (flag)
     {
         ScrollablePanel.beginPanel(1931655001, rectangle, ThreadScrollPosition);
         rectangle.X = rectangle.Y = 0;
     }
     DrawThread(thread, GuiData.spriteBatch, rectangle, false);
     if (!flag)
         return;
     float maxScroll = Math.Max(dest.Height, CurrentThreadHeight - dest.Height);
     ThreadScrollPosition = ScrollablePanel.endPanel(1931655001, ThreadScrollPosition, dest, maxScroll, false);
 }
Ejemplo n.º 12
0
 public void ViewThread(MessageBoardThread thread, int width, int margin, int ImageSize, int headerOffset)
 {
     CurrentThreadHeight = 20;
     for (var index = 0; index < thread.posts.Count; ++index)
         CurrentThreadHeight += MeasurePost(thread.posts[index], width, margin, ImageSize, headerOffset) +
                                margin*2;
     state = MessageBoardState.Thread;
     viewingThread = thread;
     ThreadScrollPosition = Vector2.Zero;
 }