sentryGun.py (4120B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\environment\spaceObject\sentryGun.py 2 from eve.common.lib import appConst 3 import eve.client.script.environment.spaceObject.spaceObject as spaceObject 4 import eve.client.script.environment.model.turretSet as turretSet 5 import eveSpaceObject 6 import evegraphics.settings as gfxsettings 7 TURRET_TYPE_ID = {eveSpaceObject.gfxRaceAmarr: 462, 8 eveSpaceObject.gfxRaceGallente: 569, 9 eveSpaceObject.gfxRaceCaldari: 574, 10 eveSpaceObject.gfxRaceMinmatar: 498, 11 eveSpaceObject.gfxRaceAngel: 462, 12 eveSpaceObject.gfxRaceSleeper: 4049, 13 eveSpaceObject.gfxRaceJove: 4049} 14 TURRET_FALLBACK_TYPE_ID = 462 15 MATERIALIZATION_DURATION_SECONDS = 15 16 MATERIALIZATION_DURATION_ATTRIBUTE = 'Trig_MaterializationDuration' 17 MATERIALIZATION_BOOLEAN_ATTRIBUTE = 'Trig_IsMaterialized' 18 FORTIFICATION_UNIT_EFFECTS_BY_TYPE = {appConst.typeWebifyingFortificationUnit: 'TGFU_WEB_ON', 19 appConst.typeECMFortificationUnit: 'TGFU_ECM_ON', 20 appConst.typeSmartBombingFortificationUnit: 'TGFU_SMARTBOMB_ON', 21 appConst.typeSensorDampeningFortificationUnit: 'TGFU_DAMP_ON', 22 appConst.typeMicroJumpFieldFortificationUnit: 'TGFU_FIELDJUMP_ON'} 23 TYPES_THAT_NEED_DOGMA_TURRETS = [appConst.typeEDENCOMGunStar, 24 appConst.typeEDENCOMHeavyGunStar, 25 appConst.typeTriglavianDisintegratorWerpost, 26 appConst.typeTriglavianDamagedWerpost] 27 28 def IsTriglavianFortificationUnit(typeID): 29 return bool(FORTIFICATION_UNIT_EFFECTS_BY_TYPE.get(typeID, False)) 30 31 32 def GetTriglavianFortificationUnitOnlinedEffect(typeID): 33 return FORTIFICATION_UNIT_EFFECTS_BY_TYPE.get(typeID, None) 34 35 36 class SentryGun(spaceObject.SpaceObject): 37 38 def __init__(self): 39 spaceObject.SpaceObject.__init__(self) 40 self.modules = {} 41 self.fitted = False 42 self.typeID = None 43 self.turretTypeID = TURRET_FALLBACK_TYPE_ID 44 45 def Assemble(self): 46 self.UnSync() 47 self.SetStaticRotation() 48 raceName = self.typeData.get('sofRaceName', None) 49 if raceName is not None: 50 self.turretTypeID = TURRET_TYPE_ID.get(raceName, TURRET_FALLBACK_TYPE_ID) 51 if gfxsettings.Get(gfxsettings.UI_TURRETS_ENABLED): 52 self.FitHardpoints() 53 self.SetupSharedAmbientAudio() 54 55 def FitHardpoints(self, blocking = False): 56 if self.fitted: 57 return 58 if self.model is None: 59 self.logger.warning('FitHardpoints - No model') 60 return 61 if self.typeID is None: 62 self.logger.warning('FitHardpoints - No typeID') 63 return 64 self.fitted = True 65 self.modules = {} 66 if self.typeID in TYPES_THAT_NEED_DOGMA_TURRETS: 67 self.modules = turretSet.TurretSet.FitTurrets(self.id, self.model, shipFaction=None) 68 if len(self.modules) == 0: 69 ts = turretSet.TurretSet.FitTurret(self.model, self.turretTypeID, 1, self.typeData.get('sofFactionName', None)) 70 if ts is not None: 71 self.modules[self.id] = ts 72 73 def LookAtMe(self): 74 if not self.model: 75 return 76 if not self.fitted: 77 self.FitHardpoints() 78 79 def Release(self): 80 if self.released: 81 return 82 self.modules = None 83 spaceObject.SpaceObject.Release(self) 84 85 def _SetControllerVariablesForTFUsFromSlimItem(self, slimItem): 86 onlined_effect = GetTriglavianFortificationUnitOnlinedEffect(slimItem.typeID) 87 self.SetControllerVariable(MATERIALIZATION_DURATION_ATTRIBUTE, MATERIALIZATION_DURATION_SECONDS) 88 if slimItem.poseID: 89 self.SetControllerVariable(MATERIALIZATION_BOOLEAN_ATTRIBUTE, 1) 90 else: 91 self.SetControllerVariable(MATERIALIZATION_BOOLEAN_ATTRIBUTE, 0) 92 self.SetControllerVariable(onlined_effect, slimItem.poseID > 1) 93 94 def SetControllerVariablesFromSlimItem(self, slimItem): 95 spaceObject.SpaceObject.SetControllerVariablesFromSlimItem(self, slimItem) 96 if slimItem is None: 97 return 98 if IsTriglavianFortificationUnit(slimItem.typeID): 99 self._SetControllerVariablesForTFUsFromSlimItem(slimItem)