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

dronesDragData.py (3822B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\inflight\drones\dronesDragData.py
      2 from carbonui.control.dragdrop.dragdata import TypeDragData
      3 from carbonui.control.dragdrop.dragdata.basedragdata import BaseDragData
      4 from eve.client.script.ui.inflight.drones.dronesUtil import GetDronesInBay, GetDronesInLocalSpace
      5 
      6 class _HasDronesInterface:
      7 
      8     def GetDroneIDs(self):
      9         raise NotImplementedError
     10 
     11     def GetTypeID(self):
     12         raise NotImplementedError
     13 
     14 
     15 class _HasInBayDronesInterface(_HasDronesInterface):
     16     pass
     17 
     18 
     19 class _HasInSpaceDronesInterface(_HasDronesInterface):
     20     pass
     21 
     22 
     23 class DroneEntryDragData(TypeDragData):
     24     droneState = None
     25 
     26     def __init__(self, itemID, typeID):
     27         super(DroneEntryDragData, self).__init__(typeID)
     28         self.itemID = itemID
     29 
     30     def GetIconTexturePath(self):
     31         return 'res:/UI/Texture/WindowIcons/dronebay.png'
     32 
     33     def GetDroneIDs(self):
     34         return [self.itemID]
     35 
     36 
     37 class DroneEntryInBayDragData(DroneEntryDragData, _HasInBayDronesInterface):
     38     pass
     39 
     40 
     41 class DroneEntryInSpaceDragData(DroneEntryDragData, _HasInSpaceDronesInterface):
     42     pass
     43 
     44 
     45 class BaseDroneGroupDragData(BaseDragData):
     46 
     47     def GetIconTexturePath(self):
     48         return 'res:/UI/Texture/WindowIcons/dronebay.png'
     49 
     50     def get_link(self):
     51         return None
     52 
     53     def GetDronesDragData(self):
     54         raise NotImplementedError
     55 
     56     def GetTypeID(self):
     57         items = self.GetDronesDragData()
     58         if items:
     59             return items[0].typeID
     60 
     61 
     62 class AllDronesInBayDragData(BaseDroneGroupDragData, _HasInBayDronesInterface):
     63 
     64     def GetDronesDragData(self):
     65         return [ DroneEntryInBayDragData(drone.itemID, drone.typeID) for drone in self.GetDroneInvItems() ]
     66 
     67     def GetDroneInvItems(self):
     68         return GetDronesInBay()
     69 
     70     def GetDroneIDs(self):
     71         return [ drone.itemID for drone in self.GetDroneInvItems() ]
     72 
     73 
     74 class DronesInBayDragData(BaseDroneGroupDragData, _HasInBayDronesInterface):
     75 
     76     def __init__(self, droneIDs):
     77         self.droneIDs = droneIDs
     78 
     79     def GetDronesDragData(self):
     80         return [ DroneEntryInBayDragData(item.itemID, item.typeID) for item in GetDronesInBay() if item.itemID in self.droneIDs ]
     81 
     82     def GetDroneInvItems(self):
     83         return [ item for item in GetDronesInBay() if item.itemID in self.droneIDs ]
     84 
     85     def GetDroneIDs(self):
     86         return self.droneIDs
     87 
     88 
     89 class AllDronesInSpaceDragData(BaseDroneGroupDragData, _HasInSpaceDronesInterface):
     90 
     91     def GetDronesDragData(self):
     92         return [ DroneEntryInSpaceDragData(drone.droneID, drone.typeID) for drone in self.GetSlimItems() ]
     93 
     94     def GetSlimItems(self):
     95         return GetDronesInLocalSpace()
     96 
     97     def GetDroneIDs(self):
     98         return [ drone.droneID for drone in self.GetSlimItems() ]
     99 
    100 
    101 class DronesInSpaceDragData(BaseDroneGroupDragData, _HasInSpaceDronesInterface):
    102 
    103     def __init__(self, droneIDs):
    104         self.droneIDs = droneIDs
    105 
    106     def GetDronesDragData(self):
    107         return [ DroneEntryInSpaceDragData(drone.droneID, drone.typeID) for drone in GetDronesInLocalSpace() if drone.droneID in self.droneIDs ]
    108 
    109     def GetDroneIDs(self):
    110         return self.droneIDs
    111 
    112 
    113 def _GetDroneIDs(dataClass, dragData):
    114     droneIDs = set()
    115     for data in dragData:
    116         if isinstance(data, dataClass):
    117             droneIDs.update(data.GetDroneIDs())
    118 
    119     return list(droneIDs)
    120 
    121 
    122 def GetDroneIDs(dragData):
    123     return _GetDroneIDs(_HasDronesInterface, dragData)
    124 
    125 
    126 def GetInBayDroneIDs(dragData):
    127     return _GetDroneIDs(_HasInBayDronesInterface, dragData)
    128 
    129 
    130 def GetInSpaceDroneIDs(dragData):
    131     return _GetDroneIDs(_HasInSpaceDronesInterface, dragData)
    132 
    133 
    134 def HasInBayDroneIDs(dragData):
    135     return bool(GetInBayDroneIDs(dragData))
    136 
    137 
    138 def HasInSpaceDroneIDs(dragData):
    139     return bool(GetInSpaceDroneIDs(dragData))