all_ui_systems.py (6062B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\shared\neocom\Alliances\all_ui_systems.py 2 from carbonui.primitives.container import Container 3 from carbonui.primitives.containerAutoSize import ContainerAutoSize 4 from carbonui.primitives.sprite import Sprite 5 from carbonui.control.buttonIcon import ButtonIcon 6 from eve.client.script.ui.control.eveLabel import EveLabelLarge, EveLabelSmall, EveLabelMedium 7 import carbonui.const as uiconst 8 from eve.client.script.ui.control.themeColored import FillThemeColored 9 from eve.common.lib.appConst import corpRoleDirector 10 import gametime 11 from inventorycommon.util import IsNPC 12 from localization import GetByLabel 13 from player_messaging.client.ui_message import prompt_player_fsd_dialog 14 from sovDashboard.claimedSystems import ClaimedSystemsDashboard 15 from eve.common.lib import appConst as const 16 17 class FormAlliancesSystems(Container): 18 __notifyevents__ = ['OnUpdateCapitalInfo'] 19 is_loaded = False 20 21 def Load(self, *args): 22 if self.is_loaded: 23 return 24 self.is_loaded = True 25 sm.RegisterNotify(self) 26 self.capitalSystemInfo = sm.GetService('alliance').GetCapitalSystemInfo() 27 self.systems = sm.RemoteSvc('stationSvc').GetSystemsForAlliance(session.allianceid) 28 alliance = sm.GetService('alliance').GetAlliance() 29 self.isExecDirector = self._IsDirectorInExecCorp(alliance.executorCorpID) 30 infoCont = ContainerAutoSize(parent=self, align=uiconst.TOTOP, padding=(const.defaultPadding, 31 const.defaultPadding, 32 const.defaultPadding, 33 0)) 34 self.ConstructTopCont(infoCont) 35 currentSystemCont = Container(parent=infoCont, height=24, align=uiconst.TOTOP, padTop=8) 36 self.currentCapitalLabel = EveLabelMedium(text='', left=4, parent=currentSystemCont, align=uiconst.CENTERLEFT, state=uiconst.UI_NORMAL) 37 self.capitalLabel = EveLabelMedium(text=GetByLabel('UI/Sovereignty/CurrentCapital'), left=22, parent=currentSystemCont, align=uiconst.CENTERRIGHT) 38 self.capitalSprite = Sprite(name='capitalIcon', parent=currentSystemCont, texturePath='res:/ui/Texture/classes/Sov/CapitalStarSelection.png', width=16, height=16, align=uiconst.CENTERRIGHT, left=4) 39 self.SetDisplayOfCapitalLabelAndIcon(False) 40 self.futureSystemCont = Container(parent=infoCont, height=24, align=uiconst.TOTOP) 41 self.futureSystemLabel = EveLabelMedium(text='', left=4, parent=self.futureSystemCont, align=uiconst.CENTERLEFT) 42 self.futureSystemTime = EveLabelMedium(text='', left=4, parent=self.futureSystemCont, align=uiconst.CENTERRIGHT) 43 self.removeBtn = ButtonIcon(texturePath='res:/UI/Texture/Icons/73_16_210.png', pos=(4, 0, 16, 16), align=uiconst.CENTERRIGHT, parent=self.futureSystemCont, idx=0, func=self.RemoveCapital, hint=GetByLabel('UI/Common/Buttons/Cancel')) 44 self.removeBtn.display = False 45 if self.isExecDirector: 46 self.removeBtn.display = True 47 self.futureSystemTime.left = 22 48 self.futureSystemCont.display = False 49 self.claimedSystems = ClaimedSystemsDashboard(parent=self, padTop=const.defaultPadding) 50 self.claimedSystems.CreateWindow() 51 self.UpdateCapitalInfo() 52 53 def OnUpdateCapitalInfo(self): 54 self.UpdateCapitalInfo() 55 56 def ConstructTopCont(self, infoCont): 57 topCont = Container(parent=infoCont, height=42, align=uiconst.TOTOP) 58 texturePath = 'res:/ui/Texture/classes/Sov/capitalSystem.png' 59 Sprite(name='capitalIcon', parent=topCont, texturePath=texturePath, width=32, height=32, align=uiconst.CENTERLEFT, left=4) 60 EveLabelLarge(text=GetByLabel('UI/Sovereignty/AllianceCapital'), parent=topCont, align=uiconst.CENTERLEFT, left=42, top=-8) 61 EveLabelSmall(text=GetByLabel('UI/Sovereignty/SelectCapitalSystemDescription'), parent=topCont, align=uiconst.CENTERLEFT, left=42, top=8) 62 63 def UpdateCapitalInfo(self): 64 self.capitalSystemInfo = sm.GetService('alliance').GetCapitalSystemInfo() 65 self.UpdateCapitalText() 66 self.UpdateFutureSystemText() 67 68 def UpdateCapitalText(self): 69 currentSystem = self.capitalSystemInfo.currentCapitalSystem 70 if currentSystem is None: 71 currentSystemText = GetByLabel('UI/Sovereignty/NoCapital') 72 self.SetDisplayOfCapitalLabelAndIcon(False) 73 else: 74 currentSystemText = sm.GetService('infoPanel').GetSolarSystemTrace(currentSystem, '') 75 self.SetDisplayOfCapitalLabelAndIcon(True) 76 self.currentCapitalLabel.text = currentSystemText 77 78 def SetDisplayOfCapitalLabelAndIcon(self, display = True): 79 self.capitalLabel.display = display 80 self.capitalSprite.display = display 81 82 def UpdateFutureSystemText(self): 83 if self.capitalSystemInfo.newCapitalSystem: 84 self.futureSystemCont.display = True 85 solarSystemID = self.capitalSystemInfo.newCapitalSystem 86 self.futureSystemLabel.text = sm.GetService('infoPanel').GetSolarSystemTrace(solarSystemID, '') 87 interval = max(0, self.capitalSystemInfo.newCapitalSystemValidAfter - gametime.GetWallclockTime()) 88 self.futureSystemTime.text = GetByLabel('UI/Sovereignty/CapitalChangeTime', time=interval) 89 else: 90 self.futureSystemCont.display = False 91 92 def _IsDirectorInExecCorp(self, executorCorpID): 93 if session.allianceid is None: 94 return False 95 if IsNPC(session.corpid): 96 return False 97 if session.corpid != executorCorpID: 98 return False 99 if corpRoleDirector & session.corprole != corpRoleDirector: 100 return False 101 return True 102 103 def RemoveCapital(self, *args): 104 if prompt_player_fsd_dialog('CustomQuestion', {'header': GetByLabel('UI/Sovereignty/CancelPendingCapital'), 105 'question': GetByLabel('UI/Sovereignty/CancelPendingCapitalDetails')}, uiconst.YESNO) != uiconst.ID_YES: 106 return 107 sm.GetService('alliance').CancelCapitalSystemTransition()