/* * private IEntity ReadEntity( GenericReader reader ) * { * return World.FindEntity( reader.ReadInt() ); * } */ public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch (version) { case 1: { m_FlashType = (FlashType)reader.ReadEncodedInt(); goto case 0; } case 0: { m_EffectDelay = reader.ReadTimeSpan(); m_TriggerDelay = reader.ReadTimeSpan(); m_SoundDelay = reader.ReadTimeSpan(); m_Source = reader.ReadEntity(); m_Target = reader.ReadEntity(); m_Trigger = reader.ReadItem() as EffectController; m_FixedDirection = reader.ReadBool(); m_Explodes = reader.ReadBool(); m_PlaySoundAtTrigger = reader.ReadBool(); m_EffectType = (ECEffectType)reader.ReadEncodedInt(); m_EffectLayer = (EffectLayer)reader.ReadEncodedInt(); m_TriggerType = (EffectTriggerType)reader.ReadEncodedInt(); m_ItemID = reader.ReadEncodedInt(); m_Hue = reader.ReadEncodedInt(); m_RenderMode = reader.ReadEncodedInt(); m_Speed = reader.ReadEncodedInt(); m_Duration = reader.ReadEncodedInt(); m_ParticleEffect = reader.ReadEncodedInt(); m_ExplodeParticleEffect = reader.ReadEncodedInt(); m_ExplodeSound = reader.ReadEncodedInt(); m_Unknown = reader.ReadEncodedInt(); m_SoundID = reader.ReadEncodedInt(); m_TriggerRange = reader.ReadEncodedInt(); break; } } }
public static void Remove(GenericReader reader, int version) { int count = reader.ReadInt(); for (int i = 0; i < count; i++) { //int serial = reader.ReadInt(); //IEntity entity = World.FindEntity( serial ); IEntity entity = reader.ReadEntity(); if (entity != null) { if (m_RemoveList == null) { m_RemoveList = new ArrayList(); } m_RemoveList.Add(entity); } } reader.ReadBool(); // m_Running if (reader.ReadBool()) { reader.ReadDeltaTime(); // m_NextSpawn } }
public void Deserialize(GenericReader reader, int version) { int count = reader.ReadInt(); for (int i = 0; i < count; i++) { ISpawnable spawnableEntity = reader.ReadEntity() as ISpawnable; if (spawnableEntity != null) { Add(spawnableEntity); } } m_Running = reader.ReadBool(); if (reader.ReadBool()) { m_NextSpawn = reader.ReadDeltaTime(); if (this.Spawning) { if (m_SpawnTimer != null) { m_SpawnTimer.Stop(); } TimeSpan delay = m_NextSpawn - DateTime.Now; m_SpawnTimer = Timer.DelayCall(delay > TimeSpan.Zero ? delay : TimeSpan.Zero, new TimerCallback(TimerCallback)); } } CheckTimer(); }
public override void Deserialize(GenericReader reader) { DateTime time; base.Deserialize(reader); int version = reader.ReadInt(); if (version < 3) { Old_Deserialize(reader, version); return; } switch (version) { case 3: { TimeSpan.TryParse(reader.ReadString(), out m_Decay); m_Level = (AccessLevel)reader.ReadInt(); goto case 2; } case 2: { //case 2 m_Sound = reader.ReadInt(); //case 1 m_Chance = reader.ReadDouble(); //case 0 m_Active = reader.ReadBool(); m_Creature = reader.ReadString(); m_Message = reader.ReadString(); m_Location = reader.ReadPoint3D(); m_HomeRange = reader.ReadInt(); m_Team = reader.ReadInt(); m_Limit = reader.ReadInt(); DateTime.TryParse(reader.ReadString(), out m_NextSpawn); m_Delay = reader.ReadTimeSpan(); int size = reader.ReadInt(); m_Spawned = new ArrayList(size); for (int i = 0; i < size; ++i) { //IEntity e = World.FindEntity(reader.ReadInt()); IEntity e = reader.ReadEntity(); DateTime.TryParse(reader.ReadString(), out time); if (e != null) { m_Object = new SpawnedObject(e, time); m_Spawned.Add(m_Object); } } break; } } }
public void Old_Deserialize(GenericReader reader, int version) { switch (version) { case 2: { m_Sound = reader.ReadInt(); goto case 1; } case 1: { m_Chance = reader.ReadDouble(); goto case 0; } case 0: { m_Active = reader.ReadBool(); m_Creature = reader.ReadString(); m_Message = reader.ReadString(); m_Location = reader.ReadPoint3D(); m_HomeRange = reader.ReadInt(); m_Team = reader.ReadInt(); m_Limit = reader.ReadInt(); DateTime.TryParse(reader.ReadString(), out m_NextSpawn); m_Delay = reader.ReadTimeSpan(); int size = reader.ReadInt(); m_Spawned = new ArrayList(size); for (int i = 0; i < size; ++i) { //IEntity e = World.FindEntity(reader.ReadInt()); IEntity e = reader.ReadEntity(); if (e != null) { m_Object = new SpawnedObject(e); m_Spawned.Add(m_Object); } } break; } } if (version == 0) { m_Chance = 1; } }
public SpawnerEntry(Spawner parent, GenericReader reader) { int version = reader.ReadInt(); m_CreaturesName = reader.ReadString(); m_CreaturesProbability = reader.ReadInt(); m_CreaturesMaxCount = reader.ReadInt(); m_Properties = reader.ReadString(); m_Parameters = reader.ReadString(); int count = reader.ReadInt(); m_Creatures = new List <IEntity>(count); for (int i = 0; i < count; ++i) { //IEntity e = World.FindEntity( reader.ReadInt() ); IEntity e = reader.ReadEntity(); if (e != null) { if (e is Item) { ((Item)e).Spawner = parent; } else if (e is Mobile) { ((Mobile)e).Spawner = parent; if (e is BaseCreature) { ((BaseCreature)e).RemoveIfUntamed = true; } } m_Creatures.Add(e); if (!parent.Creatures.ContainsKey(e)) { parent.Creatures.Add(e, this); } } } }
public UberSpawnerEntry(UberSpawner parent, GenericReader reader) { int version = reader.ReadInt(); m_SpawnedName = reader.ReadString(); m_SpawnedProbability = reader.ReadInt(); m_SpawnedMaxCount = reader.ReadInt(); m_Properties = reader.ReadString(); m_Parameters = reader.ReadString(); int count = reader.ReadInt(); m_Spawned = new List <ISpawnable>(count); for (int i = 0; i < count; ++i) { //IEntity e = World.FindEntity( reader.ReadInt() ); ISpawnable e = reader.ReadEntity() as ISpawnable; if (e != null) { e.Spawner = parent; if (e is BaseCreature) { ((BaseCreature)e).RemoveIfUntamed = true; } m_Spawned.Add(e); if (!parent.Spawned.ContainsKey(e)) { parent.Spawned.Add(e, this); } } } }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); m_Spawned = new Dictionary <ISpawnable, SpawnerEntry>(); if (version < 7) { m_Entries = new List <SpawnerEntry>(); } switch (version) { case 7: { int size = reader.ReadInt(); m_Entries = new List <SpawnerEntry>(size); for (int i = 0; i < size; ++i) { m_Entries.Add(new SpawnerEntry(this, reader)); } goto case 4; //Skip the other crap } case 6: { int size = reader.ReadInt(); bool addentries = m_Entries.Count == 0; for (int i = 0; i < size; ++i) { if (addentries) { m_Entries.Add(new SpawnerEntry(String.Empty, 100, reader.ReadInt())); } else { m_Entries[i].SpawnedMaxCount = reader.ReadInt(); } } goto case 5; } case 5: { int size = reader.ReadInt(); bool addentries = m_Entries.Count == 0; for (int i = 0; i < size; ++i) { if (addentries) { m_Entries.Add(new SpawnerEntry(String.Empty, reader.ReadInt(), 1)); } else { m_Entries[i].SpawnedProbability = reader.ReadInt(); } } goto case 4; } case 4: { m_WalkingRange = reader.ReadInt(); goto case 3; } case 3: case 2: { m_WayPoint = reader.ReadItem() as WayPoint; goto case 1; } case 1: { m_Group = reader.ReadBool(); goto case 0; } case 0: { m_MinDelay = reader.ReadTimeSpan(); m_MaxDelay = reader.ReadTimeSpan(); m_Count = reader.ReadInt(); m_Team = reader.ReadInt(); m_HomeRange = reader.ReadInt(); m_Running = reader.ReadBool(); TimeSpan ts = TimeSpan.Zero; if (m_Running) { ts = reader.ReadDeltaTime() - DateTime.UtcNow; } if (version < 7) { int size = reader.ReadInt(); bool addentries = m_Entries.Count == 0; for (int i = 0; i < size; ++i) { string typeName = reader.ReadString(); if (addentries) { m_Entries.Add(new SpawnerEntry(typeName, 100, 1)); } else { m_Entries[i].SpawnedName = typeName; } if (SpawnerType.GetType(typeName) == null) { if (m_WarnTimer == null) { m_WarnTimer = new WarnTimer(); } m_WarnTimer.Add(Location, Map, typeName); } } int count = reader.ReadInt(); for (int i = 0; i < count; ++i) { ISpawnable e = reader.ReadEntity() as ISpawnable; if (e != null) { if (e is BaseCreature) { ((BaseCreature)e).RemoveIfUntamed = true; } e.Spawner = this; for (int j = 0; j < m_Entries.Count; j++) { if (SpawnerType.GetType(m_Entries[j].SpawnedName) == e.GetType()) { m_Entries[j].Spawned.Add(e); m_Spawned.Add(e, m_Entries[j]); break; } } } } } DoTimer(ts); break; } } if (version < 4) { m_WalkingRange = m_HomeRange; } }
/* private IEntity ReadEntity( GenericReader reader ) { return World.FindEntity( reader.ReadInt() ); } */ public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); switch ( version ) { case 0: { m_EffectDelay = reader.ReadTimeSpan(); m_TriggerDelay = reader.ReadTimeSpan(); m_SoundDelay = reader.ReadTimeSpan(); m_Source = reader.ReadEntity(); m_Target = reader.ReadEntity(); m_Trigger = reader.ReadItem() as EffectController; m_FixedDirection = reader.ReadBool(); m_Explodes = reader.ReadBool(); m_PlaySoundAtTrigger = reader.ReadBool(); m_EffectType = (ECEffectType)reader.ReadEncodedInt(); m_EffectLayer = (EffectLayer)reader.ReadEncodedInt(); m_TriggerType = (EffectTriggerType)reader.ReadEncodedInt(); m_ItemID = reader.ReadEncodedInt(); m_Hue = reader.ReadEncodedInt(); m_RenderMode = reader.ReadEncodedInt(); m_Speed = reader.ReadEncodedInt(); m_Duration = reader.ReadEncodedInt(); m_ParticleEffect = reader.ReadEncodedInt(); m_ExplodeParticleEffect = reader.ReadEncodedInt(); m_ExplodeSound = reader.ReadEncodedInt(); m_Unknown = reader.ReadEncodedInt(); m_SoundID = reader.ReadEncodedInt(); m_TriggerRange = reader.ReadEncodedInt(); break; } } }
public UberSpawnerEntry(UberSpawner parent, GenericReader reader) { int version = reader.ReadInt(); m_SpawnedName = reader.ReadString(); m_SpawnedProbability = reader.ReadInt(); m_SpawnedMaxCount = reader.ReadInt(); m_Properties = reader.ReadString(); m_Parameters = reader.ReadString(); int count = reader.ReadInt(); m_Spawned = new List<ISpawnable>(count); for (int i = 0; i < count; ++i) { //IEntity e = World.FindEntity( reader.ReadInt() ); ISpawnable e = reader.ReadEntity() as ISpawnable; if (e != null) { e.Spawner = parent; if (e is BaseCreature) ((BaseCreature)e).RemoveIfUntamed = true; m_Spawned.Add(e); if (!parent.Spawned.ContainsKey(e)) parent.Spawned.Add(e, this); } } }