Beispiel #1
0
    private void UpdateWeatherEffectAtPosition(WorldPosition worldPosition, Army army, bool apply)
    {
        WeatherDefinition weatherDefinitionAtPosition = this.GetWeatherDefinitionAtPosition(worldPosition);

        if (weatherDefinitionAtPosition == null)
        {
            return;
        }
        if (weatherDefinitionAtPosition.SimulationDescriptorReferences == null)
        {
            return;
        }
        if (apply)
        {
            for (int i = 0; i < weatherDefinitionAtPosition.SimulationDescriptorReferences.Length; i++)
            {
                SimulationDescriptor simulationDescriptor;
                if (this.simulationDescriptorsDatabase.TryGetValue(weatherDefinitionAtPosition.SimulationDescriptorReferences[i].Name, out simulationDescriptor) && !army.SimulationObject.Tags.Contains(simulationDescriptor.Name))
                {
                    army.AddDescriptor(simulationDescriptor, false);
                }
            }
        }
        else
        {
            for (int j = 0; j < weatherDefinitionAtPosition.SimulationDescriptorReferences.Length; j++)
            {
                army.RemoveDescriptorByName(weatherDefinitionAtPosition.SimulationDescriptorReferences[j].Name);
            }
        }
        army.Refresh(false);
    }