private void ListNearbyCreepingNodesFiltered(Army army) { if (army == null) { throw new ArgumentNullException("army"); } this.creepingNodes.Clear(); IGameService service = Services.GetService <IGameService>(); Diagnostics.Assert(service != null); global::Game game = service.Game as global::Game; Diagnostics.Assert(game != null); IWorldPositionningService service2 = service.Game.Services.GetService <IWorldPositionningService>(); Diagnostics.Assert(service2 != null); IGameEntityRepositoryService service3 = service.Game.Services.GetService <IGameEntityRepositoryService>(); Diagnostics.Assert(service3 != null); List <StaticString> list = new List <StaticString>(); List <WorldPosition> neighbours = army.WorldPosition.GetNeighbours(game.World.WorldParameters); for (int i = 0; i < neighbours.Count; i++) { PointOfInterest pointOfInterest = service2.GetPointOfInterest(neighbours[i]); if (pointOfInterest != null && pointOfInterest.CreepingNodeGUID != GameEntityGUID.Zero) { CreepingNode creepingNode = null; if (service3.TryGetValue <CreepingNode>(pointOfInterest.CreepingNodeGUID, out creepingNode) && this.CanToggleOverCreepingNode(army, creepingNode, ref list) && !this.creepingNodes.Contains(creepingNode)) { this.creepingNodes.Add(creepingNode); } } } }
public int ListNearbyPointsOfInterest(Army army) { if (army == null) { throw new ArgumentNullException("army"); } this.PointsOfInterest.Clear(); IGameService service = Services.GetService <IGameService>(); if (service == null) { return(0); } global::Game game = service.Game as global::Game; if (game == null) { return(0); } IPathfindingService service2 = service.Game.Services.GetService <IPathfindingService>(); IWorldPositionningService service3 = service.Game.Services.GetService <IWorldPositionningService>(); Diagnostics.Assert(service3 != null); PointOfInterest pointOfInterest = service3.GetPointOfInterest(army.WorldPosition); if (pointOfInterest != null) { this.AddPOIifPossible(pointOfInterest, service2, army); } List <WorldPosition> neighbours = army.WorldPosition.GetNeighbours(game.World.WorldParameters); for (int i = 0; i < neighbours.Count; i++) { PointOfInterest pointOfInterest2 = service3.GetPointOfInterest(neighbours[i]); if (pointOfInterest2 != null) { this.AddPOIifPossible(pointOfInterest2, service2, army); } } return(this.PointsOfInterest.Count); }
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(); } }