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))