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

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