Ejemplo n.º 1
0
        public void Add(Amplitude.StaticString name, float startingValue, SimulationModifierDescriptor modif = null)
        {
            SimulationPropertyDescriptor desc = new SimulationPropertyDescriptor(name);

            new DynData <SimulationPropertyDescriptor>(desc).Set <float>("BaseValue", startingValue);
            Properties.Add(desc);
            if (modif != null)
            {
                Modifiers.Add(modif);
            }
        }
Ejemplo n.º 2
0
    public override IEnumerator LoadGame(Game game)
    {
        yield return(base.LoadGame(game));

        ISessionService service = Services.GetService <ISessionService>();

        this.InterpreterContext = new InterpreterContext(null);
        this.InterpreterContext.SimulationObject = new SimulationObject("VictoryController");
        this.InterpreterContext.SimulationObject.ModifierForward = ModifierForwardType.ParentOnly;
        float num = 1f;
        IDatabase <SimulationDescriptor> database = Databases.GetDatabase <SimulationDescriptor>(false);

        if (database != null)
        {
            SimulationDescriptor simulationDescriptor;
            if (database.TryGetValue("ClassVictoryController", out simulationDescriptor))
            {
                this.InterpreterContext.SimulationObject.AddDescriptor(simulationDescriptor);
            }
            string value = Amplitude.Unity.Runtime.Runtime.Registry.GetValue(VictoryManager.Registers.LobbyDataFilter);
            if (!string.IsNullOrEmpty(value))
            {
                string[] array = value.Split(Amplitude.String.Separators, StringSplitOptions.RemoveEmptyEntries);
                if (array.Length != 0 && service != null && service.Session != null)
                {
                    foreach (string text in array)
                    {
                        string lobbyData = service.Session.GetLobbyData <string>(text, null);
                        if (!string.IsNullOrEmpty(lobbyData))
                        {
                            string x = string.Format("VictoryModifier{0}{1}", text, lobbyData);
                            if (database.TryGetValue(x, out simulationDescriptor))
                            {
                                this.InterpreterContext.SimulationObject.AddDescriptor(simulationDescriptor);
                                SimulationModifierDescriptor simulationModifierDescriptor = Array.Find <SimulationModifierDescriptor>(simulationDescriptor.SimulationModifierDescriptors, (SimulationModifierDescriptor y) => y is SingleSimulationModifierDescriptor && y.TargetPropertyName == "PeacePointThreshold");
                                if (simulationModifierDescriptor != null)
                                {
                                    num *= float.Parse((simulationModifierDescriptor as SingleSimulationModifierDescriptor).Value);
                                }
                            }
                        }
                    }
                }
            }
            this.InterpreterContext.SimulationObject.Refresh();
        }
        foreach (Empire empire in base.Game.Empires)
        {
            if (empire is MajorEmpire)
            {
                (empire as MajorEmpire).SetPropertyBaseValue("TreatyPeacePointPerTurnMult", num);
            }
        }
        int  num2 = 0;
        int  num3 = 0;
        bool flag = Services.GetService <IDownloadableContentService>().IsShared(DownloadableContent16.ReadOnlyName);

        if (base.Game.World.Regions != null)
        {
            for (int j = 0; j < base.Game.World.Regions.Length; j++)
            {
                if (!base.Game.World.Regions[j].IsOcean && !base.Game.World.Regions[j].IsWasteland)
                {
                    num2++;
                }
                else if (flag && base.Game.World.Regions[j].IsOcean && base.Game.World.Regions[j].NavalEmpire != null)
                {
                    PirateCouncil agency = base.Game.World.Regions[j].NavalEmpire.GetAgency <PirateCouncil>();
                    if (agency != null && agency.GetRegionFortresses(base.Game.World.Regions[j]).Count > 0)
                    {
                        num3++;
                    }
                }
            }
        }
        if (num2 + num3 <= 0)
        {
            Diagnostics.LogError("Invalid number of regions (value: {0}), rounding up to '1'.", new object[]
            {
                num2
            });
            num2 = 1;
        }
        Diagnostics.Log("Registering new data (name: {0}, land: {1}, ocean: {2})", new object[]
        {
            "TotalNumberOfRegions",
            num2,
            num3
        });
        this.InterpreterContext.Register("NumberOfLandRegions", num2);
        this.InterpreterContext.Register("TotalNumberOfRegions", num2 + num3);
        if (game.Turn == 0 && service != null && service.Session != null)
        {
            using (IEnumerator <VictoryCondition> enumerator = this.VictoryConditions.GetEnumerator())
            {
                while (enumerator.MoveNext())
                {
                    VictoryCondition victoryCondition = enumerator.Current;
                    if (service.Session.GetLobbyData(victoryCondition.Name) != null && !service.Session.GetLobbyData <bool>(victoryCondition.Name, false))
                    {
                        if (!this.VictoryConditionsDiscabledThisGame.Contains(victoryCondition.Name))
                        {
                            this.VictoryConditionsDiscabledThisGame.Add(victoryCondition.Name);
                            Diagnostics.Log("Disabling victory condition '{0}'.", new object[]
                            {
                                victoryCondition.Name
                            });
                        }
                        if (!this.VictoryConditionsDiscardedThisGame.Contains(victoryCondition.Name))
                        {
                            this.VictoryConditionsDiscardedThisGame.Add(victoryCondition.Name);
                            Diagnostics.Log("Discarding victory condition '{0}'.", new object[]
                            {
                                victoryCondition.Name
                            });
                        }
                    }
                }
                yield break;
            }
        }
        yield break;
    }
Ejemplo n.º 3
0
        public void ParseSimulationDescriptor(SimulationDescriptor descriptor, List <EffectDescription> effectDescriptions, StaticString defaultClass, bool displayEmptyDescriptors = false, SimulationObject context = null, bool isContextTheSource = true, bool isForceOn = false, bool parseTitle = false)
        {
            if (descriptor == null)
            {
                throw new ArgumentNullException("descriptor");
            }
            GuiElement guiElement;

            if (this.GuiService.GuiPanelHelper.TryGetGuiElement(descriptor.Name, out guiElement) && guiElement is ExtendedGuiElement)
            {
                ExtendedGuiElement extendedGuiElement = guiElement as ExtendedGuiElement;
                if (extendedGuiElement.TooltipElement != null)
                {
                    if (!string.IsNullOrEmpty(extendedGuiElement.TooltipElement.EffectOverride))
                    {
                        EffectDescription effectDescription = new EffectDescription();
                        effectDescription.Override = AgeLocalizer.Instance.LocalizeString(extendedGuiElement.TooltipElement.EffectOverride);
                        if (extendedGuiElement.Name.ToString().Contains("Bonus1Value"))
                        {
                            effectDescription.Override = effectDescription.Override.Replace("+500", "+" + 500f * (float)this.GetGameSpeed() / 2f);
                        }
                        else if (extendedGuiElement.Name.ToString().Contains("Bonus2Value"))
                        {
                            effectDescription.Override = effectDescription.Override.Replace("+1000", "+" + 1000f * (float)this.GetGameSpeed() / 2f);
                        }
                        if (parseTitle)
                        {
                            effectDescription.Title = AgeLocalizer.Instance.LocalizeString(guiElement.Title);
                        }
                        effectDescriptions.Add(effectDescription);
                    }
                    if (extendedGuiElement.TooltipElement.Ignore)
                    {
                        return;
                    }
                }
            }
            if (descriptor.SimulationModifierDescriptors == null)
            {
                if (this.GuiService.GuiPanelHelper.TryGetGuiElement(descriptor.Name, out guiElement))
                {
                    if (guiElement is ExtendedGuiElement)
                    {
                        ExtendedGuiElement extendedGuiElement2 = guiElement as ExtendedGuiElement;
                        if (extendedGuiElement2.TooltipElement != null && extendedGuiElement2.TooltipElement.Ignore)
                        {
                            return;
                        }
                    }
                    EffectDescription effectDescription2 = new EffectDescription();
                    effectDescription2.Override = AgeLocalizer.Instance.LocalizeString(guiElement.Title);
                    if (guiElement.Name == "TechnologyNecrophages8")
                    {
                        effectDescription2.Override = effectDescription2.Override.Replace("+1", "+" + this.GetGameSpeed());
                    }
                    if (parseTitle)
                    {
                        effectDescription2.Title = AgeLocalizer.Instance.LocalizeString(guiElement.Title);
                    }
                    effectDescription2.On = this.ComputeReadableString(defaultClass, false);
                    effectDescriptions.Add(effectDescription2);
                }
                return;
            }
            bool flag = false;

            if (parseTitle)
            {
                flag = true;
            }
            for (int i = 0; i < descriptor.SimulationModifierDescriptors.Length; i++)
            {
                SimulationModifierDescriptor simulationModifierDescriptor = descriptor.SimulationModifierDescriptors[i];
                if (simulationModifierDescriptor.Operation != SimulationModifierDescriptor.ModifierOperation.Force && !simulationModifierDescriptor.TooltipHidden)
                {
                    EffectDescription effectDescription3 = null;
                    this.ParseModifier(descriptor, simulationModifierDescriptor, defaultClass, context, isContextTheSource, out effectDescription3, isForceOn);
                    if (effectDescription3 != null)
                    {
                        if (context != null && isContextTheSource)
                        {
                            effectDescription3.From = this.ComputeReadableString(descriptor.Name, true);
                        }
                        if (flag)
                        {
                            effectDescription3.Title = AgeLocalizer.Instance.LocalizeString("%" + descriptor.Name + "Title");
                            flag = false;
                        }
                        effectDescriptions.Add(effectDescription3);
                    }
                }
            }
        }
Ejemplo n.º 4
0
        protected virtual void ParseModifier(SimulationDescriptor simulationDescriptor, SimulationModifierDescriptor modifierDescriptor, StaticString defaultClass, SimulationObject context, bool isContextSource, out EffectDescription effectMapperElementDescription, bool isForceOn = false)
        {
            effectMapperElementDescription = null;
            bool       forcePercent = false;
            GuiElement guiElement;

            if (this.GuiService.GuiPanelHelper.TryGetGuiElement(modifierDescriptor.TargetPropertyName, out guiElement) && guiElement is ExtendedGuiElement)
            {
                ExtendedGuiElement extendedGuiElement = guiElement as ExtendedGuiElement;
                if (extendedGuiElement.TooltipElement != null)
                {
                    if (extendedGuiElement.TooltipElement.Ignore)
                    {
                        return;
                    }
                    forcePercent = extendedGuiElement.TooltipElement.Percent;
                }
            }
            SimulationObject simulationObject = context;

            if (!isContextSource)
            {
                simulationObject = null;
            }
            if (modifierDescriptor is SingleSimulationModifierDescriptor)
            {
                effectMapperElementDescription = this.ParseSingleModifier(simulationDescriptor, modifierDescriptor as SingleSimulationModifierDescriptor, simulationObject, forcePercent);
            }
            else if (modifierDescriptor is BinarySimulationModifierDescriptor)
            {
                effectMapperElementDescription = this.ParseBinaryModifier(simulationDescriptor, modifierDescriptor as BinarySimulationModifierDescriptor, simulationObject, forcePercent);
            }
            else if (modifierDescriptor is CountSimulationModifierDescriptor)
            {
                effectMapperElementDescription = this.ParseCountModifier(simulationDescriptor, modifierDescriptor as CountSimulationModifierDescriptor, simulationObject, forcePercent);
            }
            if (effectMapperElementDescription == null || string.IsNullOrEmpty(effectMapperElementDescription.Value))
            {
                return;
            }
            if (!string.IsNullOrEmpty(modifierDescriptor.TooltipOverride))
            {
                if (modifierDescriptor.LocalizeTooltipOverride)
                {
                    effectMapperElementDescription.Format = AgeLocalizer.Instance.LocalizeString(modifierDescriptor.TooltipOverride);
                }
                else
                {
                    effectMapperElementDescription.Format = modifierDescriptor.TooltipOverride;
                }
            }
            effectMapperElementDescription.Symbol = this.ComputePropertySymbol(modifierDescriptor.TargetPropertyName);
            if (simulationObject != null)
            {
            }
            if (simulationObject == null || isForceOn)
            {
                string on = string.Empty;
                if (modifierDescriptor.Path != null && modifierDescriptor.Path.Length > 0 && modifierDescriptor.Path[0].Length > 0)
                {
                    this.GetScope(modifierDescriptor.Path, out on);
                }
                else
                {
                    on = this.ComputeReadableString(defaultClass, true);
                }
                effectMapperElementDescription.On = on;
            }
            string condition = string.Empty;

            if (modifierDescriptor.Path != null && modifierDescriptor.Path.Length > 0 && modifierDescriptor.Path[0].Length > 0)
            {
                condition = this.ComputeDuringString(modifierDescriptor.Path);
            }
            effectMapperElementDescription.Condition = condition;
        }