def get_ore_cargo(self): if bool( get_attr(util.GetActiveShip(), const.attributeSpecialOreHoldCapacity)): return invCtrl.ShipOreHold(util.GetActiveShip()) else: return invCtrl.ShipCargo()
def GetChildren(self): shipData = [] itemID = self.invController.itemID typeID = self.typeID if itemID == util.GetActiveShip(): cmdName = 'OpenDroneBayOfActiveShip' else: cmdName = None godmaType = sm.GetService('godma').GetType(typeID) if godmaType.droneCapacity or IsModularShip(typeID): shipData.append(TreeDataInv(parent=self, clsName='ShipDroneBay', itemID=itemID, cmdName=cmdName)) if godmaType.fighterCapacity: shipData.append(TreeDataInv(parent=self, clsName='ShipFighterBay', itemID=itemID, cmdName=cmdName)) godmaSM = sm.GetService('godma').GetStateManager() if bool(godmaSM.GetType(typeID).hasShipMaintenanceBay): shipData.append(TreeDataShipMaintenanceBay(parent=self, clsName='ShipMaintenanceBay', itemID=itemID)) if bool(godmaSM.GetType(typeID).hasFleetHangars): shipData.append(TreeDataFleetHangar(parent=self, clsName='ShipFleetHangar', itemID=itemID)) if bool(godmaSM.GetType(typeID).specialFuelBayCapacity): shipData.append(TreeDataInv(parent=self, clsName='ShipFuelBay', itemID=itemID)) if bool(godmaSM.GetType(typeID).specialOreHoldCapacity): shipData.append(TreeDataInv(parent=self, clsName='ShipOreHold', itemID=itemID)) if bool(godmaSM.GetType(typeID).specialGasHoldCapacity): shipData.append(TreeDataInv(parent=self, clsName='ShipGasHold', itemID=itemID)) if bool(godmaSM.GetType(typeID).specialMineralHoldCapacity): shipData.append(TreeDataInv(parent=self, clsName='ShipMineralHold', itemID=itemID)) if bool(godmaSM.GetType(typeID).specialSalvageHoldCapacity): shipData.append(TreeDataInv(parent=self, clsName='ShipSalvageHold', itemID=itemID)) if bool(godmaSM.GetType(typeID).specialShipHoldCapacity): shipData.append(TreeDataInv(parent=self, clsName='ShipShipHold', itemID=itemID)) if bool(godmaSM.GetType(typeID).specialSmallShipHoldCapacity): shipData.append(TreeDataInv(parent=self, clsName='ShipSmallShipHold', itemID=itemID)) if bool(godmaSM.GetType(typeID).specialMediumShipHoldCapacity): shipData.append(TreeDataInv(parent=self, clsName='ShipMediumShipHold', itemID=itemID)) if bool(godmaSM.GetType(typeID).specialLargeShipHoldCapacity): shipData.append(TreeDataInv(parent=self, clsName='ShipLargeShipHold', itemID=itemID)) if bool(godmaSM.GetType(typeID).specialIndustrialShipHoldCapacity): shipData.append(TreeDataInv(parent=self, clsName='ShipIndustrialShipHold', itemID=itemID)) if bool(godmaSM.GetType(typeID).specialAmmoHoldCapacity): shipData.append(TreeDataInv(parent=self, clsName='ShipAmmoHold', itemID=itemID)) if bool(godmaSM.GetType(typeID).specialCommandCenterHoldCapacity): shipData.append(TreeDataInv(parent=self, clsName='ShipCommandCenterHold', itemID=itemID)) if bool(godmaSM.GetType(typeID).specialPlanetaryCommoditiesHoldCapacity): shipData.append(TreeDataInv(parent=self, clsName='ShipPlanetaryCommoditiesHold', itemID=itemID)) if bool(godmaSM.GetType(typeID).specialQuafeHoldCapacity): shipData.append(TreeDataInv(parent=self, clsName='ShipQuafeHold', itemID=itemID)) invController = invCtrl.ShipCargo(itemID=itemID) shipData += GetContainerDataFromItems(invController.GetItems(), parent=self) if not shipData: shipData.append(TreeData(parent=self, label=localization.GetByLabel('UI/Inventory/NoAdditionalBays'), id='none_%s' % itemID)) return shipData
def Paste(self, value): items, copy = sm.GetService('inv').PopItemClipboard() if copy and bool(session.role & service.ROLE_PROGRAMMER): import param for item in items: itemID = sm.GetService('slash').cmd_createitem(param.ParamObject('%s %s' % (item.rec.typeID, item.rec.stacksize))) if itemID: invController = invCtrl.StationItems() if session.stationid else invCtrl.ShipCargo() blue.synchro.SleepWallclock(100) newItem = invController.GetItem(itemID) self.invController.AddItems([newItem]) else: self.invController.OnDropData(items)
def OnDropData(self, dragObj, nodes): self.Hilite(0) if len(nodes) == 1: item = nodes[0].item if IsShipFittingFlag(item.flagID): dogmaLocation = sm.GetService( 'clientDogmaIM').GetDogmaLocation() shipID = util.GetActiveShip() if IsShipFittable(item.categoryID): dogmaLocation.UnloadModuleToContainer(shipID, item.itemID, (shipID, ), flag=const.flagCargo) return if item.categoryID == const.categoryCharge: dogmaLocation.UnloadChargeToContainer( shipID, item.itemID, (shipID, ), const.flagCargo) return invCtrl.ShipCargo(util.GetActiveShip()).OnDropData(nodes) CargoSlots.OnDropData(self, dragObj, nodes)
def OnDropData(self, dragObj, nodes): if self.blinkBG: uicore.animations.FadeOut(self.blinkBG, duration=0.2) if len(nodes) and getattr(nodes[0], 'scroll', None): nodes[0].scroll.ClearSelection() if not nodes[0].rec: return if not hasattr(nodes[0].rec, 'locationID'): return locationID = nodes[0].rec.locationID if locationID != self.rec.locationID: if not sm.GetService('crimewatchSvc').CheckCanTakeItems( locationID): sm.GetService('crimewatchSvc').SafetyActivated( const.shipSafetyLevelPartial) return if self.isShip: if invCtrl.ShipCargo(self.rec.itemID).OnDropData(nodes): self.Blink() return if self.isContainer: if invCtrl.StationContainer(self.rec.itemID).OnDropData(nodes): self.Blink() return mergeToMe = [] notUsed = [] sourceID = None for node in nodes: if getattr(node, '__guid__', None) not in ('xtriui.ShipUIModule', 'xtriui.InvItem', 'listentry.InvItem'): notUsed.append(node) continue if node.item.itemID == self.sr.node.item.itemID: notUsed.append(node) continue if node.item.typeID == self.sr.node.item.typeID and not isinstance( self.sr.node.item.itemID, tuple) and not getattr( node.item, 'singleton', False) and not self.sr.node.item.singleton: mergeToMe.append(node.item) else: notUsed.append(node) if sourceID is None: sourceID = node.rec.locationID if sourceID is None: log.LogInfo('OnDropData: Moot operation with ', nodes) return if mergeToMe: containerItem = sm.GetService('invCache').GetInventoryFromId( self.rec.locationID).GetItem() if session.solarsystemid and containerItem.itemID == mergeToMe[ 0].locationID and containerItem.ownerID not in ( session.charid, session.corpid, session.allianceid): return shift = uicore.uilib.Key(uiconst.VK_SHIFT) mergeData = [] stateMgr = sm.StartService('godma').GetStateManager() dogmaLocation = sm.GetService('clientDogmaIM').GetDogmaLocation() singletons = [] for invItem in mergeToMe: if invItem.stacksize == 1: quantity = 1 elif shift: ret = uix.QtyPopup( invItem.stacksize, 1, 1, None, localization.GetByLabel( 'UI/Inventory/ItemActions/StackItems')) if ret is not None: quantity = ret['qty'] else: quantity = None else: quantity = invItem.stacksize if not quantity: continue if invItem.categoryID == const.categoryCharge and IsShipFittingFlag( invItem.flagID): if type(invItem.itemID) is tuple: flag = invItem.itemID[1] chargeIDs = dogmaLocation.GetSubLocationsInBank( invItem.locationID, invItem.itemID) if chargeIDs: for chargeID in chargeIDs: charge = dogmaLocation.dogmaItems[chargeID] mergeData.append( (charge.itemID, self.rec.itemID, dogmaLocation.GetAttributeValue( chargeID, const.attributeQuantity), charge)) else: mergeData.append((invItem.itemID, self.rec.itemID, quantity, invItem)) else: crystalIDs = dogmaLocation.GetCrystalsInBank( invItem.locationID, invItem.itemID) if crystalIDs: for crystalID in crystalIDs: crystal = dogmaLocation.GetItem(crystalID) if crystal.singleton: singletons.append(crystalID) else: mergeData.append( (crystal.itemID, self.rec.itemID, crystal.stacksize, crystal)) else: mergeData.append((invItem.itemID, self.rec.itemID, quantity, invItem)) else: mergeData.append( (invItem.itemID, self.rec.itemID, quantity, invItem)) if singletons and util.GetAttrs(self, 'sr', 'node', 'rec', 'flagID'): flag = self.sr.node.rec.flagID inv = sm.GetService('invCache').GetInventoryFromId( self.rec.locationID) if inv: inv.MultiAdd(singletons, sourceID, flag=flag, fromManyFlags=True) if mergeData and util.GetAttrs(self, 'sr', 'node', 'container', 'invController', 'MultiMerge'): invController = self.sr.node.container.invController sm.ScatterEvent('OnInvContDragExit', invController.GetInvID(), []) if invController.MultiMerge(mergeData, sourceID): sm.GetService('audio').SendUIEvent('ui_state_stack') self.Blink() if notUsed and util.GetAttrs(self, 'sr', 'node', 'container', 'OnDropData'): self.sr.node.container.OnDropData(dragObj, notUsed)
def GetInvController(self): return invCtrl.ShipCargo(self.controller.GetItemID())
def GetInvController(self): if self.controller.IsSimulated(): itemID = None else: itemID = self.controller.GetItemID() return invCtrl.ShipCargo(itemID)