public int Compare(object a, object b) { ThreadEntry tea = ( ThreadEntry )a; ThreadEntry teb = ( ThreadEntry )b; if (tea.EntryType == ThreadType.Sticky && teb.EntryType != ThreadType.Sticky) { return(-9000); } else if (teb.EntryType == ThreadType.Sticky && tea.EntryType != ThreadType.Sticky) { return(9000); } else if (tea.EntryType == ThreadType.Sticky && teb.EntryType == ThreadType.Sticky) { return(teb.LastPostTime.CompareTo(tea.LastPostTime)); } else if (tea.EntryType == ThreadType.Announcement && teb.EntryType != ThreadType.Announcement) { return(-5000); } else if (teb.EntryType == ThreadType.Announcement && tea.EntryType != ThreadType.Announcement) { return(5000); } else if (tea.EntryType == ThreadType.Announcement && teb.EntryType == ThreadType.Announcement) { return(teb.LastPostTime.CompareTo(tea.LastPostTime)); } else { return(teb.LastPostTime.CompareTo(tea.LastPostTime)); } }
public PostGump(Mobile pm, bool newThread, ThreadEntry te, string previousText) : base(0, 0) { if (!newThread) { m_ThreadEntry = te; } m_Lines = new ArrayList(); m_Player = pm; m_NewThread = newThread; Closable = true; Disposable = true; Dragable = true; Resizable = false; AddPage(0); AddBackground(10, 15, 477, 467, 9200); AddLabel(22, 38, 0, @"Subject:"); AddImageTiled(21, 58, 447, 21, 2624); // AddAlphaRegion( 21, 58, 446, 20 ); AddImageTiled(21, 58, 446, 20, 2624); AddImageTiled(22, 102, 446, 302, 2624); // AddAlphaRegion( 22, 101, 446, 302 ); AddImageTiled(22, 101, 446, 302, 2624); AddButton(22, 409, 4029, 4029, ( int )Buttons.Reply, GumpButtonType.Reply, 0); AddLabel(55, 409, 0, @"Post"); AddButton(22, 434, 4029, 4029, ( int )Buttons.LongMessage, GumpButtonType.Reply, 0); AddLabel(55, 434, 0, @"Long Post"); AddLabel(22, 78, 0, @"Content:"); // AddLabel( 306, 78, 0, @"Date:" ); if (newThread) { AddLabel(202, 20, 0, @"New Post"); } else { AddLabel(202, 20, 0, @"Post Reply"); } if (newThread) { AddTextEntry(22, 59, 442, 20, 55, ( int )Buttons.TextEntry2, ""); } else { AddHtml(22, 59, 442, 20, Color(m_ThreadEntry.Subject, LabelColor), false, false); } AddTextEntry(22, 102, 446, 304, 55, ( int )Buttons.TextEntry3, previousText); if (m_Player.AccessLevel >= AccessLevel.Counselor) { AddCheck(449, 411, 210, 211, false, ( int )Buttons.Checkbox1); AddLabel(378, 412, 0, @"Staff Only"); AddCheck(350, 411, 210, 211, false, ( int )Buttons.Checkbox2); AddLabel(305, 412, 0, @"Sticky"); AddCheck(279, 411, 210, 211, false, ( int )Buttons.Checkbox3); AddLabel(186, 412, 0, @"Announcement"); } }
public ThreadGump(Mobile pm, ThreadEntry te) : base(0, 0) { m_ThreadEntry = te; m_Player = pm; if (m_ThreadEntry != null && !m_ThreadEntry.Deleted) { m_ThreadEntry.AddViewer(pm); } Closable = true; Disposable = true; Dragable = true; Resizable = false; AddPage(0); AddBackground(9, 15, 477, 412, 9200); AddButton(450, 20, 1151, 1151, ( int )Buttons.Close, GumpButtonType.Reply, 0); AddLabel(22, 24, 0, @"Subject:"); if (m_ThreadEntry != null && !m_ThreadEntry.Deleted) { AddLabel(22, 64, 0, @"Author: " + ((m_ThreadEntry.ThreadCreator == null) ? "unknown author" : m_ThreadEntry.ThreadCreator.Name)); } if (m_ThreadEntry != null && !m_ThreadEntry.Deleted) { AddLabel(306, 64, 0, @"Date: " + m_ThreadEntry.CreationTime.ToShortDateString() + m_ThreadEntry.CreationTime.ToShortTimeString()); } AddImageTiled(21, 44, 447, 21, 2624); // AddAlphaRegion( 21, 44, 446, 20 ); AddImageTiled(21, 44, 446, 20, 2624); if (m_ThreadEntry != null && !m_ThreadEntry.Deleted) { AddHtml(23, 46, 446, 20, Color(m_ThreadEntry.Subject, LabelColor), false, false); } AddImageTiled(22, 88, 446, 302, 2624); // AddAlphaRegion( 22, 87, 446, 302 ); AddImageTiled(22, 87, 446, 302, 2624); if (m_ThreadEntry != null && !m_ThreadEntry.Deleted) { AddHtml(24, 89, 446, 302, Color(m_ThreadEntry.GetThreadInfo(), LabelColor), false, true); } AddButton(22, 395, 4029, 4029, ( int )Buttons.Reply, GumpButtonType.Reply, 0); AddLabel(54, 395, 0, @"Reply"); if (m_Player.AccessLevel >= ForumCore.ThreadDeleteAccessLevel || ForumCore.Moderators.Contains(m_Player)) { AddLabel(149, 395, 0, @"Delete"); AddButton(117, 395, 4020, 4020, ( int )Buttons.Delete, GumpButtonType.Reply, 0); } if (m_Player.AccessLevel >= ForumCore.ThreadLockAccesLevel || ForumCore.Moderators.Contains(m_Player)) { AddButton(219, 395, 4017, 4017, ( int )Buttons.Lock, GumpButtonType.Reply, 0); AddLabel(253, 396, 0, m_ThreadEntry.Locked ? "Unlock" : "Lock"); } }
private static bool CheckAutoCleanupDate(ThreadEntry te) { DateTime today = DateTime.Now; if (today.Date.Day - te.LastPostTime.Date.Day > AutoCleanupDays) { return(true); } return(false); }
public ThreadGump( Mobile pm, ThreadEntry te ) : base( 0, 0 ) { m_ThreadEntry = te; m_Player = pm; if( m_ThreadEntry != null && !m_ThreadEntry.Deleted ) m_ThreadEntry.AddViewer( pm ); Closable = true; Disposable = true; Dragable = true; Resizable = false; AddPage( 0 ); AddBackground( 9, 15, 477, 412, 9200 ); AddButton( 450, 20, 1151, 1151, ( int )Buttons.Close, GumpButtonType.Reply, 0 ); AddLabel( 22, 24, 0, @"Subject:" ); if( m_ThreadEntry != null && !m_ThreadEntry.Deleted ) AddLabel( 22, 64, 0, @"Author: " + (( m_ThreadEntry.ThreadCreator == null ) ? "unknown author" : m_ThreadEntry.ThreadCreator.Name)); if( m_ThreadEntry != null && !m_ThreadEntry.Deleted ) AddLabel( 306, 64, 0, @"Date: " + m_ThreadEntry.CreationTime.ToShortDateString() + m_ThreadEntry.CreationTime.ToShortTimeString() ); AddImageTiled( 21, 44, 447, 21, 2624 ); // AddAlphaRegion( 21, 44, 446, 20 ); AddImageTiled(21, 44, 446, 20, 2624); if( m_ThreadEntry != null && !m_ThreadEntry.Deleted ) AddHtml( 23, 46, 446, 20, Color( m_ThreadEntry.Subject, LabelColor ), false, false ); AddImageTiled( 22, 88, 446, 302, 2624 ); // AddAlphaRegion( 22, 87, 446, 302 ); AddImageTiled(22, 87, 446, 302, 2624); if( m_ThreadEntry != null && !m_ThreadEntry.Deleted ) AddHtml( 24, 89, 446, 302, Color( m_ThreadEntry.GetThreadInfo(), LabelColor ), false, true ); AddButton( 22, 395, 4029, 4029, ( int )Buttons.Reply, GumpButtonType.Reply, 0 ); AddLabel( 54, 395, 0, @"Reply" ); if( m_Player.AccessLevel >= ForumCore.ThreadDeleteAccessLevel || ForumCore.Moderators.Contains( m_Player ) ) { AddLabel( 149, 395, 0, @"Delete" ); AddButton( 117, 395, 4020, 4020, ( int )Buttons.Delete, GumpButtonType.Reply, 0 ); } if( m_Player.AccessLevel >= ForumCore.ThreadLockAccesLevel || ForumCore.Moderators.Contains( m_Player ) ) { AddButton( 219, 395, 4017, 4017, ( int )Buttons.Lock, GumpButtonType.Reply, 0 ); AddLabel( 253, 396, 0, m_ThreadEntry.Locked ? "Unlock" : "Lock" ); } }
public PostGump(Mobile pm, bool newThread, ThreadEntry te, string previousText) : base(0, 0) { if (!newThread) m_ThreadEntry = te; m_Lines = new ArrayList(); m_Player = pm; m_NewThread = newThread; Closable = true; Disposable = true; Dragable = true; Resizable = false; AddPage(0); AddBackground(10, 15, 477, 467, 9200); AddLabel(22, 38, 0, @"Subject:"); AddImageTiled(21, 58, 447, 21, 2624); AddAlphaRegion(21, 58, 446, 20); AddImageTiled(22, 102, 446, 302, 2624); AddAlphaRegion(22, 101, 446, 302); AddButton(22, 409, 4029, 4029, (int)Buttons.Reply, GumpButtonType.Reply, 0); AddLabel(55, 409, 0, @"Post Now"); AddButton(22, 434, 4029, 4029, (int)Buttons.LongMessage, GumpButtonType.Reply, 0); AddLabel(55, 434, 0, @"Copy message from a book. Use it for 240+ characters messages."); AddLabel(55, 459, 0, @""); AddLabel(22, 78, 0, @"Message:"); AddLabel(306, 78, 0, @"Date:"); if (newThread) AddLabel(202, 20, 0, @"New Topic"); else AddLabel(202, 20, 0, @"Reply Topic"); if (newThread) AddTextEntry(22, 59, 442, 20, 38, (int)Buttons.TextEntry2, ""); else AddHtml(22, 59, 442, 20, Color(m_ThreadEntry.Subject, LabelColor), false, false); AddTextEntry(22, 102, 446, 304, 38, (int)Buttons.TextEntry3, previousText); if (m_Player.AccessLevel >= AccessLevel.Counselor) { AddCheck(449, 411, 210, 211, false, (int)Buttons.Checkbox1); AddLabel(378, 412, 0, @"For Staff"); AddCheck(350, 411, 210, 211, false, (int)Buttons.Checkbox2); AddLabel(305, 412, 0, @" Fixed"); AddCheck(279, 411, 210, 211, false, (int)Buttons.Checkbox3); AddLabel(186, 412, 0, @" Announcement"); } }
private static void Load() { try { string SavePath = Path.Combine(m_SavePath, "forumdata.sig"); using (FileStream fs = new FileStream(SavePath, FileMode.Open, FileAccess.Read, FileShare.Read)) { BinaryReader br = new BinaryReader(fs); BinaryFileReader reader = new BinaryFileReader(br); int version = reader.ReadInt(); switch (version) { case 0: { m_PlayerStatistics = ReadPlayerStatistics(reader); int count = reader.ReadInt(); for (int i = 0; i < count; i++) { ThreadEntry te = new ThreadEntry(); te.Deserialize(reader); m_Threads.Add(te); } m_Moderators = reader.ReadMobileList(); m_ThreadDeleteAccessLevel = (AccessLevel)reader.ReadInt(); m_ThreadLockAccesLevel = ( AccessLevel )reader.ReadInt(); m_AutoCleanup = reader.ReadBool(); m_AutoCleanupDays = reader.ReadInt(); m_MinPostCharactersCount = reader.ReadInt(); m_MaxPostCharactersCount = reader.ReadInt(); break; } } } m_Threads.Sort(new DateSort()); Console.WriteLine("done"); Console.WriteLine("---------"); } catch (Exception err) { Console.WriteLine("An error occured while loading the forums...{0}", err.ToString()); Console.WriteLine("---------"); } }
private static int RemovedDeletedQueue(out int queue) { ArrayList toBeDeleted = new ArrayList(); for (int i = 0; i < m_Threads.Count; i++) { ThreadEntry te = ( ThreadEntry )m_Threads[i]; if (te.Deleted) { toBeDeleted.Add(te); } else if (AutoCleanup) { if (CheckAutoCleanupDate(te)) { toBeDeleted.Add(te); } } } queue = toBeDeleted.Count; if (toBeDeleted.Count > 0) { for (int i = 0; i < toBeDeleted.Count; i++) { ThreadEntry te = ( ThreadEntry )toBeDeleted[i]; m_Threads.Remove(te); } return(toBeDeleted.Count); } else { return(0); } }
public void Post() { if (m_NewThread) { bool staff = false; bool sticky = false; bool announcement = false; for (int i = 0; i < m_Switches.Length; i++) { if (m_Switches[i] == 4) { staff = true; } if (m_Switches[i] == 5) { sticky = true; } if (m_Switches[i] == 6) { announcement = true; } } if (sticky && announcement) { m_Player.SendMessage("Since you checked both sticky and announcement, this post was changed to sticky by default!"); announcement = false; } ThreadType type; if (sticky) { type = ThreadType.Sticky; } else if (announcement) { type = ThreadType.Announcement; } else { type = ThreadType.RegularThread; } string post = GetText(); PostEntry pe = new PostEntry(m_Player, m_Player.Serial, post, DateTime.Now); ThreadEntry te = new ThreadEntry(m_Topic, pe, m_Player, DateTime.Now, ForumCore.ThreadNumber, type); if (staff) { te.StaffMessage = true; } te.LastPostTime = DateTime.Now; ForumCore.Threads.Add(te); ForumCore.UpdatePlayerStatistics(m_Player); ForumCore.Threads.Sort(new DateSort()); m_Player.CloseGump(typeof(ForumGump)); m_Player.SendGump(new ForumGump(m_Player, 0)); } else { string post = GetText(); PostEntry pe = new PostEntry(m_Player, m_Player.Serial, post, DateTime.Now); m_ThreadEntry.AddPost(pe); m_ThreadEntry.LastPostTime = DateTime.Now; ForumCore.UpdatePlayerStatistics(m_Player); ForumCore.Threads.Sort(new DateSort()); m_Player.CloseGump(typeof(ForumGump)); m_Player.SendGump(new ForumGump(m_Player, 0)); } }
public override void OnResponse(Server.Network.NetState sender, RelayInfo info) { Mobile m_Player = ( Mobile )sender.Mobile; if (m_Player == null) { return; } switch (info.ButtonID) { case 0: { ForumCore.Threads.Sort(new DateSort()); m_Player.CloseGump(typeof(ForumGump)); m_Player.SendGump(new ForumGump(m_Player, 0)); break; } case 1: { if (m_NewThread) { TextRelay topic = info.GetTextEntry(2); TextRelay post = info.GetTextEntry(3); int[] switches = info.Switches; bool staff = false; bool sticky = false; bool announcement = false; for (int i = 0; i < switches.Length; i++) { if (switches[i] == 4) { staff = true; } if (switches[i] == 5) { sticky = true; } if (switches[i] == 6) { announcement = true; } } if (sticky && announcement) { m_Player.SendMessage("Since you checked both sticky and announcement, this post was changed to sticky by default!"); announcement = false; } if (topic.Text.Length < ForumCore.MinPostCharactersCount) { m_Player.SendMessage("The subject of the post must be more then {0} characters in length.", ForumCore.MinPostCharactersCount.ToString()); m_Player.SendGump(this); break; } if (post.Text.Length < ForumCore.MinPostCharactersCount) { m_Player.SendMessage("The content of the post must be more then {0} characters in length.", ForumCore.MinPostCharactersCount.ToString()); m_Player.SendGump(this); break; } if (post.Text.Length > ForumCore.MaxPostCharactersCount) { m_Player.SendMessage("The content of the post must be less then {0} characters in length.", ForumCore.MaxPostCharactersCount.ToString()); m_Player.SendGump(new PostGump(m_Player, post.Text)); break; } ThreadType type; if (sticky) { type = ThreadType.Sticky; } else if (announcement) { type = ThreadType.Announcement; } else { type = ThreadType.RegularThread; } PostEntry pe = new PostEntry(m_Player, m_Player.Serial, post.Text, DateTime.Now); ThreadEntry te = new ThreadEntry(topic.Text, pe, m_Player, DateTime.Now, ForumCore.ThreadNumber, type); if (staff) { te.StaffMessage = true; } te.LastPostTime = DateTime.Now; ForumCore.Threads.Add(te); ForumCore.UpdatePlayerStatistics(m_Player); ForumCore.Threads.Sort(new DateSort()); m_Player.CloseGump(typeof(ForumGump)); m_Player.SendGump(new ForumGump(m_Player, 0)); } else { TextRelay post = info.GetTextEntry(3); PostEntry pe = new PostEntry(m_Player, m_Player.Serial, post.Text, DateTime.Now); m_ThreadEntry.AddPost(pe); m_ThreadEntry.LastPostTime = DateTime.Now; ForumCore.UpdatePlayerStatistics(m_Player); ForumCore.Threads.Sort(new DateSort()); m_Player.CloseGump(typeof(ForumGump)); m_Player.SendGump(new ForumGump(m_Player, 0)); } break; } case 7: { if (m_NewThread) { TextRelay topic = info.GetTextEntry(2); if (topic.Text.Length < ForumCore.MinPostCharactersCount) { m_Player.SendMessage("The subject of the post must be more then {0} characters in length.", ForumCore.MinPostCharactersCount.ToString()); m_Player.SendGump(this); break; } m_Topic = topic.Text; m_Switches = info.Switches; } m_Player.Prompt = new LongPostLinesPrompt(this, m_Player); break; } } }
public override void OnResponse( Server.Network.NetState sender, RelayInfo info ) { Mobile m_Player = ( Mobile )sender.Mobile; if( m_Player == null ) return; switch( info.ButtonID ) { case 0: { ForumCore.Threads.Sort( new DateSort() ); m_Player.CloseGump( typeof( ForumGump ) ); m_Player.SendGump( new ForumGump( m_Player, 0 ) ); break; } case 1: { if( m_NewThread ) { TextRelay topic = info.GetTextEntry( 2 ); TextRelay post = info.GetTextEntry( 3 ); int[] switches = info.Switches; bool staff = false; bool sticky = false; bool announcement = false; for( int i = 0; i < switches.Length; i++ ) { if( switches[i] == 4) staff = true; if( switches[i] == 5 ) sticky = true; if( switches[i] == 6 ) announcement = true; } if( sticky && announcement ) { m_Player.SendMessage( "Since you checked both sticky and announcement, this post was changed to sticky by default!" ); announcement = false; } if( topic.Text.Length < ForumCore.MinPostCharactersCount ) { m_Player.SendMessage( "The subject of the post must be more then {0} characters in length.", ForumCore.MinPostCharactersCount.ToString() ); m_Player.SendGump( this ); break; } if( post.Text.Length < ForumCore.MinPostCharactersCount ) { m_Player.SendMessage( "The content of the post must be more then {0} characters in length.", ForumCore.MinPostCharactersCount.ToString() ); m_Player.SendGump( this ); break; } if( post.Text.Length > ForumCore.MaxPostCharactersCount ) { m_Player.SendMessage( "The content of the post must be less then {0} characters in length.", ForumCore.MaxPostCharactersCount.ToString() ); m_Player.SendGump( new PostGump( m_Player, post.Text ) ); break; } ThreadType type; if( sticky ) type = ThreadType.Sticky; else if( announcement ) type = ThreadType.Announcement; else type = ThreadType.RegularThread; PostEntry pe = new PostEntry( m_Player, m_Player.Serial, post.Text, DateTime.Now ); ThreadEntry te = new ThreadEntry( topic.Text, pe, m_Player, DateTime.Now, ForumCore.ThreadNumber, type ); if( staff ) te.StaffMessage = true; te.LastPostTime = DateTime.Now; ForumCore.Threads.Add( te ); ForumCore.UpdatePlayerStatistics( m_Player ); ForumCore.Threads.Sort( new DateSort() ); m_Player.CloseGump( typeof( ForumGump ) ); m_Player.SendGump( new ForumGump( m_Player, 0 ) ); } else { TextRelay post = info.GetTextEntry( 3 ); PostEntry pe = new PostEntry( m_Player, m_Player.Serial, post.Text, DateTime.Now ); m_ThreadEntry.AddPost( pe ); m_ThreadEntry.LastPostTime = DateTime.Now; ForumCore.UpdatePlayerStatistics( m_Player ); ForumCore.Threads.Sort( new DateSort() ); m_Player.CloseGump( typeof( ForumGump ) ); m_Player.SendGump( new ForumGump( m_Player, 0 ) ); } break; } case 7: { if( m_NewThread ) { TextRelay topic = info.GetTextEntry( 2 ); if( topic.Text.Length < ForumCore.MinPostCharactersCount ) { m_Player.SendMessage( "The subject of the post must be more then {0} characters in length.", ForumCore.MinPostCharactersCount.ToString() ); m_Player.SendGump( this ); break; } m_Topic = topic.Text; m_Switches = info.Switches; } m_Player.Prompt = new LongPostLinesPrompt( this, m_Player ); break; } } }
public void Post() { if( m_NewThread ) { bool staff = false; bool sticky = false; bool announcement = false; for( int i = 0; i < m_Switches.Length; i++ ) { if( m_Switches[i] == 4 ) staff = true; if( m_Switches[i] == 5 ) sticky = true; if( m_Switches[i] == 6 ) announcement = true; } if( sticky && announcement ) { m_Player.SendMessage( "Since you checked both sticky and announcement, this post was changed to sticky by default!" ); announcement = false; } ThreadType type; if( sticky ) type = ThreadType.Sticky; else if( announcement ) type = ThreadType.Announcement; else type = ThreadType.RegularThread; string post = GetText(); PostEntry pe = new PostEntry( m_Player, m_Player.Serial, post, DateTime.Now ); ThreadEntry te = new ThreadEntry( m_Topic, pe, m_Player, DateTime.Now, ForumCore.ThreadNumber, type ); if( staff ) te.StaffMessage = true; te.LastPostTime = DateTime.Now; ForumCore.Threads.Add( te ); ForumCore.UpdatePlayerStatistics( m_Player ); ForumCore.Threads.Sort( new DateSort() ); m_Player.CloseGump( typeof( ForumGump ) ); m_Player.SendGump( new ForumGump( m_Player, 0 ) ); } else { string post = GetText(); PostEntry pe = new PostEntry( m_Player, m_Player.Serial, post, DateTime.Now ); m_ThreadEntry.AddPost( pe ); m_ThreadEntry.LastPostTime = DateTime.Now; ForumCore.UpdatePlayerStatistics( m_Player ); ForumCore.Threads.Sort( new DateSort() ); m_Player.CloseGump( typeof( ForumGump ) ); m_Player.SendGump( new ForumGump( m_Player, 0 ) ); } }
private static void Load() { try { string SavePath = Path.Combine( m_SavePath, "forumdata.sig" ); using( FileStream fs = new FileStream( SavePath, FileMode.Open, FileAccess.Read, FileShare.Read ) ) { BinaryReader br = new BinaryReader( fs ); BinaryFileReader reader = new BinaryFileReader( br ); int version = reader.ReadInt(); switch( version ) { case 0: { m_PlayerStatistics = ReadPlayerStatistics( reader ); int count = reader.ReadInt(); for( int i = 0; i < count; i++ ) { ThreadEntry te = new ThreadEntry(); te.Deserialize( reader ); m_Threads.Add( te ); } m_Moderators = reader.ReadMobileList(); m_ThreadDeleteAccessLevel = (AccessLevel)reader.ReadInt(); m_ThreadLockAccesLevel = ( AccessLevel )reader.ReadInt(); m_AutoCleanup = reader.ReadBool(); m_AutoCleanupDays = reader.ReadInt(); m_MinPostCharactersCount = reader.ReadInt(); m_MaxPostCharactersCount = reader.ReadInt(); break; } } } m_Threads.Sort( new DateSort() ); Console.WriteLine( "Loading...done" ); } catch(Exception err) { Console.WriteLine( "An error occured while loading the forums...{0}", err.ToString() ); } }
private static bool CheckAutoCleanupDate( ThreadEntry te ) { DateTime today = DateTime.Now; if ( today.Date.Day - te.LastPostTime.Date.Day > AutoCleanupDays ) return true; return false; }
public ForumGump(Mobile pm, int page) : base(0, 0) { m_Player = pm; m_Page = page; m_PagedThreads = new ArrayList(); Closable = false; Disposable = true; Dragable = true; Resizable = false; AddPage(0); AddBackground(71, 53, 618, 489, 9200); AddImage(631, 9, 5536); AddBlackAlpha(80, 63, 549, 63); AddImage(655, 368, 10411); AddImage(657, 181, 10410); AddImage(21, 481, 10402); AddButton(579, 160, 4008, 4008, (int)Buttons.CreditsButton, GumpButtonType.Reply, 0); AddButton(580, 187, 4014, 4014, (int)Buttons.HelpButton, GumpButtonType.Reply, 0); AddButton(94, 507, 4029, 4029, (int)Buttons.NewPostButton, GumpButtonType.Reply, 0); AddButton(400, 507, 4029, 4029, (int)Buttons.Cancel, GumpButtonType.Reply, 0); AddLabel(435, 507, 49, "Close"); AddLabel(131, 507, 49, "New Topic"); AddLabel(613, 161, 499, "Credits"); AddLabel(614, 187, 499, "Help"); AddLabel(87, 68, 499, "FORUM - Topics: " + ForumCore.Threads.Count.ToString() + " - Moderators: " + ForumCore.Moderators.Count.ToString()); AddLabel(87, 93, 499, "There are currently " + NetState.Instances.Count + " users online."); AddLabel(535, 101, 499, "Version " + ForumCore.Version); AddLabel(80, 124, 499, " Status Topic Title Visits/Replies"); AddBlackAlpha(80, 144, 491, 354); bool pages = (ForumCore.Threads.Count > 10); bool more = false; int index = m_Page * 10; if (index < 0) { index = 0; } int maxcount = index + 10; int offset = 0; for (int i = index; i < ForumCore.Threads.Count; i++) { if (i >= maxcount) { more = true; break; } ThreadEntry te = (ThreadEntry)ForumCore.Threads[i]; if (!te.Deleted && !(te.StaffMessage && m_Player.AccessLevel < AccessLevel.Counselor)) { bool viewed = te.IsViewer(m_Player); bool poster = te.IsPoster(m_Player); bool viewedUpdate = te.IsViewerSinceUpdate(m_Player); m_PagedThreads.Add(te); int buttonID; if (te.IsPoster(m_Player) && te.IsViewerSinceUpdate(m_Player)) { buttonID = 4011; } else if (te.IsPoster(m_Player)) { buttonID = 4012; } else if (te.IsViewerSinceUpdate(m_Player)) { buttonID = 4014; } else if (te.IsViewer(m_Player)) { buttonID = 4015; } else { buttonID = 4014; } if (te.Locked) { buttonID = 4017; } AddButtonLabeled(100, (((35 * (i - index)) + 155) - offset), (i - (maxcount - (((m_Page + 1) * 10))) - index), buttonID, te.Subject, te.NumberOfViews.ToString(), te.NumberOfReplys.ToString(), te.StaffMessage, te.EntryType); } else { maxcount++; offset += 35; } } if (pages) { if (more) { AddButton(644, 507, 5541, 5541, (int)Buttons.NextPage, GumpButtonType.Reply, 0); } if (m_Page > 0) { AddButton(621, 507, 5538, 5538, (int)Buttons.PreviousPage, GumpButtonType.Reply, 0); } } }
public override void OnResponse(Server.Network.NetState sender, RelayInfo info) { m_Player = (Mobile)sender.Mobile; if (m_Player == null) { return; } switch (info.ButtonID) { default: //Any Thread { ThreadEntry te = (ThreadEntry)m_PagedThreads[info.ButtonID]; if (te != null && !te.Deleted) { if (te.Deleted) { m_Player.SendMessage("That thread has been queued for deletion and may not be viewed!"); break; } te.AddViewerSinceUpdate(m_Player); te.AddViewer(m_Player); m_Player.CloseGump(typeof(ThreadGump)); m_Player.SendGump(new ThreadGump(m_Player, te)); } break; } case 11: //Credits { m_Player.CloseGump(typeof(ForumGump)); m_Player.SendGump(new ForumGump(m_Player, m_Page)); m_Player.CloseGump(typeof(CreditsGump)); m_Player.SendGump(new CreditsGump()); break; } case 12: //Help { m_Player.CloseGump(typeof(ForumGump)); m_Player.SendGump(new ForumGump(m_Player, m_Page)); m_Player.CloseGump(typeof(HelpGump)); m_Player.SendGump(new HelpGump()); break; } case 13: //New Post { m_Player.CloseGump(typeof(PostGump)); m_Player.SendGump(new PostGump(m_Player)); break; } case 14: //Next Page { int page = m_Page + 1; m_Player.CloseGump(typeof(ForumGump)); m_Player.SendGump(new ForumGump(m_Player, page)); break; } case 15: //Previous Page { int page = m_Page - 1; m_Player.CloseGump(typeof(ForumGump)); m_Player.SendGump(new ForumGump(m_Player, page)); break; } case 16: //Cancel { break; } } }