public XmlQuestBookGump( PlayerMobile from, XmlQuestBook book ) : this( from, book, 0, null ) { }
public XmlQuestBookGump( PlayerMobile from, XmlQuestBook book, int page, ArrayList list ) : base( 12, 24 ) { from.CloseGump( typeof( XmlQuestBookGump ) ); m_From = from; m_Book = book; m_Page = page; if ( list == null ) { // make a new list based on the number of items in the book int nquests = 0; Item [] questitems = book.FindItemsByType(typeof(IXmlQuest)); if(questitems != null) nquests = questitems.Length; list = new ArrayList( nquests ); for ( int i = 0; i < nquests; ++i ) { list.Add( questitems[i] ); } } m_List = list; int index = GetIndexForPage( page ); int count = GetCountForIndex( index ); int tableIndex = 0; int width = 600; width = 516; X = (624 - width) / 2; int xoffset = 0; if(m_Book.Locked) xoffset = 20; AddPage( 0 ); AddBackground( 10, 10, width, 439, 5054 ); AddImageTiled( 18, 20, width - 17, 420, 2624 ); AddImageTiled( 58 - xoffset, 64, 36, 352, 200 ); // open AddImageTiled( 96 - xoffset, 64, 163, 352, 1416 ); // name AddImageTiled( 261 - xoffset, 64, 55, 352, 200 ); // type AddImageTiled( 308 - xoffset, 64, 85, 352, 1416 ); // status AddImageTiled( 395 - xoffset, 64, 116, 352, 200 ); // expires for ( int i = index; i < (index + count) && i >= 0 && i < list.Count; ++i ) { object obj = list[i]; AddImageTiled( 24, 94 + (tableIndex * 32), 489, 2, 2624 ); ++tableIndex; } AddAlphaRegion( 18, 20, width - 17, 420 ); AddImage( 5, 5, 10460 ); AddImage( width - 15, 5, 10460 ); AddImage( 5, 424, 10460 ); AddImage( width - 15, 424, 10460 ); AddHtmlLocalized( 224, 32, 200, 32, 1046026, LabelColor, false, false ); // Quest Log AddHtmlLocalized( 63 - xoffset, 64, 200, 32, 3000362, LabelColor, false, false ); // Open AddHtmlLocalized( 147 - xoffset, 64, 200, 32, 3005104, LabelColor, false, false ); // Name AddHtmlLocalized( 270 - xoffset, 64, 200, 32, 1062213, LabelColor, false, false ); // Type AddHtmlLocalized( 326 - xoffset, 64, 200, 32, 3000132, LabelColor, false, false ); // Status AddHtmlLocalized( 429 - xoffset, 64, 200, 32, 1062465, LabelColor, false, false ); // Expires AddButton( 375 - xoffset, 416, 4017, 4018, 0, GumpButtonType.Reply, 0 ); AddHtmlLocalized( 410 - xoffset, 416, 120, 20, 1011441, LabelColor, false, false ); // EXIT if(!m_Book.Locked) AddHtmlLocalized( 26, 64, 50, 32, 1062212, LabelColor, false, false ); // Drop tableIndex = 0; if ( page > 0 ) { AddButton( 75, 416, 4014, 4016, 2, GumpButtonType.Reply, 0 ); AddHtmlLocalized( 110, 416, 150, 20, 1011067, LabelColor, false, false ); // Previous page } if ( GetIndexForPage( page + 1 ) < list.Count ) { AddButton( 225, 416, 4005, 4007, 3, GumpButtonType.Reply, 0 ); AddHtmlLocalized( 260, 416, 150, 20, 1011066, LabelColor, false, false ); // Next page } for ( int i = index; i < (index + count) && i >= 0 && i < list.Count; ++i ) { object obj = list[i]; if ( obj is IXmlQuest ) { IXmlQuest e = (IXmlQuest)obj; int y = 96 + (tableIndex++ * 32); if(!m_Book.Locked) AddButton( 35, y + 2, 5602, 5606, 1000 + i, GumpButtonType.Reply, 0 ); // drop AddButton( 60 - xoffset, y + 2, 0xFAB, 0xFAD, 2000 + i, GumpButtonType.Reply, 0 ); // open gump int color; if(!e.IsValid) { color = 33; } else if(e.IsCompleted) { color = 67; } else { color = 5; } AddLabel( 100 - xoffset, y, color, (string)e.Name ); //AddHtmlLocalized( 315, y, 200, 32, e.IsCompleted ? 1049071 : 1049072, htmlcolor, false, false ); // Completed/Incomplete AddLabel( 315 - xoffset, y, color, e.IsCompleted ? "Completed" : "In Progress" ); // indicate the expiration time if(e.IsValid){ // do a little parsing of the expiration string to fit it in the space string substring = e.ExpirationString; if(e.ExpirationString.IndexOf("Expires in") >= 0) { substring = e.ExpirationString.Substring(11); } AddLabel( 400 - xoffset, y, color, (string)substring ); } else { AddLabel( 400 - xoffset, y, color, "No longer valid" ); } if(e.PartyEnabled){ AddLabel( 270 - xoffset, y, color, "Party" ); //AddHtmlLocalized( 250, y, 200, 32, 3000332, htmlcolor, false, false ); // Party } else { AddLabel( 270 - xoffset, y, color, "Solo" ); } } } }