private static string GetName(MushEntry me, IEnumerable<TinyMushObjectAttribute> attributes)
 {
     string name;
     if (Universe.ReadName)
     {
         name = me.Name;
     }
     else
     {
         if (attributes == null)
         {
             return null;
         }
         var temp = attributes.ToList().FirstOrDefault(a => a.Id == (long)ObjectGameBaseAttributeValues.NAME);
         if (temp == null)
         {
             return null;
         }
         name = temp.Text;
     }
     var p = ObjectDataParsers.StripAnsi().TryParse(name);
     return p.WasSuccessful
         ? p.Value
         : null;
 }
 /// <summary>
 /// Collect all the attributes for a <see cref="MushEntry"/>
 /// </summary>
 private static IEnumerable<TinyMushObjectAttribute> GetAttributes(MushEntry me, long owner)
 {
     return
         me.Attributes.Select(attribute => MakeAttribute(attribute, owner))
           .Where(attr => attr != null)
           .ToList();
 }
        public static IEnumerable<TinyMushObjectPowers> GetPowers(MushEntry me)
        {
            List<TinyMushPowers1> p1 = GameEnums.Match<TinyMushPowers1>(me, me.Powers1);
            List<TinyMushPowers2> p2 = GameEnums.Match<TinyMushPowers2>(me, me.Powers2);

            List<TinyMushObjectPowers> res = new List<TinyMushObjectPowers>();

            res.AddRange(ParsePowers1(p1));
            res.AddRange(ParsePowers2(p2));

            return res;
        }
        public static IEnumerable<TinyMushObjectFlags> GetFlags(MushEntry me)
        {
            List<TinyMushObjectFlags1> f1 = GameEnums.Match<TinyMushObjectFlags1>(me, me.Flags1);
            List<TinyMushObjectFlags2> f2 = GameEnums.Match<TinyMushObjectFlags2>(me, me.Flags2);
            List<TinyMushObjectFlags3> f3 = GameEnums.Match<TinyMushObjectFlags3>(me, me.Flags3);

            List<TinyMushObjectFlags> res = new List<TinyMushObjectFlags>();

            res.AddRange(ParseFlags1(f1));
            res.AddRange(ParseFlags2(f2));
            res.AddRange(ParseFlags3(f3));

            return res;
        }
 public TinyMushObjectData(MushEntry me)
 {
     DbRef = me.Number;
     Location = me.Location;
     Zone = me.Zone;
     Contents = me.Contents;
     Exits = me.Exits;
     Link = me.Link;
     Next = me.Next;
     Owner = me.Owner;
     Parent = me.Parent;
     Money = me.Money;
     AccessTime = Time.MakeFromEpoch(me.AccessTime);
     ModTime = Time.MakeFromEpoch(me.ModTime);
     LockKey = me.LockKey;
     ObjectType = ObjectTypes.MatchType(me);
 }
        public static TinyMushObjectType MatchType(MushEntry me)
        {
            long type = me.Flags1 & 7;

            switch (type)
            {
                case 0:
                    return TinyMushObjectType.Room;
                case 1:
                    return TinyMushObjectType.Thing;
                case 2:
                    return TinyMushObjectType.Exit;
                case 3:
                    return TinyMushObjectType.Player;
                case 4:
                    return TinyMushObjectType.Zone;
                default:
                    return TinyMushObjectType.Garbage;
            }
        }
 public static void RegisterEntry(MushEntry mushEntry)
 {
     if (mushEntry == null || mushEntry.Number < 0)
     {
         return;
     }
     if (Entries.ContainsKey(mushEntry.Number))
     {
         return;
     }
     Entries[ mushEntry.Number ] = mushEntry;
 }