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'