structureDogmaItem.py (3173B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\dogma\items\structureDogmaItem.py 2 from __future__ import absolute_import 3 import weakref 4 from inventorycommon.util import IsStructureFittingFlag, IsFighterTubeFlag 5 from .locationDogmaItem import LocationDogmaItem 6 import dogma.const 7 8 class StructureDogmaItem(LocationDogmaItem): 9 10 def __init__(self, *args, **kwargs): 11 self.drones = {} 12 LocationDogmaItem.__init__(self, *args, **kwargs) 13 14 def OnItemLoaded(self): 15 self.dogmaLocation.FitItemToLocation(self.itemID, self.itemID, 0) 16 LocationDogmaItem.OnItemLoaded(self) 17 18 def PostLoadAction(self): 19 super(StructureDogmaItem, self).PostLoadAction() 20 self.dogmaLocation.UpdateStructureServices(self.itemID) 21 22 def ValidFittingFlag(self, flagID): 23 return IsStructureFittingFlag(flagID) or IsFighterTubeFlag(flagID) 24 25 def CanFitItem(self, dogmaItem, flagID): 26 if dogmaItem.categoryID in (const.categoryStructureModule, const.categoryCharge) and self.ValidFittingFlag(flagID): 27 return True 28 elif dogmaItem.groupID == const.groupCharacter and flagID == const.flagPilot: 29 return True 30 elif dogmaItem.itemID == self.itemID: 31 return True 32 else: 33 return False 34 35 def SetLocation(self, locationID, locationDogmaItem, flagID): 36 if locationID != self.itemID: 37 raise RuntimeError('ShipDogmaItem.SetLocation::locationID is not ship (%s, %s)' % (locationID, self.itemID)) 38 self.fittedItems[locationID] = weakref.proxy(self) 39 self.flagID = flagID 40 41 def IsOnline(self): 42 return True 43 44 def IsActive(self): 45 return False 46 47 def RegisterPilot(self, item): 48 self.fittedItems[item.itemID] = weakref.proxy(item) 49 50 def UnregisterPilot(self, item): 51 self.fittedItems.pop(item.itemID, None) 52 53 def GetCharacterID(self): 54 return None 55 56 def GetPilot(self): 57 return self.dogmaLocation.pilotsByShipID.get(self.itemID, None) 58 59 def GetHeatStates(self): 60 return {attribute:self.attributes[attribute].GetHeatMessage() for attribute in dogma.heatAttributes} 61 62 def GetHeatValues(self): 63 return {attribute:0 for attribute in dogma.heatAttributes} 64 65 def GetDrones(self): 66 return {} 67 68 def GetDronesInBay(self): 69 return {} 70 71 def GetDronesInSpace(self): 72 return {} 73 74 def IsItemIDInDrones(self, itemID): 75 return itemID in self.drones 76 77 @property 78 def overloadedModules(self): 79 return set() 80 81 def GetStructureID(self): 82 return self.itemID 83 84 85 FAKE_FLAGID = -1 86 87 class GhostStructureDogmaItem(StructureDogmaItem): 88 __guid__ = 'GhostStructureDogmaItem' 89 90 def RegisterFittedItem(self, dogmaItem, flagID): 91 if flagID in (FAKE_FLAGID, None): 92 return 93 StructureDogmaItem.RegisterFittedItem(self, dogmaItem, flagID) 94 95 def UnregisterFittedItem(self, dogmaItem): 96 if dogmaItem.flagID in (FAKE_FLAGID, None): 97 return 98 StructureDogmaItem.UnregisterFittedItem(self, dogmaItem) 99 100 def GetPilot(self): 101 return session.charid