Ejemplo n.º 1
0
 def get_ore_cargo(self):
     if bool(
             get_attr(util.GetActiveShip(),
                      const.attributeSpecialOreHoldCapacity)):
         return invCtrl.ShipOreHold(util.GetActiveShip())
     else:
         return invCtrl.ShipCargo()
Ejemplo n.º 2
0
 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
Ejemplo n.º 3
0
    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)
Ejemplo n.º 4
0
 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)
Ejemplo n.º 5
0
    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)
Ejemplo n.º 6
0
 def GetInvController(self):
     return invCtrl.ShipCargo(self.controller.GetItemID())
Ejemplo n.º 7
0
 def GetInvController(self):
     if self.controller.IsSimulated():
         itemID = None
     else:
         itemID = self.controller.GetItemID()
     return invCtrl.ShipCargo(itemID)