Exemplo n.º 1
0
        ///<summary>
        /// Update the display order of the elements based on what the player
        /// currently knowns about them. Order is atomic number, alphabetical</summary>
        private void UpdateKnown()
        {
            // Only the elements that are known to exist are visible
            KnownElements = m_elements.Where(x => (x.KnownProperties & EElemProp.Existence) != 0).Cast <IElementKnown>().ToList();
            KnownElements.Sort((lhs, rhs) =>
            {
                var elhs = (Element)lhs;
                var erhs = (Element)rhs;
                bool al  = (elhs.KnownProperties & EElemProp.AtomicNumber) != 0;
                bool ar  = (erhs.KnownProperties & EElemProp.AtomicNumber) != 0;
                if (al != ar)
                {
                    return(al ? -1 : 1);
                }
                if (al)
                {
                    return(lhs.AtomicNumber.CompareTo(rhs.AtomicNumber));
                }
                return(string.Compare(elhs.Name.Fullname, erhs.Name.Fullname, StringComparison.Ordinal));
            });

            // Only materials that have been discovered are visible
            KnownMaterials = m_compounds.Where(x => x.Discovered).ToList();
            KnownMaterials.Sort((lhs, rhs) =>
            {
                return(string.Compare(lhs.Fullname, rhs.Fullname, StringComparison.Ordinal));
            });
        }