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); }