NovaBryan/EVE_Dump
Log | Files | 📦 下载最新源码 (.zip) | Refs | README

directionalScanUtil.py (3082B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\inflight\scannerFiles\directionalScanUtil.py
      2 import math
      3 from carbonui.uicore import uicore
      4 from eveuniverse.solar_systems import get_max_directional_scanner_range
      5 SCANMODE_TARGET = 1
      6 SCANMODE_CAMERA = 2
      7 RANGEMODE_AU = 1
      8 RANGEMODE_KM = 2
      9 
     10 def SetActiveScanMode(scanMode):
     11     if GetActiveScanMode() != scanMode:
     12         settings.char.ui.Set('directionalScannerMode', scanMode)
     13         sm.ScatterEvent('OnDirectionalScannerScanModeChanged', scanMode)
     14 
     15 
     16 def GetActiveScanMode():
     17     return settings.char.ui.Get('directionalScannerMode', SCANMODE_TARGET)
     18 
     19 
     20 def ToggleScanMode():
     21     scanMode = GetActiveScanMode()
     22     if scanMode == SCANMODE_TARGET:
     23         SetScanModeCamera()
     24     else:
     25         SetScanModeTarget()
     26 
     27 
     28 def SetScanModeTarget():
     29     SetActiveScanMode(SCANMODE_TARGET)
     30 
     31 
     32 def SetScanModeCamera():
     33     SetActiveScanMode(SCANMODE_CAMERA)
     34 
     35 
     36 def SetScanConeDisplayState(displayState):
     37     if IsDscanConeShown() != displayState:
     38         settings.char.ui.Set('directionalScannerShowCone', displayState)
     39         sm.ScatterEvent('OnDirectionalScannerShowCone', displayState)
     40 
     41 
     42 def IsDscanConeShown():
     43     return settings.char.ui.Get('directionalScannerShowCone', True)
     44 
     45 
     46 def ConvertKmToAu(kmValue):
     47     auValue = kmValue * 1000 / const.AU
     48     return auValue
     49 
     50 
     51 def ConvertAuToKm(auValue):
     52     kmValue = int(auValue * const.AU / 1000)
     53     return kmValue
     54 
     55 
     56 def GetScanRange():
     57     return settings.user.ui.Get('dir_scanrange', const.AU * GetMaxRangeAU())
     58 
     59 
     60 def GetScanRangeInMeters():
     61     return GetScanRange() * 1000
     62 
     63 
     64 def SetScanRange(scanRangeKM):
     65     maxRangeKm = GetMaxRangeKM()
     66     scanRangeKM = min(maxRangeKm, max(MIN_RANGE_KM, scanRangeKM))
     67     settings.user.ui.Set('dir_scanrange', scanRangeKM)
     68     sm.ScatterEvent('OnDirectionalScannerRangeChanged', GetScanRangeInMeters())
     69 
     70 
     71 MIN_RANGE_KM = 10
     72 _MAX_RANGE_AU = 14.3
     73 MIN_RANGE_AU = ConvertKmToAu(MIN_RANGE_KM)
     74 _MAX_RANGE_KM = ConvertAuToKm(_MAX_RANGE_AU)
     75 
     76 def GetMaxRangeAU():
     77     return ConvertKmToAu(GetMaxRangeKM())
     78 
     79 
     80 def GetMaxRangeKM():
     81     return GetMaxRangeM() / 1000.0
     82 
     83 
     84 def GetMaxRangeM():
     85     try:
     86         dogmaLocation = sm.GetService('clientDogmaIM').GetDogmaLocation()
     87         shipMaxRange = dogmaLocation.GetAccurateAttributeValue(session.shipid, const.attributeMaxDirectionalScanRange)
     88         solarsystemMaxRange = get_max_directional_scanner_range(session.solarsystemid2)
     89         if solarsystemMaxRange is None:
     90             allowedMaxRange = shipMaxRange
     91         else:
     92             allowedMaxRange = min(solarsystemMaxRange, shipMaxRange)
     93         return allowedMaxRange
     94     except Exception as e:
     95         return _MAX_RANGE_KM * 1000.0
     96 
     97 
     98 def GetScanAngle():
     99     return settings.user.ui.Get('scan_angleSlider', math.pi / 2)
    100 
    101 
    102 def SetScanAngle(angle):
    103     angle = max(0, min(angle, 2 * math.pi))
    104     settings.user.ui.Set('scan_angleSlider', angle)
    105     sm.ScatterEvent('OnDirectionalScannerAngleChanged', angle)
    106 
    107 
    108 def IsDscanShortcutPressed():
    109     return uicore.cmd.IsCombatCommandLoaded('CmdRefreshDirectionalScan')