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); }
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); } }
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; }
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 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); }
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); }
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 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; }
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); }
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); }
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; }