Example #1
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadEncodedInt();

            switch (version)
            {
            case 1:
            {
                m_Content = FillableContent.Lookup((FillableContentType)reader.ReadInt());
                goto case 0;
            }

            case 0:
            {
                if (reader.ReadBool())
                {
                    m_NextRespawnTime = reader.ReadDeltaTime();

                    TimeSpan delay = m_NextRespawnTime - DateTime.UtcNow;
                    m_RespawnTimer = Timer.DelayCall(delay > TimeSpan.Zero ? delay : TimeSpan.Zero, new TimerCallback(Respawn));
                }
                else
                {
                    CheckRespawn();
                }

                break;
            }
            }
        }
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadEncodedInt();

            switch (version)
            {
            case 2:
            case 1:
                m_Content = FillableContent.Lookup((FillableContentType)reader.ReadInt());
                goto case 0;

            case 0:
            {
                if (version > 1 || reader.ReadBool())
                {
                    m_NextRespawnTime = reader.ReadDeltaTime();
                }
                else
                {
                    CheckRespawn();
                }

                break;
            }
            }

            _Instances.Add(this);
        }
        public static FillableContentType Lookup(FillableContent content)
        {
            if (content == null)
            {
                return(FillableContentType.None);
            }

            return((FillableContentType)Array.IndexOf(m_ContentTypes, content));
        }
		public virtual void AcquireContent()
		{
			if( m_Content != null )
				return;

			m_Content = FillableContent.Acquire( this.GetWorldLocation(), this.Map );

			if( m_Content != null )
				Respawn();
		}
        public virtual void AcquireContent()
        {
            if (m_Content != null)
            {
                return;
            }

            m_Content = FillableContent.Acquire(GetWorldLocation(), Map);

            if (m_Content != null)
            {
                Respawn();
            }
        }
        public static FillableContent Acquire(Point3D loc, Map map)
        {
            if (map == null || map == Map.Internal)
            {
                return(null);
            }

            if (m_AcquireTable == null)
            {
                m_AcquireTable = new Dictionary <Type, FillableContent>();

                foreach (FillableContent fill in m_ContentTypes)
                {
                    foreach (Type t in fill.m_Vendors)
                    {
                        m_AcquireTable[t] = fill;
                    }
                }
            }

            Mobile          nearest = null;
            FillableContent content = null;

            var mobs = map.GetMobilesInRange(loc, 20);

            foreach (Mobile m in
                     mobs.OfType <Mobile>()
                     .Where(
                         m =>
                         nearest == null || !(m.GetDistanceToSqrt(loc) > nearest.GetDistanceToSqrt(loc)) ||
                         nearest is Cobbler && m is Provisioner))
            {
                FillableContent check;

                if (!m_AcquireTable.TryGetValue(m.GetType(), out check) || check == null)
                {
                    continue;
                }

                nearest = m;
                content = check;
            }

            mobs.Free();

            return(content);
        }
        public static FillableContent Acquire(Point3D loc, Map map)
        {
            if (map == null || map == Map.Internal)
            {
                return(null);
            }

            if (m_AcquireTable == null)
            {
                m_AcquireTable = new Hashtable();

                for (int i = 0; i < m_ContentTypes.Length; ++i)
                {
                    FillableContent fill = m_ContentTypes[i];

                    for (int j = 0; j < fill.m_Vendors.Length; ++j)
                    {
                        m_AcquireTable[fill.m_Vendors[j]] = fill;
                    }
                }
            }

            Mobile          nearest = null;
            FillableContent content = null;

            foreach (Mobile mob in map.GetMobilesInRange(loc, 20))
            {
                if (nearest != null && mob.GetDistanceToSqrt(loc) > nearest.GetDistanceToSqrt(loc) &&
                    !(nearest is Cobbler && mob is Provisioner))
                {
                    continue;
                }

                FillableContent check = m_AcquireTable[mob.GetType()] as FillableContent;

                if (check != null)
                {
                    nearest = mob;
                    content = check;
                }
            }

            return(content);
        }
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadEncodedInt();

            switch( version )
            {
                case 1:
                    {
                        this.m_Content = FillableContent.Lookup((FillableContentType)reader.ReadInt());
                        goto case 0;
                    }
                case 0:
                    {
                        if (reader.ReadBool())
                        {
                            this.m_NextRespawnTime = reader.ReadDeltaTime();

                            TimeSpan delay = this.m_NextRespawnTime - DateTime.UtcNow;
                            this.m_RespawnTimer = Timer.DelayCall(delay > TimeSpan.Zero ? delay : TimeSpan.Zero, new TimerCallback(Respawn));
                        }
                        else
                        {
                            this.CheckRespawn();
                        }

                        break;
                    }
            }
        }
        public static FillableContentType Lookup(FillableContent content)
        {
            if (content == null)
                return FillableContentType.None;

            return (FillableContentType)Array.IndexOf(m_ContentTypes, content);
        }
		public override void Deserialize(GenericReader reader)
		{
			base.Deserialize(reader);

			int version = reader.ReadEncodedInt();

			switch (version)
			{
				case 2:
				case 1:
					m_Content = FillableContent.Lookup((FillableContentType)reader.ReadInt());
					goto case 0;
				case 0:
					{
						if (version > 1 || reader.ReadBool())
						{
							m_NextRespawnTime = reader.ReadDeltaTime();
						}
						else
						{
							CheckRespawn();
						}

						break;
					}
			}

			_Instances.Add(this);
		}
		public virtual void AcquireContent()
		{
			if (m_Content != null)
			{
				return;
			}

			m_Content = FillableContent.Acquire(GetWorldLocation(), Map);

			if (m_Content != null)
			{
				Respawn();
			}
		}