void IWorldEffectService.AddWorldEffect(WorldEffectDefinition worldEffectDefinition, WorldPosition position, int empireIndex, GameEntityGUID ownerGUID, XmlReader reader) { WorldEffect worldEffect = Activator.CreateInstance(worldEffectDefinition.EffectType) as WorldEffect; worldEffect.Initialize(empireIndex, position, ownerGUID, worldEffectDefinition, this); List <WorldEffect> list; if (!this.worldEffects.ContainsKey(position)) { list = new List <WorldEffect>(); this.worldEffects.Add(position, list); } else { list = this.worldEffects[position]; } list.Add(worldEffect); if (reader != null) { worldEffect.ReadXml(reader); } else { worldEffect.Activate(); } WorldCircle worldCircle = new WorldCircle(position, worldEffectDefinition.Range); List <short> list2 = new List <short>(); WorldPosition[] worldPositions = worldCircle.GetWorldPositions(this.WorldPositionningService.World.WorldParameters); for (int i = 0; i < worldPositions.Length; i++) { short regionIndex = this.WorldPositionningService.GetRegionIndex(worldPositions[i]); if (!list2.Contains(regionIndex)) { this.WorldPositionSimulationEvaluatorService.SetSomethingChangedOnRegion(regionIndex); list2.Add(regionIndex); } } }
public static void WriteWorldEffect(this NetworkWriter writer, WorldEffect worldEffect) { writer.WriteUInt16(worldEffect == null ? (ushort)0 : worldEffect.Id); }