public void Render() { AddNewPage(); if (m_Page > 0) { AddEntryButton(20, ArrowLeftID1, ArrowLeftID2, 1, ArrowLeftWidth, ArrowLeftHeight); } else { AddEntryHeader(20); } AddEntryHtml(40 + (m_Columns.Length * 130) - 20 + ((m_Columns.Length - 2) * OffsetSize), Center(String.Format("Page {0} of {1}", m_Page + 1, (m_List.Count + EntriesPerPage - 1) / EntriesPerPage))); if ((m_Page + 1) * EntriesPerPage < m_List.Count) { AddEntryButton(20, ArrowRightID1, ArrowRightID2, 2, ArrowRightWidth, ArrowRightHeight); } else { AddEntryHeader(20); } if (m_Columns.Length > 1) { AddNewLine(); for (int i = 0; i < m_Columns.Length; ++i) { if (i > 0 && m_List.Count > 0) { object obj = m_List[0]; if (obj != null) { string failReason = null; PropertyInfo[] chain = Properties.GetPropertyInfoChain(m_From, obj.GetType(), m_Columns[i], PropertyAccess.Read, ref failReason); if (chain != null && chain.Length > 0) { m_Columns[i] = ""; for (int j = 0; j < chain.Length; ++j) { if (j > 0) { m_Columns[i] += '.'; } m_Columns[i] += chain[j].Name; } } } } AddEntryHtml(130 + (i == 0 ? 40 : 0), m_Columns[i]); } AddEntryHeader(20); } for (int i = m_Page * EntriesPerPage, line = 0; line < EntriesPerPage && i < m_List.Count; ++i, ++line) { AddNewLine(); object obj = m_List[i]; bool isDeleted = false; if (obj is Item) { Item item = (Item)obj; if (!(isDeleted = item.Deleted)) { AddEntryHtml(40 + 130, item.GetType().Name); } } else if (obj is Mobile) { Mobile mob = (Mobile)obj; if (!(isDeleted = mob.Deleted)) { AddEntryHtml(40 + 130, mob.Name); } } if (isDeleted) { AddEntryHtml(40 + 130, "(deleted)"); for (int j = 1; j < m_Columns.Length; ++j) { AddEntryHtml(130, "---"); } AddEntryHeader(20); } else { for (int j = 1; j < m_Columns.Length; ++j) { object src = obj; string value; string failReason = ""; PropertyInfo[] chain = Properties.GetPropertyInfoChain(m_From, src.GetType(), m_Columns[j], PropertyAccess.Read, ref failReason); if (chain == null || chain.Length == 0) { value = "---"; } else { PropertyInfo p = Properties.GetPropertyInfo(ref src, chain, ref failReason); if (p == null) { value = "---"; } else { value = PropertiesGump.ValueToString(src, p); } } AddEntryHtml(130, value); } bool isSelected = (m_Select != null && obj == m_Select); AddEntryButton(20, (isSelected ? 9762 : ArrowRightID1), (isSelected ? 9763 : ArrowRightID2), 3 + i, ArrowRightWidth, ArrowRightHeight); } } FinishPage(); }
public void Render() { AddNewPage(); if (m_Page > 0) { AddEntryButton(20, ArrowLeftID1, ArrowLeftID2, 1, ArrowLeftWidth, ArrowLeftHeight); } else { AddEntryHeader(20); } AddEntryHtml( 40 + m_Columns.Length * 130 - 20 + (m_Columns.Length - 2) * OffsetSize, Center( $"Page {m_Page + 1} of {(m_List.Count + EntriesPerPage - 1) / EntriesPerPage}" ) ); if ((m_Page + 1) * EntriesPerPage < m_List.Count) { AddEntryButton(20, ArrowRightID1, ArrowRightID2, 2, ArrowRightWidth, ArrowRightHeight); } else { AddEntryHeader(20); } if (m_Columns.Length > 1) { AddNewLine(); for (var i = 0; i < m_Columns.Length; ++i) { if (i > 0 && m_List.Count > 0) { var obj = m_List[0]; if (obj != null) { var chain = Properties.GetPropertyInfoChain( m_From, obj.GetType(), m_Columns[i], PropertyAccess.Read, out _ ); if (chain?.Length > 0) { m_Columns[i] = ""; for (var j = 0; j < chain.Length; ++j) { if (j > 0) { m_Columns[i] += '.'; } m_Columns[i] += chain[j].Name; } } } } AddEntryHtml(130 + (i == 0 ? 40 : 0), m_Columns[i]); } AddEntryHeader(20); } for (int i = m_Page * EntriesPerPage, line = 0; line < EntriesPerPage && i < m_List.Count; ++i, ++line) { AddNewLine(); var obj = m_List[i]; var isDeleted = false; if (obj is Item item) { if (!(isDeleted = item.Deleted)) { AddEntryHtml(40 + 130, item.GetType().Name); } } else if (obj is Mobile mob) { if (!(isDeleted = mob.Deleted)) { AddEntryHtml(40 + 130, mob.Name); } } if (isDeleted) { AddEntryHtml(40 + 130, "(deleted)"); for (var j = 1; j < m_Columns.Length; ++j) { AddEntryHtml(130, "---"); } AddEntryHeader(20); } else { for (var j = 1; j < m_Columns.Length; ++j) { var src = obj; string value; var chain = Properties.GetPropertyInfoChain( m_From, src.GetType(), m_Columns[j], PropertyAccess.Read, out _ ); if (chain == null || chain.Length == 0) { value = "---"; } else { var p = Properties.GetPropertyInfo(ref src, chain, out _); if (p == null) { value = "---"; } else { value = PropertiesGump.ValueToString(src, p); } } AddEntryHtml(130, value); } var isSelected = m_Select != null && obj == m_Select; AddEntryButton( 20, isSelected ? 9762 : ArrowRightID1, isSelected ? 9763 : ArrowRightID2, 3 + i, ArrowRightWidth, ArrowRightHeight ); } } FinishPage(); }