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

sofService.py (2181B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\environment\sofService.py
      2 import trinity
      3 import blue
      4 import uthread2
      5 from carbon.common.script.sys.service import Service
      6 
      7 def GetSofService():
      8     return sm.GetService('sofService')
      9 
     10 
     11 class sofService(Service):
     12     __guid__ = 'svc.sofService'
     13     __displayname__ = 'Space Object Factory'
     14     __servicename__ = 'sofService'
     15 
     16     def Run(self, memStream = None):
     17         Service.Run(self, memStream)
     18         self.spaceObjectFactory = SpaceObjectFactoryWrapper()
     19         self.spaceObjectFactory.Load()
     20 
     21     def Stop(self, stream):
     22         Service.Stop(self)
     23         self.spaceObjectFactory = None
     24 
     25 
     26 class SpaceObjectFactoryWrapper(object):
     27 
     28     def __init__(self):
     29         self._dataFile = 'res:/dx9/model/spaceobjectfactory/data.red'
     30         self._sof = trinity.EveSOF()
     31         self._loaded = False
     32         self._loadingTasklet = None
     33         self.sofDB = None
     34 
     35     def Load(self):
     36         self._loadingTasklet = uthread2.start_tasklet(self._Load)
     37 
     38     def _Load(self):
     39         self.sofDB = trinity.Load(self._dataFile)
     40         self._sof.dataMgr.SetData(self.sofDB)
     41         self._loaded = True
     42         self._loadingTasklet = None
     43 
     44     def GetSofDB(self):
     45         self._LoadOrYield()
     46         return self.sofDB
     47 
     48     def _LoadOrYield(self):
     49         if self._loaded:
     50             return
     51         if not self._loadingTasklet:
     52             self.Load()
     53         uthread2.wait([self._loadingTasklet], 300)
     54 
     55     def Build(self, *args, **kwargs):
     56         self._LoadOrYield()
     57         return self._sof.Build(*args, **kwargs)
     58 
     59     def BuildFromDNA(self, *args, **kwargs):
     60         self._LoadOrYield()
     61         return self._sof.BuildFromDNA(*args, **kwargs)
     62 
     63     def ValidateDNA(self, *args, **kwargs):
     64         self._LoadOrYield()
     65         return self._sof.ValidateDNA(*args, **kwargs)
     66 
     67     def SetupTurretMaterialFromDNA(self, *args, **kwargs):
     68         self._LoadOrYield()
     69         return self._sof.SetupTurretMaterialFromDNA(*args, **kwargs)
     70 
     71     def SetupTurretMaterialFromFaction(self, *args, **kwargs):
     72         self._LoadOrYield()
     73         return self._sof.SetupTurretMaterialFromFaction(*args, **kwargs)