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

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)