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);
            }
        }
    }
Example #2
0
 public static void WriteWorldEffect(this NetworkWriter writer, WorldEffect worldEffect)
 {
     writer.WriteUInt16(worldEffect == null ? (ushort)0 : worldEffect.Id);
 }