private bool CheckPointOfInterestImprovementPrerequisites(PointOfInterestImprovementDefinition pointOfInterestImprovementDefinition, ref List <StaticString> failureFlags) { if (this.lastFailureFlags.Contains(ConstructionFlags.Discard)) { return(false); } IWorldPositionningService service = base.Game.Services.GetService <IWorldPositionningService>(); if (service == null) { this.lastFailureFlags.Add(ConstructionFlags.Discard); return(false); } DepartmentOfIndustry agency = this.City.Empire.GetAgency <DepartmentOfIndustry>(); if (agency == null) { this.lastFailureFlags.Add(ConstructionFlags.Discard); return(false); } ConstructionQueue constructionQueue = agency.GetConstructionQueue(this.City); if (constructionQueue == null) { this.lastFailureFlags.Add(ConstructionFlags.Discard); return(false); } int num = constructionQueue.Count(pointOfInterestImprovementDefinition); int num2 = 0; for (int i = 0; i < this.city.Region.PointOfInterests.Length; i++) { PointOfInterest pointOfInterest = this.city.Region.PointOfInterests[i]; if (!(pointOfInterest.PointOfInterestDefinition.PointOfInterestTemplateName != pointOfInterestImprovementDefinition.PointOfInterestTemplateName)) { if (pointOfInterest.PointOfInterestImprovement == null) { int explorationBits = service.GetExplorationBits(pointOfInterest.WorldPosition); if ((explorationBits & this.city.Empire.Bits) != 0) { num2++; } } } } if (num2 <= num) { this.lastFailureFlags.Add(ConstructionFlags.Discard); return(false); } return(true); }
protected override void ShowTooltip(WorldPosition worldPosition) { if (this.guiTooltipService == null) { return; } if (AgeManager.IsMouseCovered) { return; } IWorldPositionningService service = base.GameService.Game.Services.GetService <IWorldPositionningService>(); if (worldPosition.IsValid) { if (service != null) { if (service == null) { this.guiTooltipService.HideTooltip(); return; } if ((service.GetExplorationBits(worldPosition) & base.EmpireBits) == 0) { this.guiTooltipService.HideTooltip(); return; } AgeTransform cursorTooltipAnchor = this.guiTooltipService.GetCursorTooltipAnchor(); AgeTooltipAnchorMode anchorMode = AgeTooltipAnchorMode.FREE; global::CursorTarget cursorTarget = null; if (base.CursorTargetService.HighlightedCursorTargets.Count > 0) { for (int i = 0; i < base.CursorTargetService.HighlightedCursorTargets.Count; i++) { Diagnostics.Log("Cursortarget {0} at {1} is {2} and has tooltipclass {3}", new object[] { i, worldPosition, base.CursorTargetService.HighlightedCursorTargets[i].GetType(), (base.CursorTargetService.HighlightedCursorTargets[i] as global::CursorTarget).TooltipClass }); Diagnostics.Log("Conten: {0}", new object[] { (base.CursorTargetService.HighlightedCursorTargets[i] as global::CursorTarget).TooltipContent }); Diagnostics.Log("Context: {0}", new object[] { (base.CursorTargetService.HighlightedCursorTargets[i] as global::CursorTarget).TooltipContext.GetType() }); if (cursorTarget == null) { cursorTarget = (base.CursorTargetService.HighlightedCursorTargets[i] as global::CursorTarget); } else if (StaticString.IsNullOrEmpty(cursorTarget.TooltipClass)) { cursorTarget = (base.CursorTargetService.HighlightedCursorTargets[i] as global::CursorTarget); } } } string text = string.Format("Worldposition: {0} {1}", worldPosition.Row, worldPosition.Column); PointOfInterest pointOfInterest = service.GetPointOfInterest(worldPosition); if (pointOfInterest != null) { text += "\nhas POI!"; IQuestManagementService service2 = base.GameService.Game.Services.GetService <IQuestManagementService>(); IQuestRepositoryService service3 = base.GameService.Game.Services.GetService <IQuestRepositoryService>(); global::Empire empire = base.GameService.Game.Services.GetService <IPlayerControllerRepositoryService>().ActivePlayerController.Empire as global::Empire; if (empire != null) { text += string.Concat(new object[] { "\n", pointOfInterest.Type, ", ", pointOfInterest.Interaction.IsLocked(empire.Index, "ArmyActionSearch").ToString(), ", ", pointOfInterest.Interaction.Bits, ", ", empire.Bits, ", ", (pointOfInterest.Interaction.Bits & empire.Bits) == empire.Bits, ", ", pointOfInterest.UntappedDustDeposits.ToString(), ", ", SimulationGlobal.GlobalTagsContains(SeasonManager.RuinDustDepositsTag).ToString() }).ToString(); foreach (QuestMarker questMarker in service2.GetMarkersByBoundTargetGUID(pointOfInterest.GUID)) { Quest quest; if (service3.TryGetValue(questMarker.QuestGUID, out quest)) { text = text + "\nhas Questmarker for quest" + quest.QuestDefinition.Name; QuestBehaviour questBehaviour = service3.GetQuestBehaviour(quest.Name, empire.Index); if (questBehaviour != null) { QuestBehaviourTreeNode_ConditionCheck_HasResourceAmount questBehaviourTreeNode_ConditionCheck_HasResourceAmount; if (quest.QuestDefinition.Variables.First((QuestVariableDefinition p) => p.VarName == "$NameOfStrategicResourceToGather1") != null && this.TryGetFirstNodeOfType <QuestBehaviourTreeNode_ConditionCheck_HasResourceAmount>(questBehaviour.Root as BehaviourTreeNodeController, out questBehaviourTreeNode_ConditionCheck_HasResourceAmount)) { string resourceName = questBehaviourTreeNode_ConditionCheck_HasResourceAmount.ResourceName; int wantedAmount = questBehaviourTreeNode_ConditionCheck_HasResourceAmount.WantedAmount; text = text + "\nResource: " + resourceName; text = text + "\nAmount: " + wantedAmount; break; } } } } } } if (!(cursorTarget != null) || StaticString.IsNullOrEmpty(cursorTarget.TooltipClass)) { if (base.TooltipFilters != null) { if (!Array.Exists <StaticString>(base.TooltipFilters, (StaticString match) => match == "Terrain")) { this.guiTooltipService.HideTooltip(); return; } } this.guiTooltipService.ShowTooltip(string.Empty, text, worldPosition, cursorTooltipAnchor, anchorMode, 0f, false); return; } if (base.TooltipFilters == null || Array.Exists <StaticString>(base.TooltipFilters, (StaticString match) => match == cursorTarget.TooltipClass)) { this.guiTooltipService.ShowTooltip(string.Empty, text, worldPosition, cursorTooltipAnchor, anchorMode, 0f, false); return; } this.guiTooltipService.HideTooltip(); return; } } else { this.guiTooltipService.HideTooltip(); } }