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

basicOrbital.py (3744B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\environment\spaceObject\basicOrbital.py
      2 from carbon.common.lib.const import SEC
      3 import blue
      4 import eve.common.script.mgt.entityConst as entities
      5 from eve.client.script.environment.spaceObject.playerOwnedStructure import PlayerOwnedStructure
      6 import uthread
      7 
      8 class BasicOrbital(PlayerOwnedStructure):
      9 
     10     def Assemble(self):
     11         self.SetStaticRotation()
     12         if not hasattr(self, 'orbitalState'):
     13             slimItem = self.typeData.get('slimItem')
     14             self.OnSlimItemUpdated(slimItem)
     15 
     16     def OnSlimItemUpdated(self, slimItem):
     17         orbitalState = getattr(slimItem, 'orbitalState', None)
     18         orbitalTimestamp = getattr(slimItem, 'orbitalTimestamp', blue.os.GetSimTime())
     19         fxSequencer = self.sm.GetService('FxSequencer')
     20         if not hasattr(self, 'orbitalState'):
     21             if orbitalState in (entities.STATE_ANCHORING, entities.STATE_ANCHORED):
     22                 uthread.pool('SpaceObject::BasicOrbital::OnSlimItemUpdated', fxSequencer.OnSpecialFX, slimItem.itemID, slimItem.itemID, None, None, None, 'effects.AnchorDrop', 0, 1, 0)
     23             elif orbitalState in (entities.STATE_IDLE, entities.STATE_OPERATING):
     24                 uthread.pool('SpaceObject::BasicOrbital::OnSlimItemUpdated', fxSequencer.OnSpecialFX, slimItem.itemID, slimItem.itemID, None, None, None, 'effects.StructureOnlined', 0, 1, 0)
     25             elif orbitalState == entities.STATE_UNANCHORING:
     26                 buildingLength = sm.GetService('godma').GetType(self.GetTypeID()).unanchoringDelay / 1000.0 * SEC
     27                 timeFromStart = max(buildingLength - (orbitalTimestamp - blue.os.GetSimTime()), 0)
     28                 uthread.pool('SpaceObject::BasicOrbital::OnSlimItemUpdated', fxSequencer.OnSpecialFX, slimItem.itemID, slimItem.itemID, None, None, None, 'effects.AnchorLift', 0, 1, 0, timeFromStart=timeFromStart)
     29         else:
     30             if orbitalState == entities.STATE_ANCHORING and self.orbitalState == entities.STATE_UNANCHORED:
     31                 uthread.pool('SpaceObject::BasicOrbital::OnSlimItemUpdated', fxSequencer.OnSpecialFX, slimItem.itemID, slimItem.itemID, None, None, None, 'effects.AnchorDrop', 0, 1, 0)
     32             if orbitalState == entities.STATE_ONLINING and self.orbitalState == entities.STATE_ANCHORED:
     33                 uthread.pool('SpaceObject::BasicOrbital::OnSlimItemUpdated', fxSequencer.OnSpecialFX, slimItem.itemID, slimItem.itemID, None, None, None, 'effects.StructureOnline', 0, 1, 0)
     34             if orbitalState == entities.STATE_IDLE and self.orbitalState == entities.STATE_ONLINING:
     35                 uthread.pool('SpaceObject::BasicOrbital::OnSlimItemUpdated', fxSequencer.OnSpecialFX, slimItem.itemID, slimItem.itemID, None, None, None, 'effects.StructureOnlined', 0, 1, 0)
     36             if orbitalState == entities.STATE_ANCHORED and self.orbitalState in (entities.STATE_OFFLINING, entities.STATE_IDLE, entities.STATE_OPERATING):
     37                 uthread.pool('SpaceObject::BasicOrbital::OnSlimItemUpdated', fxSequencer.OnSpecialFX, slimItem.itemID, slimItem.itemID, None, None, None, 'effects.StructureOffline', 0, 1, 0)
     38             if orbitalState == entities.STATE_UNANCHORING and self.orbitalState == entities.STATE_ANCHORED:
     39                 uthread.pool('SpaceObject::BasicOrbital::OnSlimItemUpdated', fxSequencer.OnSpecialFX, slimItem.itemID, slimItem.itemID, None, None, None, 'effects.AnchorLift', 0, 1, 0)
     40         self.orbitalState = orbitalState
     41         self.orbitalTimestamp = orbitalTimestamp
     42 
     43     def IsOnline(self):
     44         slimItem = self.typeData.get('slimItem')
     45         return slimItem.orbitalState is not None and slimItem.orbitalState in (entities.STATE_OPERATING, entities.STATE_IDLE)