lootItem.py (3482B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\crate\lootItem.py 2 from evetypes import GetNameID 3 from eve.client.script.ui.util.uix import GetTechLevelIcon 4 from eve.common.script.sys.eveCfg import IsApparel, IsBlueprint, IsShip 5 from eve.common.script.util.insuranceConst import INSURANCE_ICON 6 from localization import GetByLabel, GetByMessageID 7 8 class AbstractLootItem(object): 9 ICON_PATH = None 10 ICON_SIZE = 64 11 12 def __init__(self, icon = None): 13 self.icon = icon or self.ICON_PATH 14 15 def get_name(self): 16 raise NotImplementedError('Must implement loot item naming in derived class') 17 18 def claim(self): 19 raise NotImplementedError('Must implement loot item claiming in derived class') 20 21 def get_icon_size(self): 22 return self.ICON_SIZE 23 24 def get_icon(self): 25 return self.icon 26 27 def get_tech_icon(self, icon = None): 28 return None 29 30 31 class LootItemFromType(AbstractLootItem): 32 33 def __init__(self, itemID, typeID, quantity, destinationID, destinationFlagID): 34 self.itemID = itemID 35 self.typeID = typeID 36 self.quantity = quantity 37 self.destinationID = destinationID 38 self.destinationFlagID = destinationFlagID 39 super(LootItemFromType, self).__init__() 40 41 def get_name(self): 42 if self.quantity > 1: 43 return GetByLabel('UI/Crate/ItemNameAndQuantity', typeID=self.typeID, quantity=self.quantity) 44 return GetByMessageID(GetNameID(self.typeID)) 45 46 def claim(self): 47 sm.RemoteSvc('crateService').ClaimLoot(self.itemID, self.destinationID, self.destinationFlagID) 48 49 def get_icon_size(self): 50 if IsBlueprint(self.typeID) or IsApparel(self.typeID) or IsShip(self.typeID): 51 return 42 52 return 64 53 54 def get_tech_icon(self, icon = None): 55 return GetTechLevelIcon(icon, typeID=self.typeID) 56 57 def is_copy(self): 58 return self.quantity < 0 59 60 61 class AbstractSpecialLootItem(AbstractLootItem): 62 63 def __init__(self, crateID, name, icon): 64 self.crateID = crateID 65 self.name = name 66 super(AbstractSpecialLootItem, self).__init__(icon) 67 68 def get_name(self): 69 return GetByLabel(self.name) 70 71 72 class SkillBundleLootItem(AbstractSpecialLootItem): 73 ICON_PATH = 'res:/UI/Texture/icons/50_64_11.png' 74 75 def __init__(self, crateID, skillBundleID): 76 self.skillBundleID = skillBundleID 77 name, icon = sm.GetService('skills').GetSkillBundleInfo(skillBundleID) 78 super(SkillBundleLootItem, self).__init__(crateID, name, icon) 79 80 def claim(self): 81 sm.RemoteSvc('crateService').ClaimSkillBundle(self.crateID, self.skillBundleID) 82 83 84 class FittingLootItem(AbstractSpecialLootItem): 85 86 def __init__(self, crateID, fitting, name, icon): 87 self.fittingID = fitting 88 super(FittingLootItem, self).__init__(crateID, name, icon) 89 90 def claim(self): 91 sm.RemoteSvc('crateService').ClaimFitting(self.crateID, self.fittingID) 92 93 94 class InsuranceLootItem(AbstractSpecialLootItem): 95 ICON_PATH = INSURANCE_ICON 96 97 def __init__(self, crateID, shipTypeID, insurance): 98 insurance_name = GetByLabel('UI/Insurance/QuoteWindow/%s' % insurance) 99 name = GetByLabel('UI/Insurance/ShipInsuranceType', item=shipTypeID, insurance=insurance_name) 100 super(InsuranceLootItem, self).__init__(crateID, name, icon=None) 101 102 def get_name(self): 103 return self.name 104 105 def claim(self): 106 pass