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

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