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

structureIcon.py (2596B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\structure\structureIcon.py
      2 from eve.client.script.ui.control.itemIcon import ItemIcon
      3 from carbonui.control.buttonIcon import ButtonIcon
      4 import carbonui.const as uiconst
      5 from eve.client.script.ui.shared.info.infoConst import TAB_WARHQ
      6 from localization import GetByLabel
      7 IS_AT_WAR_HQ_TEXTURE_PATH = 'res:/UI/Texture/WindowIcons/wars.png'
      8 MAX_DISPLAYED = 5
      9 
     10 class StructureIcon(ItemIcon):
     11 
     12     def __init__(self, *args, **kwargs):
     13         self.warSprite = None
     14         self.wars = None
     15         super(StructureIcon, self).__init__(*args, **kwargs)
     16 
     17     def ApplyAttributes(self, attributes):
     18         ItemIcon.ApplyAttributes(self, attributes)
     19         structureTypeID = attributes.typeID
     20         structureID = attributes.structureID
     21         self.wars = attributes.get('wars')
     22         if self.wars:
     23             self.warButton = ButtonIcon(parent=self, name='warsOverlay', state=uiconst.UI_NORMAL, align=uiconst.TOPRIGHT, texturePath=IS_AT_WAR_HQ_TEXTURE_PATH, pos=(-4, -4, 24, 24), iconColor=(0.6, 0.145, 0.12, 1.0), iconEnabledOpacity=3.0, idx=0, func=self.OpenWars, args=(structureID, structureTypeID))
     24             self.warButton.icon.gradientStrength = 1.0
     25             self.warButton.LoadTooltipPanel = self._LoadWarHQTooltip
     26 
     27     def OpenWars(self, structureID, structureTypeID, *args):
     28         sm.GetService('info').ShowInfo(structureTypeID, structureID, selectTabType=TAB_WARHQ)
     29 
     30     def _LoadWarHQTooltip(self, tooltipPanel, *args):
     31         allWars = sm.RemoteSvc('warsInfoMgr').GetPublicWarInfo(self.wars)
     32         if not allWars:
     33             return
     34         tooltipPanel.LoadGeneric1ColumnTemplate()
     35         tooltipPanel.cellSpacing = (10, 4)
     36         ownersToPrime = set()
     37         for war in allWars:
     38             ownersToPrime.add(war.againstID)
     39             ownersToPrime.add(war.declaredByID)
     40 
     41         cfg.eveowners.Prime(ownersToPrime)
     42         tooltipPanel.AddLabelMedium(text=GetByLabel('UI/InfoWindow/WarHQHeader'), colSpan=tooltipPanel.columns, bold=True)
     43         for war in allWars[:MAX_DISPLAYED]:
     44             aggressor = cfg.eveowners.Get(war.declaredByID)
     45             defender = cfg.eveowners.Get(war.againstID)
     46             text = '%s  %s  %s' % (aggressor.ownerName, GetByLabel('UI/Corporations/Wars/Vs'), defender.ownerName)
     47             tooltipPanel.AddLabelMedium(text=text)
     48 
     49         more = len(allWars) - MAX_DISPLAYED
     50         if more > 0:
     51             t = GetByLabel('UI/Corporations/CorporationWindow/Wars/AndMoreWars', numMore=more)
     52             tooltipPanel.AddLabelMedium(text=t)