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

moduleStateUtil.py (3102B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\shared\fittingScreen\moduleStateUtil.py
      2 from eve.client.script.ui.shared.fittingScreen.fittingUtil import GetDefaultAndOverheatEffectForType
      3 from eve.client.script.ui.shared.fittingScreen import OFFLINE, ONLINE, ACTIVE, OVERHEATED, OFFLINE_COLOR, ONLINE_COLOR, ACTIVE_COLOR, OVERHEATED_COLOR
      4 from inventorycommon.util import IsSubsystemFlag
      5 from localization import GetByLabel
      6 from shipfitting.fittingStuff import IsRigSlot
      7 PASSIVE = 0
      8 ACTIVATABLE = 1
      9 RIG = 2
     10 SUBSYSTEM = 3
     11 
     12 def GetCurrentStateForDogmaItemWithEffects(dogmaItem, typeEffectInfo, flagID):
     13     if IsRigSlot(flagID):
     14         if typeEffectInfo.defaultEffect.effectID in dogmaItem.activeEffects:
     15             return ONLINE
     16         else:
     17             return OFFLINE
     18     elif IsPassive(typeEffectInfo):
     19         if dogmaItem.IsOnline():
     20             return ONLINE
     21         else:
     22             return OFFLINE
     23     else:
     24         if not dogmaItem.IsOnline():
     25             return OFFLINE
     26         if not dogmaItem.IsActive():
     27             return ONLINE
     28         if typeEffectInfo.overloadEffect and typeEffectInfo.overloadEffect.effectID in dogmaItem.activeEffects:
     29             return OVERHEATED
     30         return ACTIVE
     31 
     32 
     33 def IsPassive(typeEffectInfo):
     34     isPassive = not typeEffectInfo.defaultEffect or not typeEffectInfo.isActivatable
     35     return isPassive
     36 
     37 
     38 def GetTextForCurrentStateForDogmaItem(dogmaItem):
     39     effectsForType = GetDefaultAndOverheatEffectForType(dogmaItem.typeID)
     40     currentState = GetCurrentStateForDogmaItemWithEffects(dogmaItem, effectsForType, dogmaItem.flagID)
     41     if IsRigSlot(dogmaItem.flagID):
     42         moduleType = RIG
     43     elif IsSubsystemFlag(dogmaItem.flagID):
     44         moduleType = SUBSYSTEM
     45         currentState = ONLINE
     46     elif IsPassive(effectsForType):
     47         moduleType = PASSIVE
     48     else:
     49         moduleType = ACTIVATABLE
     50     color = COLOR_BY_ACTIVATION_STATE.get(currentState)
     51     label = activationStateLabels.get((currentState, moduleType))
     52     return (label, color, currentState)
     53 
     54 
     55 activationStateLabels = {(OFFLINE, ACTIVATABLE): GetByLabel('UI/Fitting/FittingWindow/ModuleModeOffline'),
     56  (OFFLINE, PASSIVE): GetByLabel('UI/Fitting/FittingWindow/ModuleModeOfflinePassive'),
     57  (OFFLINE, RIG): GetByLabel('UI/Fitting/FittingWindow/ModuleModeOfflineRig'),
     58  (ONLINE, SUBSYSTEM): GetByLabel('UI/Fitting/FittingWindow/ModuleModeOfflineSubsystem'),
     59  (ONLINE, ACTIVATABLE): GetByLabel('UI/Fitting/FittingWindow/ModuleModeOnline'),
     60  (ONLINE, PASSIVE): GetByLabel('UI/Fitting/FittingWindow/ModuleModeOnlinePassive'),
     61  (ONLINE, RIG): GetByLabel('UI/Fitting/FittingWindow/ModuleModeOnlineRig'),
     62  (ACTIVE, ACTIVATABLE): GetByLabel('UI/Fitting/FittingWindow/ModuleModeActive'),
     63  (ACTIVE, PASSIVE): GetByLabel('UI/Fitting/FittingWindow/ModuleModeOnlinePassive'),
     64  (OVERHEATED, ACTIVATABLE): GetByLabel('UI/Fitting/FittingWindow/ModuleModeOverheated')}
     65 COLOR_BY_ACTIVATION_STATE = {OFFLINE: OFFLINE_COLOR[:3] + (1.0,),
     66  ONLINE: ONLINE_COLOR[:3] + (1.5,),
     67  ACTIVE: ACTIVE_COLOR[:3] + (1.0,),
     68  OVERHEATED: OVERHEATED_COLOR[:3] + (1.0,)}