def run(results, cmdenv, tdb): cmdenv = results.cmdenv tdb = cmdenv.tdb srcSystem = cmdenv.nearSystem ly = cmdenv.maxLyPer if ly is None: ly = tdb.maxSystemLinkLy results.summary = ResultRow() results.summary.near = srcSystem results.summary.ly = ly results.summary.stations = 0 distances = {srcSystem: 0.0} # Calculate the bounding dimensions for destSys, dist in tdb.genSystemsInRange(srcSystem, ly): distances[destSys] = dist showStations = cmdenv.detail wantStations = cmdenv.stations padSize = cmdenv.padSize planetary = cmdenv.planetary wantNoPlanet = cmdenv.noPlanet wantTrading = cmdenv.trading wantShipYard = cmdenv.shipyard wantBlackMarket = cmdenv.blackMarket wantOutfitting = cmdenv.outfitting wantRearm = cmdenv.rearm wantRefuel = cmdenv.refuel wantRepair = cmdenv.repair def station_filter(stations): for station in stations: if wantNoPlanet and station.planetary != 'N': continue if wantTrading and not station.isTrading: continue if wantBlackMarket and station.blackMarket != 'Y': continue if wantShipYard and station.shipyard != 'Y': continue if padSize and not station.checkPadSize(padSize): continue if planetary and not station.checkPlanetary(planetary): continue if wantOutfitting and station.outfitting != 'Y': continue if wantRearm and station.rearm != 'Y': continue if wantRefuel and station.refuel != 'Y': continue if wantRepair and station.repair != 'Y': continue yield station for (system, dist) in sorted(distances.items(), key=lambda x: x[1]): if showStations or wantStations: stations = [] for (station) in station_filter(system.stations): stations.append( ResultRow( station=station, age=station.itemDataAgeStr, )) if not stations and wantStations: continue row = ResultRow() row.system = system row.dist = dist row.stations = stations if showStations else [] results.rows.append(row) results.summary.stations += len(row.stations) return results
def run(results, cmdenv, tdb): cmdenv = results.cmdenv tdb = cmdenv.tdb srcSystem = cmdenv.nearSystem ly = cmdenv.maxLyPer if ly is None: ly = tdb.maxSystemLinkLy results.summary = ResultRow() results.summary.near = srcSystem results.summary.ly = ly results.summary.stations = 0 distances = { srcSystem: 0.0 } # Calculate the bounding dimensions for destSys, dist in tdb.genSystemsInRange(srcSystem, ly): distances[destSys] = dist showStations = cmdenv.detail wantStations = cmdenv.stations padSize = cmdenv.padSize wantTrading = cmdenv.trading wantShipYard = cmdenv.shipyard wantBlackMarket = cmdenv.blackMarket wantOutfitting = cmdenv.outfitting wantRearm = cmdenv.rearm wantRefuel = cmdenv.refuel wantRepair = cmdenv.repair def station_filter(stations): for station in stations: if wantTrading and not station.isTrading: continue if wantBlackMarket and station.blackMarket != 'Y': continue if wantShipYard and station.shipyard != 'Y': continue if padSize and not station.checkPadSize(padSize): continue if wantOutfitting and station.outfitting != 'Y': continue if wantRearm and station.rearm != 'Y': continue if wantRefuel and station.refuel != 'Y': continue if wantRepair and station.repair != 'Y': continue yield station for (system, dist) in sorted(distances.items(), key=lambda x: x[1]): if showStations or wantStations: stations = [] for (station) in station_filter(system.stations): stations.append( ResultRow( station=station, age=station.itemDataAgeStr, ) ) if not stations and wantStations: continue row = ResultRow() row.system = system row.dist = dist row.stations = stations if showStations else [] results.rows.append(row) results.summary.stations += len(row.stations) return results