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

station.py (3961B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\environment\spaceObject\station.py
      2 from eve.client.script.environment.spaceObject.spaceObject import SpaceObject
      3 import evegraphics.utils as gfxutils
      4 import uthread2
      5 from eve.common.script.sys.idCheckers import IsTriglavianSystem
      6 from stackless_response_router.exceptions import TimeoutException
      7 
      8 class Station(SpaceObject):
      9     __notifyevents__ = ['OnSlimItemUpdated']
     10 
     11     def __init__(self):
     12         SpaceObject.__init__(self)
     13         self.OnSlimItemUpdated(self.typeData.get('slimItem'))
     14         sm.RegisterNotify(self)
     15 
     16     def GetDNA(self):
     17         materialSetID = self.typeData.get('slimItem').skinMaterialSetID
     18         return gfxutils.BuildSOFDNAFromGraphicID(self.typeData.get('graphicID'), materialSetID=materialSetID)
     19 
     20     def Assemble(self):
     21         super(Station, self).Assemble()
     22         if hasattr(self.model, 'ChainAnimationEx'):
     23             self.model.ChainAnimationEx('NormalLoop', 0, 0, 1.0)
     24         self.SetupAmbientAudio()
     25         self._SetAudioVariables()
     26         if IsTriglavianSystem(session.solarsystemid):
     27             self.TriggerStateObject('triglavianOwned')
     28         self.SetStaticRotation()
     29         uthread2.StartTasklet(self._SetCorruptionAndSuppression)
     30 
     31     def _SetAudioVariables(self):
     32         if self.model:
     33             races = ['amarr',
     34              'gallente',
     35              'caldari',
     36              'minmatar']
     37             race = self.model.dna.split(':')[2]
     38             specialStationNames = ['60008494',
     39              '60004588',
     40              '60011866',
     41              '60005686']
     42             if self.model.name in specialStationNames:
     43                 specialStationValue = float(specialStationNames.index(self.model.name) + 1)
     44             else:
     45                 specialStationValue = 0.0
     46             if race in races:
     47                 raceValue = races.index(race) + 1
     48             else:
     49                 raceValue = 0
     50             self.model.SetControllerVariable('boundingSphereRadius', self.model.boundingSphereRadius)
     51             self.model.SetControllerVariable('race', raceValue)
     52             self.model.SetControllerVariable('specialStation', specialStationValue)
     53 
     54     def _SetCorruptionAndSuppression(self):
     55         if self.model is None:
     56             return
     57         try:
     58             css = sm.GetService('corruptionSuppressionSvc')
     59             if css is not None and hasattr(session, 'solarsystemid'):
     60                 corruptionStage, suppressionStage = (0, 0)
     61                 maximumSuppressionStages = max(len(css.GetSuppressionStages()), 5)
     62                 maximumCorruptionStages = max(len(css.GetCorruptionStages()), 5)
     63                 corruptionStateData = css.GetCurrentSystemCorruption_Cached()
     64                 if corruptionStateData is not None:
     65                     corruptionStage = corruptionStateData.stage or 0
     66                 suppressionStateData = css.GetCurrentSystemSuppression_Cached()
     67                 if suppressionStateData is not None:
     68                     suppressionStage = suppressionStateData.stage or 0
     69                 suppression = float(suppressionStage) / float(maximumSuppressionStages)
     70                 corruption = float(corruptionStage) / float(maximumCorruptionStages)
     71                 self.model.SetControllerVariable('suppression', suppression)
     72                 self.model.SetControllerVariable('corruption', corruption)
     73         except TimeoutException:
     74             self.logger.debug('Station._SetCorruptionAndSuppression corruptionSuppressionSvc timeout')
     75 
     76     def OnSlimItemUpdated(self, item):
     77         celestialEffect = getattr(item, 'celestialEffect', None)
     78         if celestialEffect is not None:
     79             effectGuid, graphicInfo = celestialEffect
     80             self.logger.debug('Station.OnSlimItemUpdated found celestialEffect %s %s', effectGuid, graphicInfo)
     81             sm.ScatterEvent('OnSpecialFX', self.id, None, None, None, None, effectGuid, False, 1, True, graphicInfo=graphicInfo)