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

corpStructureStatePanel.py (4721B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\cosmetics\structure\components\corpStructureStatePanel.py
      2 from carbonui import uiconst, TextColor
      3 from carbonui.primitives.container import Container
      4 from carbonui.primitives.sprite import Sprite
      5 from carbonui.uicore import uicore
      6 from cosmetics.common.structures.exceptions import LicenseNotFoundException
      7 from eve.client.script.ui.control.eveLabel import EveLabelMedium
      8 from eve.client.script.ui.control.loadingContainer import LoadingContainer, LoadingSpriteSize
      9 from localization import GetByLabel
     10 from structures import UPKEEP_STATE_FULL_POWER
     11 from eve.client.script.ui.cosmetics.structure import const as paintToolConst, paintToolSignals
     12 STATUS_ICON_SIZE = 32
     13 
     14 class CorpStructureStatePanelLoadingContainer(LoadingContainer):
     15 
     16     def _ConstructFailureState(self, failureStateMessage, failureStateSubtext, retryBtnLabel):
     17         icon_cont = Container(parent=self._failureStateCont, name='iconCont', align=uiconst.TOLEFT, width=STATUS_ICON_SIZE, left=2)
     18         Sprite(parent=icon_cont, name='icon', align=uiconst.CENTER, width=STATUS_ICON_SIZE, height=STATUS_ICON_SIZE, texturePath='res:/UI/Texture/classes/paintTool/low_power.png')
     19         EveLabelMedium(parent=self._failureStateCont, align=uiconst.CENTERLEFT, left=STATUS_ICON_SIZE, text=GetByLabel('UI/Personalization/PaintTool/StructureStates/ErrorLoading'))
     20 
     21 
     22 class CorpStructureStatePanel(Container):
     23     default_state = uiconst.UI_NORMAL
     24 
     25     def __init__(self, structure_data, **kw):
     26         self._structure_data = structure_data
     27         super(CorpStructureStatePanel, self).__init__(**kw)
     28         self._construct_layout()
     29 
     30     def Close(self):
     31         super(CorpStructureStatePanel, self).Close()
     32 
     33     def _construct_layout(self):
     34         self._loading_container = CorpStructureStatePanelLoadingContainer(parent=self, loadingSpriteSize=LoadingSpriteSize.SMALL)
     35         self._loading_container.loadingSpriteFadeDelay = 0.5
     36         self._loading_container.LoadContent(loadCallback=self._load)
     37 
     38     def _load(self):
     39         try:
     40             license_id = sm.GetService('cosmeticsSvc').get_structure_cosmetic_license_id_from_state(self._structure_data.instance_id, self._structure_data.location_id, True)
     41         except LicenseNotFoundException:
     42             license_id = None
     43 
     44         has_license = license_id is not None
     45         is_eligible = self._structure_data.is_eligible_for_painting()
     46         full_power = self._structure_data.upkeep_state == UPKEEP_STATE_FULL_POWER
     47         self._structure_data.license_id = license_id
     48         self.hint = ''
     49         if not is_eligible:
     50             icon_path = 'res:/UI/Texture/classes/paintTool/low_power.png'
     51             text = GetByLabel('UI/Personalization/PaintTool/StructureStates/Ineligible')
     52         elif has_license:
     53             icon_path = 'res:/UI/Texture/classes/paintTool/low_power.png'
     54             text = GetByLabel('UI/Personalization/PaintTool/StructureStates/HasLicense')
     55             license_data = sm.GetService('cosmeticsLicenseSvc').get_structure_paintwork_license(self._structure_data.instance_id, license_id)
     56             remaining_seconds = max(0, license_data.get_remaining_time())
     57             self.hint = GetByLabel('UI/Personalization/PaintTool/StructureStates/LicenseDurationHint', numDays=int(remaining_seconds / 86400))
     58         elif full_power:
     59             icon_path = 'res:/UI/Texture/classes/paintTool/full_power.png'
     60             text = GetByLabel(paintToolConst.UPKEEP_STATE_NAMES[self._structure_data.upkeep_state])
     61         else:
     62             icon_path = 'res:/UI/Texture/classes/paintTool/low_power.png'
     63             text = GetByLabel(paintToolConst.UPKEEP_STATE_NAMES[self._structure_data.upkeep_state])
     64         icon_cont = Container(parent=self, name='iconCont', align=uiconst.TOLEFT, width=STATUS_ICON_SIZE, left=2)
     65         Sprite(parent=icon_cont, name='icon', align=uiconst.CENTER, width=STATUS_ICON_SIZE, height=STATUS_ICON_SIZE, texturePath=icon_path)
     66         self._state_label = EveLabelMedium(parent=self, align=uiconst.CENTERLEFT, text=text, left=STATUS_ICON_SIZE, color=TextColor.NORMAL, autoFadeSides=paintToolConst.LABEL_FADEOUT)
     67         paintToolSignals.on_structure_state_loaded(self._structure_data.instance_id)
     68 
     69     @staticmethod
     70     def get_size(structure_data, label_params):
     71         text = GetByLabel(paintToolConst.UPKEEP_STATE_NAMES[structure_data.upkeep_state])
     72         alt_text = GetByLabel('UI/Personalization/PaintTool/StructureStates/ErrorLoading')
     73         length = uicore.font.MeasureTabstops([(text,) + label_params])[0]
     74         alt_length = uicore.font.MeasureTabstops([(alt_text,) + label_params])[0]
     75         return max(length, alt_length) + STATUS_ICON_SIZE