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

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