dronesUtil.py (4281B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\inflight\drones\dronesUtil.py 2 import evetypes 3 import itertoolsext 4 from carbonui import uiconst 5 from carbonui.uicore import uicore 6 from carbonui.util.bunch import Bunch 7 from carbonui.window.settings import GetRegisteredState 8 from eve.client.script.ui.inflight.drones.dronesConst import DRONESTATE_INSPACE, DRONESTATE_INBAY 9 from eve.client.script.ui.services.menuSvcExtras.droneFunctions import ReturnToDroneBay 10 from eve.common.lib import appConst 11 from eveservices.menu import GetMenuService 12 from localization import GetByLabel 13 14 def GetDronesInBay(): 15 if session.shipid: 16 return sm.GetService('invCache').GetInventoryFromId(session.shipid).ListDroneBay() 17 return [] 18 19 20 def GetDronesInLocalSpace(): 21 ballpark = sm.GetService('michelle').GetBallpark() 22 if ballpark is None: 23 return [] 24 drones = sm.GetService('michelle').GetDrones() 25 return [ drones[droneID] for droneID in drones if drones[droneID].ownerID == session.charid or drones[droneID].controllerID == session.shipid ] 26 27 28 def GetDroneIDsInSpace(): 29 inBayIDs = GetDroneIDsInBay() 30 droneIDs = [ drone.droneID for drone in GetDronesInLocalSpace() if drone.droneID not in inBayIDs ] 31 return sorted(droneIDs) 32 33 34 def GetDroneIDsInBay(): 35 droneIDs = [ drone.itemID for drone in GetDronesInBay() ] 36 return sorted(droneIDs) 37 38 39 def GetNumberOfDronesInBay(): 40 return sum([ invItem.stacksize for invItem in GetDronesInBay() ]) 41 42 43 def stop_and_recall_drones(): 44 uicore.cmd.GetCommandAndExecute('CmdStopShip') 45 ReturnToDroneBay([ drone.droneID for drone in GetDronesInLocalSpace() ]) 46 47 48 def GetTypeIDForManyDrones(droneState, droneData): 49 if not droneData: 50 return None 51 if droneState == DRONESTATE_INBAY: 52 firstDroneData = droneData[0] 53 invItem, viewOnly, voucher = firstDroneData 54 return invItem.typeID 55 if droneState == DRONESTATE_INSPACE: 56 lowPriorityDrones = [const.groupMiningDrone, const.groupSalvageDrone, const.groupUnanchoringDrone] 57 58 def IsHigherPrioritySpaceDrone(droneData): 59 droneID, typeID, ownerID, locationID = droneData 60 if evetypes.GetGroupID(typeID) in lowPriorityDrones: 61 return False 62 return True 63 64 priorityDrone = itertoolsext.first_or_default(droneData, predicate=IsHigherPrioritySpaceDrone, default=droneData[0]) 65 droneSlimItem = sm.GetService('michelle').GetItem(priorityDrone[0]) 66 if droneSlimItem: 67 return droneSlimItem.typeID 68 69 70 def ExpandRadialMenuForInSpaceGroup(clickedObject, displayName, droneData): 71 manyItemsData = Bunch(menuFunction=GetMenuService().DroneMenu, itemData=droneData, displayName='<b>%s</b>' % displayName) 72 typeID = GetTypeIDForManyDrones(DRONESTATE_INSPACE, droneData) 73 GetMenuService().TryExpandActionMenu(itemID=None, typeID=typeID, clickedObject=clickedObject, manyItemsData=manyItemsData) 74 75 76 def ExpandRadialMenuForInBayGroup(clickedObject, displayName, droneData): 77 manyItemsData = Bunch(menuFunction=GetMenuService().InvItemMenu, itemData=droneData, displayName='<b>%s</b>' % displayName) 78 typeID = GetTypeIDForManyDrones(DRONESTATE_INBAY, droneData) 79 GetMenuService().TryExpandActionMenu(itemID=None, typeID=typeID, clickedObject=clickedObject, manyItemsData=manyItemsData) 80 81 82 def LoadShortcutTooltip(tooltipPanel, commandName): 83 tooltipPanel.LoadGeneric2ColumnTemplate() 84 command = uicore.cmd.commandMap.GetCommandByName(commandName) 85 tooltipPanel.AddLabelShortcut(command.GetName(), command.GetShortcutAsString()) 86 detailedDescription = command.GetDetailedDescription() 87 if detailedDescription: 88 tooltipPanel.AddLabelMedium(text=detailedDescription, align=uiconst.TOPLEFT, wrapWidth=200, colSpan=tooltipPanel.columns) 89 90 91 def GetMaxDronesInSpace(): 92 return int(sm.GetService('godma').GetItem(session.charid).maxActiveDrones) or 0 93 94 95 def GetPrimaryActionName(typeID): 96 groupID = evetypes.GetGroupID(typeID) 97 if groupID == appConst.groupMiningDrone: 98 return GetByLabel('UI/Drones/MineWithDrone') 99 elif groupID == appConst.groupSalvageDrone: 100 return GetByLabel('UI/Drones/Salvage') 101 else: 102 return GetByLabel('UI/Drones/EngageTarget')