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