示例#1
0
    private void AddEffectsToUnits(MapBoostDefinition definition, Unit[] units, global::Empire empire)
    {
        List <MapBoostEffect> list = new List <MapBoostEffect>();

        definition.GetValidEffects(empire, out list);
        if (list != null)
        {
            for (int i = 0; i < units.Length; i++)
            {
                for (int j = 0; j < list.Count; j++)
                {
                    SimulationDescriptorReference[] simulationDescriptorReferences = list[j].SimulationDescriptorReferences;
                    for (int k = 0; k < simulationDescriptorReferences.Length; k++)
                    {
                        SimulationDescriptor simulationDescriptor;
                        if (this.simulationDescriptorsDatabase.TryGetValue(simulationDescriptorReferences[k].Name, out simulationDescriptor) && !units[i].SimulationObject.Tags.Contains(simulationDescriptor.Name))
                        {
                            units[i].AddMapBoost(definition.Name, simulationDescriptor);
                            units[i].HasMapBoost = true;
                        }
                    }
                    if (list[j].ExperienceReward > 0f)
                    {
                        units[i].GainXp(list[j].ExperienceReward, false, true);
                    }
                }
            }
        }
    }