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)