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

ammoloadingUtils.py (1744B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\dogma\ammoloadingUtils.py
      2 from caching.memoize import Memoize
      3 from evetypes import GetGroupID, GetVolume
      4 from dogma import const as dogmaConst
      5 
      6 @Memoize
      7 def GetRequiredSpace(chargeTypeID, quantity):
      8     return GetVolume(chargeTypeID) * quantity
      9 
     10 
     11 @Memoize
     12 def GetChargeGroupsForLauncher(moduleTypeID, dogmaStaticMgr):
     13     ret = set()
     14     for chargeGroupAttribute in dogmaStaticMgr.GetChargeGroupAttributes():
     15         chargeGroup = dogmaStaticMgr.GetTypeAttribute2(moduleTypeID, chargeGroupAttribute)
     16         if chargeGroup > 0:
     17             ret.add(int(chargeGroup))
     18 
     19     return ret
     20 
     21 
     22 @Memoize
     23 def CanModuleBeLoadedWithCharges(moduleTypeID, dogmaStaticMgr):
     24     return bool(GetChargeGroupsForLauncher(moduleTypeID, dogmaStaticMgr))
     25 
     26 
     27 @Memoize
     28 def GetModuleCapacityForAmmoType(moduleTypeID, ammoTypeID, dogmaStaticMgr):
     29     moduleCapacity = dogmaStaticMgr.GetTypeAttribute2(moduleTypeID, dogmaConst.attributeCapacity)
     30     chargeSize = dogmaStaticMgr.GetTypeAttribute2(ammoTypeID, dogmaConst.attributeVolume)
     31     return int(moduleCapacity / chargeSize + 1e-07)
     32 
     33 
     34 @Memoize
     35 def IsChargeCompatibleWithLauncher(ammoTypeID, moduleTypeID, dogmaStaticMgr):
     36     if GetGroupID(ammoTypeID) in GetChargeGroupsForLauncher(moduleTypeID, dogmaStaticMgr):
     37         requiredChargeSize = dogmaStaticMgr.GetTypeAttribute2(moduleTypeID, dogmaConst.attributeChargeSize)
     38         if requiredChargeSize and requiredChargeSize == dogmaStaticMgr.GetTypeAttribute2(ammoTypeID, dogmaConst.attributeChargeSize):
     39             return True
     40         if not requiredChargeSize and GetModuleCapacityForAmmoType(moduleTypeID, ammoTypeID, dogmaStaticMgr) > 0:
     41             return True
     42     return False