示例#1
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);
     }
 }
示例#2
0
        private int MeasurePost(MessageBoardPost post, int width, int margin, int ImageSize, int postHeaderOffset)
        {
            var font   = GuiData.tinyfont;
            var num    = postHeaderOffset;
            var width1 = width - 4 * margin;

            if (post.img != MessageBoardPostImage.None)
            {
                width1 -= ImageSize;
            }
            var text    = Utils.SmartTwimForWidth(post.text, width1, font);
            var vector2 = font.MeasureString(text);

            vector2.Y *= 1.3f;
            return(Math.Max(num + (int)vector2.Y + 2 * margin, ImageSize + 2 * margin));
        }
示例#3
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);
        }
示例#4
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);
        }
 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;
 }
 private int MeasurePost(MessageBoardPost post, int width, int margin, int ImageSize, int postHeaderOffset)
 {
     var font = GuiData.tinyfont;
     var num = postHeaderOffset;
     var width1 = width - 4*margin;
     if (post.img != MessageBoardPostImage.None)
         width1 -= ImageSize;
     var text = Utils.SmartTwimForWidth(post.text, width1, font);
     var vector2 = font.MeasureString(text);
     vector2.Y *= 1.3f;
     return Math.Max(num + (int) vector2.Y + 2*margin, ImageSize + 2*margin);
 }