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

inventory.py (5791B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\nodegraph\client\actions\inventory.py
      2 import eve.common.script.sys.eveCfg as eveCfg
      3 import eve.client.script.ui.services.menuSvcExtras.invItemFunctions as inventory_functions
      4 from .base import Action
      5 import logging
      6 log = logging.getLogger(__name__)
      7 
      8 class JettisonTrashItem(Action):
      9     atom_id = 336
     10 
     11     def __init__(self, inventory_item = None, **kwargs):
     12         super(JettisonTrashItem, self).__init__(**kwargs)
     13         self.inventory_item = inventory_item
     14 
     15     def start(self, **kwargs):
     16         super(JettisonTrashItem, self).start(**kwargs)
     17         if not self.inventory_item:
     18             return
     19         if eveCfg.InShipInSpace():
     20             inventory_functions.Jettison([self.inventory_item], showPrompt=False)
     21         else:
     22             inventory_functions.TrashInvItems([self.inventory_item], sm.GetService('invCache'), showPrompt=False)
     23 
     24 
     25 class AddItemRestriction(Action):
     26     atom_id = 449
     27 
     28     def __init__(self, type_id = None, typelist_id = None, **kwargs):
     29         super(AddItemRestriction, self).__init__(**kwargs)
     30         self.type_id = type_id
     31         self.typelist_id = typelist_id
     32 
     33     def _get_restrictions_tracker(self):
     34         from inventoryrestrictions.client.tracker import InventoryRestrictionsTracker
     35         return InventoryRestrictionsTracker()
     36 
     37     def start(self, **kwargs):
     38         super(AddItemRestriction, self).start(**kwargs)
     39         if self.type_id and self.typelist_id:
     40             self._get_restrictions_tracker().add_client_restriction_on_type(int(self.type_id), int(self.typelist_id))
     41 
     42     def stop(self):
     43         super(AddItemRestriction, self).stop()
     44         if self.type_id and self.typelist_id:
     45             self._get_restrictions_tracker().remove_client_restriction_on_type(int(self.type_id), int(self.typelist_id))
     46 
     47     @classmethod
     48     def get_subtitle(cls, type_id = None, typelist_id = None, **kwargs):
     49         if type_id and typelist_id:
     50             return u'{}: {}'.format(type_id, typelist_id)
     51         return ''
     52 
     53 
     54 class RemoveItemRestriction(Action):
     55     atom_id = 450
     56 
     57     def __init__(self, type_id = None, typelist_id = None, **kwargs):
     58         super(RemoveItemRestriction, self).__init__(**kwargs)
     59         self.type_id = type_id
     60         self.typelist_id = typelist_id
     61 
     62     def _get_restrictions_tracker(self):
     63         from inventoryrestrictions.client.tracker import InventoryRestrictionsTracker
     64         return InventoryRestrictionsTracker()
     65 
     66     def start(self, **kwargs):
     67         super(RemoveItemRestriction, self).start(**kwargs)
     68         tracker = self._get_restrictions_tracker()
     69         if self.type_id and self.typelist_id:
     70             tracker.remove_client_restriction_on_type(int(self.type_id), int(self.typelist_id))
     71         else:
     72             tracker.remove_all_client_restrictions()
     73 
     74     @classmethod
     75     def get_subtitle(cls, type_id = None, typelist_id = None, **kwargs):
     76         if type_id and typelist_id:
     77             return u'{}: {}'.format(type_id, typelist_id)
     78         return ''
     79 
     80 
     81 class ScatterInventoryItemsMoved(Action):
     82     atom_id = 489
     83 
     84     def start(self, **kwargs):
     85         super(ScatterInventoryItemsMoved, self).start(**kwargs)
     86         self._simulate_move_from_cargo_to_item_hangar()
     87 
     88     def _simulate_move_from_cargo_to_item_hangar(self):
     89         from carbon.common.lib.const import ixLocationID, ixFlag
     90         from inventorycommon.const import flagCargo
     91         change = {ixLocationID: session.shipid,
     92          ixFlag: flagCargo}
     93         items = [ItemMock(character_id=session.charid, location_id=session.stationid)]
     94         sm.ScatterEvent('OnMultipleItemChange', items, change)
     95 
     96 
     97 class ItemMock(object):
     98 
     99     def __init__(self, character_id, location_id):
    100         from inventorycommon.const import flagHangar, typeVeldspar, groupVeldspar, categoryAsteroid
    101         self.itemID = 1000000212149L
    102         self.typeID = typeVeldspar
    103         self.ownerID = character_id
    104         self.locationID = location_id
    105         self.flagID = flagHangar
    106         self.quantity = 1
    107         self.groupID = groupVeldspar
    108         self.categoryID = categoryAsteroid
    109         self.customInfo = ''
    110         self.stacksize = 1
    111         self.singleton = 0
    112 
    113 
    114 class DepositPlexToVault(Action):
    115     atom_id = 704
    116 
    117     def __init__(self, inventory_item = None, quantity = None, **kwargs):
    118         super(DepositPlexToVault, self).__init__(**kwargs)
    119         self.inventory_item = self.get_atom_parameter_value('inventory_item', inventory_item)
    120         self.quantity = self.get_atom_parameter_value('quantity', quantity)
    121 
    122     def start(self, **kwargs):
    123         super(DepositPlexToVault, self).start(**kwargs)
    124         item = self.inventory_item
    125         if not item:
    126             return
    127         location_id = session.stationid or session.structureid
    128         if not location_id:
    129             return
    130         item_id = getattr(item, 'itemID', None)
    131         if not item_id:
    132             return
    133         qty = self.quantity
    134         if qty is None:
    135             qty = getattr(item, 'stacksize', None)
    136         try:
    137             qty = int(qty)
    138         except Exception:
    139             return
    140 
    141         if qty <= 0:
    142             return
    143         try:
    144             from plex.common.const import InvoiceType
    145             from vgs.common.listeners import PlexDepositListener
    146             inv_mgr = sm.GetService('invCache').GetInventoryMgr()
    147             reference = inv_mgr.DepositPlexToVault(location_id, item_id, qty, InvoiceType.InventoryToVault)
    148             PlexDepositListener(session.userid, qty, reference)
    149         except Exception as exc:
    150             log.exception('DepositPlexToVault failed: %s', exc)
    151 
    152     @classmethod
    153     def get_subtitle(cls, quantity = None, **kwargs):
    154         if quantity is not None:
    155             return u'qty={}'.format(quantity)
    156         return u'all'