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))