(src, distance)
| 24 | |
| 25 | |
| 26 | def getApplicationPerKey(src, distance): |
| 27 | inLockRange = checkLockRange(src=src, distance=distance) |
| 28 | inDroneRange = checkDroneControlRange(src=src, distance=distance) |
| 29 | applicationMap = {} |
| 30 | for mod in src.item.activeModulesIter(): |
| 31 | if not mod.isRemoteRepping(): |
| 32 | continue |
| 33 | if not inLockRange: |
| 34 | applicationMap[mod] = 0 |
| 35 | else: |
| 36 | applicationMap[mod] = calculateRangeFactor( |
| 37 | srcOptimalRange=mod.maxRange or 0, |
| 38 | srcFalloffRange=mod.falloff or 0, |
| 39 | distance=distance) |
| 40 | for drone in src.item.activeDronesIter(): |
| 41 | if not drone.isRemoteRepping(): |
| 42 | continue |
| 43 | if not inLockRange or not inDroneRange: |
| 44 | applicationMap[drone] = 0 |
| 45 | else: |
| 46 | applicationMap[drone] = 1 |
| 47 | # Ensure consistent results - round off a little to avoid float errors |
| 48 | for k, v in applicationMap.items(): |
| 49 | applicationMap[k] = floatUnerr(v) |
| 50 | return applicationMap |
no test coverage detected