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')