protected override IEnumerator OnShow(params object[] parameters) { IPropertyEffectFeatureProvider propertyEffectFeatureProvider = this.context as IPropertyEffectFeatureProvider; if (this.context is OrbCostTooltipData) { propertyEffectFeatureProvider = (this.context as OrbCostTooltipData).Context; this.Value.Text = string.Empty; } if (propertyEffectFeatureProvider != null) { SimulationObject simulationObject = propertyEffectFeatureProvider.GetSimulationObject(); float propertyValue = simulationObject.GetPropertyValue("NumberOfPastWinters"); float num = simulationObject.GetPropertyValue("PrayerCostByTurnsSinceSeasonStart") * simulationObject.GetPropertyValue("NumberOfTurnsSinceSummerStart"); List <EffectDescription> list = new List <EffectDescription>(); if (propertyValue > 0f) { string toStringOverride = AgeLocalizer.Instance.LocalizeString("%FeatureOrbCostFromPastWinters").Replace("$Value", propertyValue.ToString()); list.Add(new EffectDescription(toStringOverride)); } if (num > 0f) { string toStringOverride2 = AgeLocalizer.Instance.LocalizeString("%FeatureOrbCostFromTurns").Replace("$Value", num.ToString()); list.Add(new EffectDescription(toStringOverride2)); } this.EffectMapper.LoadEffects(list, true); float num2 = 0f; IGameService service = Services.GetService <IGameService>(); if (service != null) { IPlayerControllerRepositoryService service2 = service.Game.Services.GetService <IPlayerControllerRepositoryService>(); ISeasonService service3 = service.Game.Services.GetService <ISeasonService>(); if (service3 != null && service2 != null) { num2 = service3.ComputePrayerOrbCost(service2.ActivePlayerController.Empire as global::Empire); } } this.Value.Text = num2.ToString() + base.GuiService.FormatSymbol(DepartmentOfTheTreasury.Resources.Orb); } yield return(base.OnShow(parameters)); yield break; }
private void FillWorldPositionEffects(Amplitude.Unity.Game.Empire activeEmpire, WorldPosition worldPosition, bool showTerraformDescriptors = false) { SimulationObject simulationObject = null; if (this.worldPositionningService.IsExploitable(worldPosition, activeEmpire.Bits)) { Region region = this.worldPositionningService.GetRegion(worldPosition); bool flag = region != null && region.BelongToEmpire(activeEmpire as global::Empire) && region.City != null; if (!region.IsOcean && !region.IsWasteland && simulationObject == null) { this.districtProxy.RemoveAllDescriptors_ModifierForwardType_ChildrenOnly(); DepartmentOfTheInterior.ApplyDistrictProxyDescriptors(activeEmpire, this.districtProxy, worldPosition, DistrictType.Exploitation, true, showTerraformDescriptors); if (flag) { if (this.districtProxy.Parent != region.City.SimulationObject) { region.City.SimulationObject.AddChild_ModifierForwardType_ChildrenOnly(this.districtProxy); } region.City.Refresh(true); } else { if (this.districtProxy.Parent != this.cityProxy) { this.cityProxy.AddChild_ModifierForwardType_ChildrenOnly(this.districtProxy); } if (this.cityProxy.Parent != activeEmpire.SimulationObject) { activeEmpire.SimulationObject.AddChild(this.cityProxy); } this.cityProxy.Refresh(); } simulationObject = this.districtProxy; simulationObject.Refresh(); } } if (simulationObject != null) { for (int i = 0; i < this.properties.Count; i++) { this.propertyValues[i] += simulationObject.GetPropertyValue(this.properties[i]); } } }
public int GetDistance(SimulationObject initiator) { if (this.preprocessedParameter is StaticString) { return((int)initiator.GetPropertyValue(this.preprocessedParameter as StaticString)); } if (this.preprocessedParameter is float) { return((int)((float)this.preprocessedParameter)); } if (this.preprocessedParameter is int) { return((int)this.preprocessedParameter); } Diagnostics.LogError("Parameter1 <{0}> is incorrect in battleEffectArea. It should be an integer!", new object[] { this.Parameter1 }); return(1); }
protected EffectDescription ParseBinaryModifier(SimulationDescriptor simulationDescriptor, BinarySimulationModifierDescriptor modifierDescriptor, SimulationObject context = null, bool forcePercent = false) { EffectDescription effectDescription = new EffectDescription(); bool round = false; string valueFormat = string.Empty; string empty = string.Empty; float neutralValue = this.ComputeOperationTypeToken(modifierDescriptor.Operation, ref empty, ref valueFormat, ref round); effectDescription.Operator = empty; if (forcePercent) { valueFormat = "#####0%"; } bool flag = false; string empty2 = string.Empty; string empty3 = string.Empty; float num = this.ComputeOperationTypeToken(modifierDescriptor.BinaryOperation, ref empty3, ref empty2, ref flag); object obj = modifierDescriptor.LeftPrecomputedValue; object obj2 = modifierDescriptor.RightPrecomputedValue; if (context != null && !modifierDescriptor.IsBindOnSource) { if (obj is StaticString) { obj = context.GetPropertyValue(obj as StaticString); } if (obj2 is StaticString) { obj2 = context.GetPropertyValue(obj2 as StaticString); } } else if (simulationDescriptor.SimulationPropertyDescriptors != null) { StaticString staticString = obj as StaticString; StaticString staticString2 = obj2 as StaticString; for (int i = 0; i < simulationDescriptor.SimulationPropertyDescriptors.Length; i++) { if (staticString != null && simulationDescriptor.SimulationPropertyDescriptors[i].Name == staticString && simulationDescriptor.SimulationPropertyDescriptors[i].BaseValue != 0f) { obj = simulationDescriptor.SimulationPropertyDescriptors[i].BaseValue; staticString = null; } if (staticString2 != null && simulationDescriptor.SimulationPropertyDescriptors[i].Name == staticString2 && simulationDescriptor.SimulationPropertyDescriptors[i].BaseValue != 0f) { obj2 = simulationDescriptor.SimulationPropertyDescriptors[i].BaseValue; staticString2 = null; } } } if (context != null && modifierDescriptor.FindStringValueForParserCalculation) { if (obj is StaticString) { obj = context.GetPropertyValue(obj as StaticString); } if (obj2 is StaticString) { obj2 = context.GetPropertyValue(obj2 as StaticString); } } if (obj is float && obj2 is float) { float num2 = this.ExecuteOperation(modifierDescriptor.BinaryOperation, (float)obj, (float)obj2); if (num2 < 0f && (modifierDescriptor.Operation == SimulationModifierDescriptor.ModifierOperation.Addition || modifierDescriptor.Operation == SimulationModifierDescriptor.ModifierOperation.Percent)) { effectDescription.Operator = string.Empty; } effectDescription.ValueFloat = num2; effectDescription.ValueFormat = valueFormat; effectDescription.Value = this.ComputeReadableFloat(num2, round, valueFormat, neutralValue); } else if (modifierDescriptor.BinaryOperation == SimulationModifierDescriptor.ModifierOperation.Multiplication && (obj is StaticString || obj2 is StaticString)) { if (obj is StaticString && obj2 is float) { obj = obj2; obj2 = modifierDescriptor.LeftPrecomputedValue; } if (obj2 is StaticString) { effectDescription.Per = this.ComputePropertySymbol(obj2 as StaticString); } if (obj is float) { effectDescription.ValueFloat = (float)obj; effectDescription.ValueFormat = valueFormat; effectDescription.Value = this.ComputeReadableFloat((float)obj, round, valueFormat, neutralValue); } else if (obj is StaticString) { effectDescription.Value = this.ComputePropertySymbol(obj as StaticString); } } else if (obj is float) { effectDescription.ValueFloat = (float)obj; effectDescription.ValueFormat = valueFormat; effectDescription.Value = this.ComputeReadableFloat((float)obj, round, valueFormat, neutralValue); } else { effectDescription.Value = string.Concat(new string[] { obj.ToString(), " ", empty3, " ", obj2.ToString() }); } if (string.IsNullOrEmpty(effectDescription.Value)) { return(null); } return(effectDescription); }
protected EffectDescription ParseCountModifier(SimulationDescriptor simulationDescriptor, CountSimulationModifierDescriptor modifierDescriptor, SimulationObject context = null, bool forcePercent = false) { EffectDescription effectDescription = new EffectDescription(); bool round = false; string valueFormat = string.Empty; string empty = string.Empty; float neutralValue = this.ComputeOperationTypeToken(modifierDescriptor.Operation, ref empty, ref valueFormat, ref round); effectDescription.Operator = empty; if (forcePercent) { valueFormat = "#####0%"; } object obj = modifierDescriptor.PrecomputedValue; if (obj is float) { effectDescription.ValueFloat = (float)obj; effectDescription.ValueFormat = valueFormat; effectDescription.Value = this.ComputeReadableFloat((float)obj, round, valueFormat, neutralValue); if (string.IsNullOrEmpty(effectDescription.Value)) { return(null); } if ((float)obj < 0f && (modifierDescriptor.Operation == SimulationModifierDescriptor.ModifierOperation.Addition || modifierDescriptor.Operation == SimulationModifierDescriptor.ModifierOperation.Percent)) { effectDescription.Operator = string.Empty; } } else if (obj is StaticString) { if (context != null) { obj = context.GetPropertyValue(obj as StaticString); } else if (simulationDescriptor.SimulationPropertyDescriptors != null) { StaticString staticString = obj as StaticString; for (int i = 0; i < simulationDescriptor.SimulationPropertyDescriptors.Length; i++) { if (staticString != null && simulationDescriptor.SimulationPropertyDescriptors[i].Name == staticString) { obj = simulationDescriptor.SimulationPropertyDescriptors[i].BaseValue; break; } } } if (obj is StaticString) { effectDescription.Value = this.ComputePropertySymbol(obj.ToString()); } else { effectDescription.ValueFloat = (float)obj; effectDescription.ValueFormat = valueFormat; effectDescription.Value = this.ComputeReadableFloat((float)obj, round, valueFormat, neutralValue); if (string.IsNullOrEmpty(effectDescription.Value)) { return(null); } } } string empty2 = string.Empty; if (modifierDescriptor.CountPath != null && modifierDescriptor.CountPath.Length > 0 && modifierDescriptor.CountPath[0].Length > 0) { this.GetScope(modifierDescriptor.CountPath, out empty2); } effectDescription.By = empty2; return(effectDescription); }