Esempio n. 1
0
        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();
        }
Esempio n. 2
0
        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();
        }