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

hangarRegistry.py (12194B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\view\hangarRegistry.py
      2 from __future__ import absolute_import
      3 import evetypes
      4 import const
      5 import inventorycommon.const as invC
      6 from eveuniverse.security import is_low_sec_or_lower_solar_system
      7 from .hangarBehaviours import capitalHangarBehaviours, defaultHangarBehaviours, modularHangarBehaviours, modularHangarCapitalBehaviours
      8 from .hangarBehaviours.modularHangarBehavioursConstants import GetShipSizeClass
      9 HANGAR_TYPE_OVERRIDE = None
     10 HANGAR_VFX_TRIGGERS_MULTIEFFECT_GID = 28022
     11 ALL_DEFAULT_BEHAVIOURS = {'ship': defaultHangarBehaviours.DefaultHangarShipBehaviour,
     12  'drone': defaultHangarBehaviours.DefaultHangarDroneBehaviour}
     13 ALL_CAPITAL_BEHAVIOURS = {'ship': capitalHangarBehaviours.CapitalHangarShipBehaviour,
     14  'drone': capitalHangarBehaviours.CapitalHangarDroneBehaviour}
     15 ALL_MODULAR_BEHAVIOURS = {'ship': modularHangarBehaviours.ModularHangarShipBehaviour,
     16  'drone': modularHangarBehaviours.ModularHangarDroneBehaviour}
     17 ALL_MODULAR_CAPITAL_BEHAVIOURS = {'ship': modularHangarCapitalBehaviours.ModularCapitalHangarShipBehaviour,
     18  'drone': modularHangarCapitalBehaviours.ModularCapitalHangarDroneBehaviour}
     19 OLD_HANGAR_CAMERA_SETTINGS = [[1,
     20   5.5,
     21   3.534,
     22   1.375,
     23   1.634,
     24   1.2,
     25   2.0,
     26   0.7]]
     27 DEFAULT_HANGAR_DICTIONARY = {'name': 'unassigned',
     28  'isModular': False,
     29  'isCapital': False,
     30  'isEnlistmentDockingEnabled': False,
     31  'dockCameraSettings': OLD_HANGAR_CAMERA_SETTINGS,
     32  'activityLevelThresholds': {'MID_THRESHOLD': 40,
     33                              'HIGH_THRESHOLD': 100},
     34  'sceneGraphicID': 0,
     35  'hangarModelGraphicID': 0,
     36  'factionOverrideMap': None,
     37  'hangarType': 0}
     38 AMARR_NORMAL_HANGAR_SIZE = dict(DEFAULT_HANGAR_DICTIONARY, name='AMARR', sceneGraphicID=20273, hangarModelGraphicID=24407, hangarType=1)
     39 CALDARI_NORMAL_HANGAR_SIZE = dict(DEFAULT_HANGAR_DICTIONARY, name='CALDARI', sceneGraphicID=20271, hangarModelGraphicID=24408, hangarType=2)
     40 GALLENTE_NORMAL_HANGAR_SIZE = dict(DEFAULT_HANGAR_DICTIONARY, name='GALLENTE', sceneGraphicID=20274, hangarModelGraphicID=24409, hangarType=3)
     41 MINMATAR_NORMAL_HANGAR_SIZE = dict(DEFAULT_HANGAR_DICTIONARY, name='MINMTAR', sceneGraphicID=20272, hangarModelGraphicID=24410, factionOverrideMap={invC.typeDamagedMinmatarStation: 'minmatarbase_damaged'}, hangarType=4)
     42 CITADEL_NORMAL_HANGAR_SIZE = dict(DEFAULT_HANGAR_DICTIONARY, name='CITADEL_NORMAL', sceneGraphicID=21259, hangarModelGraphicID=24411)
     43 CITADEL_CAPITAL_HANGAR_SIZE = dict(DEFAULT_HANGAR_DICTIONARY, name='CITADEL_LARGE', isCapital=True, sceneGraphicID=25577, hangarModelGraphicID=24412)
     44 JITA_4_4_NORMAL_HANGAR_SIZE = dict(DEFAULT_HANGAR_DICTIONARY, name='JITA_4_4', dockCameraSettings=[[4,
     45   -0.1,
     46   -1.23,
     47   1.466,
     48   1.55,
     49   1.2,
     50   4.0,
     51   0.7],
     52  [4,
     53   0.05,
     54   -2.5,
     55   1.496,
     56   1.57,
     57   1.2,
     58   3.0,
     59   0.7],
     60  [4,
     61   -6.2,
     62   -3.6,
     63   1.5,
     64   1.24,
     65   1.2,
     66   2.0,
     67   0.7],
     68  [4,
     69   0.05,
     70   1.17,
     71   1.55,
     72   1.4,
     73   1.2,
     74   2.0,
     75   0.7],
     76  [4,
     77   1.0,
     78   0.16,
     79   1.52,
     80   1.6,
     81   1.2,
     82   3.0,
     83   0.8],
     84  [3,
     85   2.55,
     86   3.542,
     87   1.5,
     88   1.0,
     89   1.2,
     90   3.0,
     91   0.7],
     92  [3,
     93   4.0,
     94   3.142,
     95   1.4,
     96   0.1,
     97   3.0,
     98   15.0,
     99   0.6],
    100  [1,
    101   1.0,
    102   0.0,
    103   1.2,
    104   1.633,
    105   3.0,
    106   15.0,
    107   0.7]], activityLevelThresholds={'MID_THRESHOLD': 1000,
    108  'HIGH_THRESHOLD': 1500}, sceneGraphicID=24526, hangarModelGraphicID=24525)
    109 AIR_NORMAL_HANGAR_SIZE = dict(DEFAULT_HANGAR_DICTIONARY, name='AIR', dockCameraSettings=[[1,
    110   2.6,
    111   1.5708,
    112   1.0,
    113   0.0,
    114   3.5,
    115   0.5,
    116   0.8], [9,
    117   -3.2,
    118   -0.34,
    119   1.0,
    120   1.3,
    121   1.5,
    122   100.0,
    123   0.9]], activityLevelThresholds={'MID_THRESHOLD': 25,
    124  'HIGH_THRESHOLD': 50}, sceneGraphicID=25045, hangarModelGraphicID=25044, hangarType=7)
    125 UPWELL_MODULAR_HANGAR = dict(DEFAULT_HANGAR_DICTIONARY, isModular=True, name='UPWELL_MODULAR', sceneGraphicID=25263, hangarModelGraphicID=25235, dockingEffectGraphicID=25244, factionOverrideMap={invC.typeRefineryAthanor: 'upwell_interior-refinery',
    126  invC.typeRefineryTatara: 'upwell_interior-refinery',
    127  invC.typeEngineeringComplexRaitaru: 'upwell_interior-indy',
    128  invC.typeEngineeringComplexAzbel: 'upwell_interior-indy',
    129  invC.typeEngineeringComplexSotiyo: 'upwell_interior-indy'}, sceneGIDOverrideMap={invC.typeRefineryAthanor: 25661,
    130  invC.typeRefineryTatara: 25661,
    131  invC.typeEngineeringComplexRaitaru: 25659,
    132  invC.typeEngineeringComplexAzbel: 25659,
    133  invC.typeEngineeringComplexSotiyo: 25659}, hangarType=5)
    134 UPWELL_MODULAR_HANGAR_LOWSEC = dict(UPWELL_MODULAR_HANGAR, name='UPWELL_MODULAR_LOWSEC', hangarModelGraphicID=25605, dockingEffectGraphicID=25244)
    135 UPWELL_MODULAR_HANGAR_CAPITAL = dict(DEFAULT_HANGAR_DICTIONARY, isModular=True, isCapital=True, name='UPWELL_MODULAR_CAPITAL', sceneGraphicID=25577, hangarModelGraphicID=25568, dockingEffectGraphicID=25244, factionOverrideMap={invC.typeRefineryAthanor: 'upwell_interior-refinery',
    136  invC.typeRefineryTatara: 'upwell_interior-refinery',
    137  invC.typeEngineeringComplexRaitaru: 'upwell_interior-indy',
    138  invC.typeEngineeringComplexAzbel: 'upwell_interior-indy',
    139  invC.typeEngineeringComplexSotiyo: 'upwell_interior-indy'}, sceneGIDOverrideMap={invC.typeRefineryAthanor: 25662,
    140  invC.typeRefineryTatara: 25662,
    141  invC.typeEngineeringComplexRaitaru: 25660,
    142  invC.typeEngineeringComplexAzbel: 25660,
    143  invC.typeEngineeringComplexSotiyo: 25660}, hangarType=6)
    144 DEATHLESS_MODULAR_HANGAR = dict(DEFAULT_HANGAR_DICTIONARY, isModular=True, isEnlistmentDockingEnabled=True, isCapital=False, name='DEATHLESS_MODULAR_HANGAR', sceneGraphicID=26369, hangarModelGraphicID=26303, dockingEffectGraphicID=26436, factionOverrideMap={invC.typeDeathlessStation: 'deathless'}, hangarType=8)
    145 DEATHLESS_FOB_HANGAR_ANGELS = dict(DEFAULT_HANGAR_DICTIONARY, isModular=True, isCapital=False, name='DEATHLESS_FOB_HANGAR_ANGELS', sceneGraphicID=26441, hangarModelGraphicID=26374, dockingEffectGraphicID=26437, hangarType=9)
    146 DEATHLESS_FOB_HANGAR_GUERISTAS = dict(DEATHLESS_FOB_HANGAR_ANGELS, name='DEATHLESS_FOB_HANGAR_GUERISTAS', hangarModelGraphicID=26447)
    147 AIR_MODULAR_HANGAR = dict(DEFAULT_HANGAR_DICTIONARY, isModular=True, name='AIR_MODULAR_HANGAR', sceneGraphicID=33142, hangarModelGraphicID=33091, dockingEffectGraphicID=25244, hangarType=6)
    148 HANGARS = {AMARR_NORMAL_HANGAR_SIZE['name']: AMARR_NORMAL_HANGAR_SIZE,
    149  CALDARI_NORMAL_HANGAR_SIZE['name']: CALDARI_NORMAL_HANGAR_SIZE,
    150  GALLENTE_NORMAL_HANGAR_SIZE['name']: GALLENTE_NORMAL_HANGAR_SIZE,
    151  MINMATAR_NORMAL_HANGAR_SIZE['name']: MINMATAR_NORMAL_HANGAR_SIZE,
    152  CITADEL_NORMAL_HANGAR_SIZE['name']: CITADEL_NORMAL_HANGAR_SIZE,
    153  CITADEL_CAPITAL_HANGAR_SIZE['name']: CITADEL_CAPITAL_HANGAR_SIZE,
    154  JITA_4_4_NORMAL_HANGAR_SIZE['name']: JITA_4_4_NORMAL_HANGAR_SIZE,
    155  AIR_NORMAL_HANGAR_SIZE['name']: AIR_NORMAL_HANGAR_SIZE,
    156  UPWELL_MODULAR_HANGAR['name']: UPWELL_MODULAR_HANGAR,
    157  UPWELL_MODULAR_HANGAR_LOWSEC['name']: UPWELL_MODULAR_HANGAR_LOWSEC,
    158  UPWELL_MODULAR_HANGAR_CAPITAL['name']: UPWELL_MODULAR_HANGAR_CAPITAL,
    159  DEATHLESS_MODULAR_HANGAR['name']: DEATHLESS_MODULAR_HANGAR,
    160  DEATHLESS_FOB_HANGAR_ANGELS['name']: DEATHLESS_FOB_HANGAR_ANGELS,
    161  DEATHLESS_FOB_HANGAR_GUERISTAS['name']: DEATHLESS_FOB_HANGAR_GUERISTAS,
    162  AIR_MODULAR_HANGAR['name']: AIR_MODULAR_HANGAR}
    163 
    164 def ShipNeedsACapitalHangar(shipTypeID):
    165     typeGroup = evetypes.GetGroupID(shipTypeID)
    166     return GetShipSizeClass(typeGroup) == 3
    167 
    168 
    169 def GetHangarType(stationTypeID, shipTypeID, stationItemID = None):
    170     if HANGAR_TYPE_OVERRIDE is not None:
    171         return HANGAR_TYPE_OVERRIDE
    172     if stationItemID == invC.stationJitaIV4:
    173         return JITA_4_4_NORMAL_HANGAR_SIZE['name']
    174     if shipTypeID and ShipNeedsACapitalHangar(shipTypeID):
    175         return UPWELL_MODULAR_HANGAR_CAPITAL['name']
    176     if stationTypeID == invC.typeAirOutpost:
    177         return AIR_NORMAL_HANGAR_SIZE['name']
    178     if stationTypeID == invC.typeAirTradeHub:
    179         return AIR_MODULAR_HANGAR['name']
    180     if stationTypeID == invC.typeDeathlessStation:
    181         return DEATHLESS_MODULAR_HANGAR['name']
    182     if stationTypeID == invC.typeDeathlessFOBStationAngels:
    183         return DEATHLESS_FOB_HANGAR_ANGELS['name']
    184     if stationTypeID == invC.typeDeathlessFOBStationGuristas:
    185         return DEATHLESS_FOB_HANGAR_GUERISTAS['name']
    186     if evetypes.GetCategoryID(stationTypeID) == const.categoryStructure:
    187         if is_low_sec_or_lower_solar_system(session.solarsystemid2) and isHangarTypeCapitalDockable(stationTypeID):
    188             hangarType = UPWELL_MODULAR_HANGAR_LOWSEC['name']
    189         else:
    190             hangarType = UPWELL_MODULAR_HANGAR['name']
    191     else:
    192         raceID = evetypes.GetRaceID(stationTypeID)
    193         if raceID == const.raceAmarr:
    194             hangarType = AMARR_NORMAL_HANGAR_SIZE['name']
    195         elif raceID == const.raceCaldari:
    196             hangarType = CALDARI_NORMAL_HANGAR_SIZE['name']
    197         elif raceID == const.raceGallente:
    198             hangarType = GALLENTE_NORMAL_HANGAR_SIZE['name']
    199         elif raceID == const.raceMinmatar:
    200             hangarType = MINMATAR_NORMAL_HANGAR_SIZE['name']
    201         else:
    202             hangarType = MINMATAR_NORMAL_HANGAR_SIZE['name']
    203     return hangarType
    204 
    205 
    206 def GetHangarTypeOverrideKeys():
    207     overrideKeys = {}
    208     for each in HANGARS:
    209         overrideKeys[each] = HANGARS[each].get('hangarModelGraphicID')
    210 
    211     return overrideKeys
    212 
    213 
    214 def isHangarTypeCapitalDockable(stationTypeID):
    215     return stationTypeID in (invC.typeEngineeringComplexSotiyo, invC.typeCitadelKeepstar, invC.typeCitadelFortizar)
    216 
    217 
    218 def isHangarModular(stationTypeID, shipTypeID, stationItemID = None):
    219     return HANGARS.get(GetHangarType(stationTypeID, shipTypeID, stationItemID)).get('isModular')
    220 
    221 
    222 def isEnlistmentDockingEnabled(stationTypeID, shipTypeID, stationItemID = None):
    223     return HANGARS.get(GetHangarType(stationTypeID, shipTypeID, stationItemID)).get('isEnlistmentDockingEnabled')
    224 
    225 
    226 def GetDockingEffectGraphicID(stationTypeID, shipTypeID, stationItemID = None):
    227     return HANGARS.get(GetHangarType(stationTypeID, shipTypeID, stationItemID)).get('dockingEffectGraphicID')
    228 
    229 
    230 def isHangarCapital(stationTypeID, shipTypeID, stationItemID = None):
    231     return HANGARS.get(GetHangarType(stationTypeID, shipTypeID, stationItemID)).get('isCapital')
    232 
    233 
    234 def GetHangarBehaviours(stationTypeID, shipTypeID, stationItemID = None):
    235     if isHangarModular(stationTypeID, shipTypeID, stationItemID):
    236         if isHangarCapital(stationTypeID, shipTypeID, stationItemID):
    237             return ALL_MODULAR_CAPITAL_BEHAVIOURS
    238         else:
    239             return ALL_MODULAR_BEHAVIOURS
    240     else:
    241         if isHangarCapital(stationTypeID, shipTypeID, stationItemID):
    242             return ALL_CAPITAL_BEHAVIOURS
    243         return ALL_DEFAULT_BEHAVIOURS
    244 
    245 
    246 def GetHangarName(stationTypeID, shipTypeID, stationItemID = None):
    247     return HANGARS.get(GetHangarType(stationTypeID, shipTypeID, stationItemID)).get('name')
    248 
    249 
    250 def GetHangarSceneGraphicID(stationTypeID, shipTypeID, stationItemID = None):
    251     hangar = HANGARS.get(GetHangarType(stationTypeID, shipTypeID, stationItemID))
    252     sceneGIDMap = hangar.get('sceneGIDOverrideMap')
    253     if sceneGIDMap is not None:
    254         gID = sceneGIDMap.get(stationTypeID)
    255         if gID is not None:
    256             return gID
    257     return hangar.get('sceneGraphicID')
    258 
    259 
    260 def GetHangarModelGraphicID(stationTypeID, shipTypeID, stationItemID = None):
    261     return HANGARS.get(GetHangarType(stationTypeID, shipTypeID, stationItemID)).get('hangarModelGraphicID')
    262 
    263 
    264 def GetHangarDockCameraMapping(stationTypeID, shipTypeID, stationItemID = None):
    265     return HANGARS.get(GetHangarType(stationTypeID, shipTypeID, stationItemID)).get('dockCameraSettings')
    266 
    267 
    268 def GetHangarFactionDataOverwrite(stationTypeID, shipTypeID, stationItemID = None):
    269     FOMap = HANGARS.get(GetHangarType(stationTypeID, shipTypeID, stationItemID)).get('factionOverrideMap')
    270     if FOMap is not None and stationTypeID in FOMap:
    271         return FOMap[stationTypeID]
    272     else:
    273         return
    274 
    275 
    276 def GetHangarMidAndHighActivityThresholds(stationTypeID, shipTypeID, stationItemID = None):
    277     settings = HANGARS.get(GetHangarType(stationTypeID, shipTypeID, stationItemID)).get('activityLevelThresholds')
    278     return (settings.get('MID_THRESHOLD'), settings.get('HIGH_THRESHOLD'))
    279 
    280 
    281 def GetHangarIdentifier(stationTypeID, shipTypeID, stationItemID = None):
    282     return HANGARS.get(GetHangarType(stationTypeID, shipTypeID, stationItemID)).get('hangarType')