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

PanelSovConstellation.py (3420B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\shared\info\panels\PanelSovConstellation.py
      2 import eveformat.client
      3 import evelink.client
      4 from carbonui.primitives.container import Container
      5 from eve.client.script.ui.control.entries.universe import SystemNameHeader
      6 from eve.client.script.ui.control.entries.util import GetFromClass
      7 from eve.client.script.ui.control.eveScroll import Scroll
      8 from eve.common.lib import appConst as const
      9 from inventorycommon.const import typeInfrastructureHub
     10 from localization import GetByLabel
     11 from sovDashboard import GetSovStructureInfoByTypeID
     12 from sovDashboard.sovStatusEntries import SovSystemStatusEntry, SovStructureStatusEntry
     13 
     14 class PanelSovConstellation(Container):
     15 
     16     def ApplyAttributes(self, attributes):
     17         Container.ApplyAttributes(self, attributes)
     18         self.constellationID = attributes.constellationID
     19         self.sovSvc = sm.GetService('sov')
     20         self.mapSvc = sm.GetService('map')
     21 
     22     def Load(self):
     23         self.Flush()
     24         self.scroll = Scroll(name='sovScroll', parent=self, padding=const.defaultPadding)
     25         systemsList = []
     26         solarSystemsInConstellation = self.mapSvc.GetLocationChildren(self.constellationID)
     27         solarSystemsInConstellation.sort(key=lambda x: cfg.evelocations.Get(x).name)
     28         for solarSystemID in solarSystemsInConstellation:
     29             systemsList.extend(self.GetSolarSystemInfo(solarSystemID))
     30 
     31         self.scroll.Load(contentList=systemsList)
     32 
     33     def GetSolarSystemInfo(self, solarSystemID):
     34         contentList = []
     35         contentList.append(GetFromClass(SystemNameHeader, {'label': self.GetSystemNameText(solarSystemID)}))
     36         sovStructuresInfo = self.sovSvc.GetSovStructuresInfoForSolarSystem(solarSystemID)
     37         structureInfosByTypeID = GetSovStructureInfoByTypeID(sovStructuresInfo)
     38         hubInfo = structureInfosByTypeID[typeInfrastructureHub]
     39         isCapital = hubInfo.get('isCapital', False)
     40         sovInfo = self.sovSvc.GetSovInfoForSolarsystem(solarSystemID, isCapital)
     41         multiplierInfo = self.GetMultiplierInfo(sovInfo, isCapital)
     42         contentList.append(GetFromClass(SovSystemStatusEntry, multiplierInfo))
     43         if sovStructuresInfo:
     44             for structureTypeID, structureInfo in structureInfosByTypeID.iteritems():
     45                 if not structureInfo.get('itemID', None):
     46                     continue
     47                 contentList.append(GetFromClass(SovStructureStatusEntry, {'structureInfo': structureInfo}))
     48 
     49         return contentList
     50 
     51     def GetMultiplierInfo(self, sovInfo, isCapital):
     52         if isCapital:
     53             defenseBonusTexture = 'res:/UI/Texture/classes/Sov/bonusShieldCapital16.png'
     54         else:
     55             defenseBonusTexture = 'res:/UI/Texture/classes/Sov/bonusShield16.png'
     56         defenseBonusInfo = {'statusNameText': GetByLabel('UI/Sovereignty/ActivityDefenseMultiplier'),
     57          'texturePath': defenseBonusTexture,
     58          'currentIndex': None,
     59          'bonusMultiplier': sovInfo.defenseMultiplier,
     60          'extraHelpLabelPath': 'UI/Sovereignty/DefenseBonusExplanation',
     61          'isCapital': isCapital}
     62         return defenseBonusInfo
     63 
     64     def GetSystemNameText(self, solarSystemID):
     65         return u'{security_status} {solar_system_name}'.format(security_status=eveformat.solar_system_security_status(solarSystemID), solar_system_name=evelink.location_link(solarSystemID))