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

eveMenu.py (3321B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\control\eveMenu.py
      2 import dogma.attributes.groups
      3 import dogma.data as dogma_data
      4 from brennivin.itertoolsext import Bundle
      5 from caching.memoize import Memoize
      6 from carbonui.primitives.sprite import Sprite
      7 import carbonui.const as uiconst
      8 from eve.client.script.ui.crimewatch import crimewatchConst
      9 from carbonui.control.contextMenu.menuEntryView import MenuEntryView
     10 from eve.common.lib import appConst
     11 from fsdBuiltData.common.iconIDs import GetIconFile
     12 
     13 class SuspectMenuEntryView(MenuEntryView):
     14     default_warningColor = crimewatchConst.Colors.Suspect.GetRGBA()
     15 
     16     def ConstructIcon(self):
     17         super(SuspectMenuEntryView, self).ConstructIcon()
     18         self.icon.SetRGBA(*self.default_warningColor)
     19 
     20     def ConstructLabel(self, *args):
     21         super(SuspectMenuEntryView, self).ConstructLabel(*args)
     22         self.label.SetRGBA(*self.default_warningColor)
     23 
     24 
     25 class CriminalMenuEntryView(SuspectMenuEntryView):
     26     default_warningColor = crimewatchConst.Colors.Criminal.GetRGBA()
     27 
     28 
     29 class AmmoMenuEntryView(MenuEntryView):
     30     __guid__ = 'AmmoMenuEntryView'
     31 
     32     def ApplyAttributes(self, attributes):
     33         MenuEntryView.ApplyAttributes(self, attributes)
     34         self.ConstructLayout()
     35         typeID = self.menuEntryData.typeID
     36         if typeID:
     37             topAmmoDmgTypeInfo = GetAmmoTopDamageTypes(typeID)
     38             self.LoadIcons(topAmmoDmgTypeInfo)
     39             menuIconSize = self.iconSize
     40 
     41     def ConstructLayout(self):
     42         super(AmmoMenuEntryView, self).ConstructLayout()
     43         self.primaryDmgSprite = Sprite(parent=self, pos=(4, 0, 20, 20), align=uiconst.CENTERLEFT, idx=0, state=uiconst.UI_DISABLED)
     44 
     45     def _GetLabelLeft(self):
     46         return 24
     47 
     48     def LoadIcons(self, topAmmoDmgTypeInfo):
     49         if len(topAmmoDmgTypeInfo) > 0:
     50             self.primaryDmgSprite.texturePath = topAmmoDmgTypeInfo[0].iconFile
     51 
     52 
     53 class AmmoMenuEntryView2(AmmoMenuEntryView):
     54 
     55     def ConstructLayout(self):
     56         super(AmmoMenuEntryView2, self).ConstructLayout()
     57         self.secondaryDmgSprite = Sprite(parent=self, pos=(24, 0, 20, 20), align=uiconst.CENTERLEFT, idx=0, state=uiconst.UI_DISABLED)
     58 
     59     def _GetLabelLeft(self):
     60         return 44
     61 
     62     def LoadIcons(self, topAmmoDmgTypeInfo):
     63         AmmoMenuEntryView.LoadIcons(self, topAmmoDmgTypeInfo)
     64         if len(topAmmoDmgTypeInfo) > 1:
     65             self.secondaryDmgSprite.texturePath = topAmmoDmgTypeInfo[1].iconFile
     66 
     67 
     68 @Memoize
     69 def GetAmmoTopDamageTypes(typeID):
     70     damageValueWithAttribute = []
     71     dogmaStaticMgr = sm.GetService('clientDogmaStaticSvc')
     72     for eachDamageType in dogma.attributes.groups.damage_type_attribute_ids:
     73         value = dogmaStaticMgr.GetTypeAttribute(typeID, eachDamageType)
     74         if value:
     75             damageValueWithAttribute.append((eachDamageType, value))
     76 
     77     damageValueWithAttribute.sort(key=lambda x: x[1], reverse=True)
     78     totalDamage = sum((x[1] for x in damageValueWithAttribute))
     79     iconAndPercentage = []
     80     for eachAttributeID, eachDmg in damageValueWithAttribute[:2]:
     81         iconID = dogma_data.get_attribute_icon_id(eachAttributeID)
     82         iconFile = GetIconFile(iconID)
     83         iconAndPercentage.append(Bundle(iconFile=iconFile, percentage=eachDmg / totalDamage))
     84 
     85     return iconAndPercentage