001package com.fs.starfarer.api.impl.campaign.rulecmd;
002
003import java.util.List;
004import java.util.Map;
005
006import com.fs.starfarer.api.Global;
007import com.fs.starfarer.api.campaign.CampaignFleetAPI;
008import com.fs.starfarer.api.campaign.InteractionDialogAPI;
009import com.fs.starfarer.api.campaign.ai.FleetAssignmentDataAPI;
010import com.fs.starfarer.api.campaign.rules.MemoryAPI;
011import com.fs.starfarer.api.util.Misc.Token;
012
013/**
014 * AnyNearbyFleetsHostileAndAware <factionId>
015 */
016public class AnyNearbyFleetsHostileAndAware extends BaseCommandPlugin {
017
018        
019        public boolean execute(String ruleId, InteractionDialogAPI dialog, List<Token> params, Map<String, MemoryAPI> memoryMap) {
020                
021                String factionId = params.get(0).getString(memoryMap);
022                //float range = Global.getSettings().getFloat("sensorRangeMax");
023
024                CampaignFleetAPI playerFleet = Global.getSector().getPlayerFleet();
025
026                for (CampaignFleetAPI fleet : playerFleet.getContainingLocation().getFleets()) {
027                        if (!fleet.getFaction().getId().equals(factionId)) continue;
028                        if (fleet.getAI() == null) continue;
029                        if (fleet.isStationMode()) continue;
030                        
031//                      VisibilityLevel level = playerFleet.getVisibilityLevelTo(fleet);
032//                      MemoryAPI mem = fleet.getMemoryWithoutUpdate();
033//                      if (!mem.contains(MemFlags.MEMORY_KEY_SAW_PLAYER_WITH_TRANSPONDER_OFF)) {
034//                              if (level == VisibilityLevel.NONE) continue;
035//                      }
036                        if (!fleet.getAI().isHostileTo(playerFleet)) continue;
037                        
038                        FleetAssignmentDataAPI curr = fleet.getAI().getCurrentAssignment();
039                        if (curr != null && curr.getTarget() == playerFleet) {
040                                return true;
041                        }
042                }
043
044                return false;
045        }
046        
047}
048
049
050
051