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

mapMarkerSovHub.py (7585B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\shared\mapView\markers\mapMarkerSovHub.py
      2 from __future__ import print_function
      3 import eveicon
      4 from carbon.common.script.sys.serviceConst import ROLE_PROGRAMMER
      5 from carbonui import uiconst
      6 from carbonui.text.styles import TextBody, TextDetail
      7 from carbonui.control.contextMenu.menuEntryData import MenuEntryData
      8 from carbonui.primitives.sprite import Sprite
      9 from eve.client.script.ui import eveColor
     10 from eve.client.script.ui.shared.mapView.markers.mapMarkerBase_Icon import MarkerIconBase
     11 from eve.client.script.ui.shared.sov.sovHub.sovHubWnd import OpenSovHubWnd
     12 from carbonui.primitives.base import ScaleDpi
     13 import eve.client.script.ui.shared.mapView.mapViewConst as mapViewConst
     14 import blue
     15 from eveformat.client import solar_system_with_security
     16 from evemap.workforceUtil import GetTexturePathAndColorFromMode
     17 from localization import GetByLabel
     18 from menu import MenuLabel
     19 from sovereignty.client.sovHub.hubUtil import GetTexturePathForWorkforceMode
     20 from sovereignty.workforce.workforceConst import LABELPATH_BY_MODE
     21 
     22 class MarkerSovHub(MarkerIconBase):
     23     texturePath = eveicon.workforce
     24     distanceFadeAlphaNearFar = (0.0, mapViewConst.MAX_MARKER_DISTANCE)
     25     isConnected = True
     26     distanceSortEnabled = False
     27 
     28     def __init__(self, *args, **kwds):
     29         MarkerIconBase.__init__(self, *args, **kwds)
     30         self.markerID = self.markerID
     31         self.hubStateConfig = kwds['hubStateConfig']
     32         self.SetVariables()
     33         self.projectBracket.offsetY = ScaleDpi(14)
     34 
     35     def SetVariables(self):
     36         self.hubID = self.hubStateConfig.hubID
     37         self.solarSystemID = self.hubStateConfig.solarSystemID
     38         self.sovHubOwnerID = self.hubStateConfig.corporationID
     39         self.isConnected = self.hubStateConfig.IsConnected()
     40 
     41     def Load(self):
     42         if self.isLoaded:
     43             return
     44         self.texturePath, bgColor = GetTexturePathAndColorFromMode(self.hubStateConfig)
     45         if not self.IsOwnedByMyCorp():
     46             bgColor = eveColor.SILVER_GREY
     47         self.backgroundColor = bgColor
     48         MarkerIconBase.Load(self)
     49         self.backgroundSprite.top = 30
     50         self.backgroundSprite.height = -64
     51         self.markerContainer.tooltipPanelClassInfo = None
     52         self.markerContainer.LoadTooltipPanel = self.LoadTooltipPanel
     53         self.markerContainer.pointerDirection = uiconst.POINT_BOTTOM_2
     54 
     55     def _UpdateSprites(self):
     56         self.texturePath, bgColor = GetTexturePathAndColorFromMode(self.hubStateConfig)
     57         if not self.IsOwnedByMyCorp():
     58             bgColor = eveColor.SILVER_GREY
     59         self.backgroundColor = bgColor
     60         self.backgroundSprite.SetRGBA(*self.backgroundColor)
     61         self.iconSprite.SetTexturePath(self.texturePath)
     62 
     63     def IsOwnedByMyCorp(self):
     64         isOwnedByMyCorp = self.sovHubOwnerID == session.corpid
     65         return isOwnedByMyCorp
     66 
     67     def GetBackgroundSpriteIdleOpacity(self):
     68         modifier = 0.5 if not self.IsOwnedByMyCorp() else 1.0
     69         if self.isConnected:
     70             return modifier * 2.0
     71         return modifier * 1.0
     72 
     73     def GetIconSpriteIdleOpacity(self):
     74         modifier = 0.5 if not self.IsOwnedByMyCorp() else 1.0
     75         if self.isConnected:
     76             return modifier * 1.0
     77         return modifier * 0.5
     78 
     79     def GetMenu(self):
     80         if self.sovHubOwnerID != session.corpid:
     81             return []
     82         m = [MenuEntryData(MenuLabel('UI/Menusvc/OpenSovHubConfigWindow'), func=lambda *args: OpenSovHubWnd(self.hubID, self.solarSystemID), texturePath=eveicon.settings)]
     83         m += self.GetStateAndConfigProgrammerMenu()
     84         return m
     85 
     86     def GetStateAndConfigProgrammerMenu(self):
     87         if not session.role & ROLE_PROGRAMMER:
     88             return []
     89         from carbonui.control.contextMenu.menuEntryData import MenuEntryData
     90         m = [None]
     91         m += [(str(self.hubID), blue.pyos.SetClipboardData, (str(self.hubID),))]
     92         try:
     93             sovHubSvc = sm.GetService('sovHubSvc')
     94             workforceState = sovHubSvc.GetWorkforceState(self.hubID)
     95             m.append(MenuEntryData('State : '))
     96             workforceStateMode = workforceState.get_mode()
     97             m.append(MenuEntryData(' %s' % GetByLabel(LABELPATH_BY_MODE.get(workforceStateMode))))
     98             exportState = workforceState.export_state
     99             if workforceState.import_state:
    100                 for ssID, qty in workforceState.import_state.amount_by_source_system_id.iteritems():
    101                     m.append(MenuEntryData('  %s: %s ' % (ssID, qty), func=lambda sID = ssID: blue.pyos.SetClipboardData(str(sID))))
    102 
    103             elif exportState:
    104                 destID = exportState.destination_system_id
    105                 m.append(MenuEntryData('  %s: %s ' % (destID, exportState.amount), func=lambda dID = destID: blue.pyos.SetClipboardData(str(dID))))
    106             workforceConfig = sovHubSvc.GetWorkforceConfiguration(self.hubID)
    107             m.append(MenuEntryData('Config : '))
    108             workforceConfigMode = workforceConfig.get_mode()
    109             m.append(MenuEntryData(' %s' % GetByLabel(LABELPATH_BY_MODE.get(workforceConfigMode))))
    110             if workforceConfig.import_configuration:
    111                 for ssID in workforceConfig.import_configuration.source_system_ids:
    112                     m.append(MenuEntryData('  %s' % ssID, func=lambda sID = ssID: blue.pyos.SetClipboardData(str(sID))))
    113 
    114             elif workforceConfig.export_configuration:
    115                 destID = workforceConfig.export_configuration.destination_system_id
    116                 m.append(MenuEntryData('  %s: %s ' % (destID, workforceConfig.export_configuration.amount), func=lambda dID = destID: blue.pyos.SetClipboardData(str(dID))))
    117         except Exception as e:
    118             print('e = ', e)
    119 
    120         return m
    121 
    122     def GetDisplayText(self):
    123         return ''
    124 
    125     def SetMarkerKwds(self, kwds):
    126         self.hubStateConfig = kwds['hubStateConfig']
    127         self.SetVariables()
    128         if not self.isLoaded:
    129             return
    130         self._UpdateSprites()
    131 
    132     def LoadTooltipPanel(self, tooltipPanel, *args):
    133         tooltipPanel.LoadStandardSpacing()
    134         tooltipPanel.columns = 1
    135         solarSystemName = solar_system_with_security(self.hubStateConfig.solarSystemID)
    136         tooltipPanel.AddTextBodyLabel(text=solarSystemName)
    137         mode = self.hubStateConfig.GetConfigMode()
    138         texturePath = GetTexturePathForWorkforceMode(mode)
    139         labelPath = LABELPATH_BY_MODE.get(mode, 'UI/Sovereignty/SovHub/UnknownWorkforceMode')
    140         modeText = GetByLabel(labelPath)
    141         text = GetByLabel('UI/Sovereignty/WorforceConfigurationMode', configureMode=modeText)
    142         modeLabel = TextBody(text=text, align=uiconst.CENTERLEFT, left=24)
    143         cell = tooltipPanel.AddCell(modeLabel)
    144         Sprite(parent=cell, align=uiconst.CENTERLEFT, pos=(8, 0, 16, 16), texturePath=texturePath, color=eveColor.SILVER_GREY)
    145         if self.sovHubOwnerID != session.corpid:
    146             text = GetByLabel('UI/Sovereignty/SovHubOwnedByDifferentCorp', corpName=cfg.eveowners.Get(self.sovHubOwnerID).name)
    147             tooltipPanel.AddTextDetailsLabel(text=text, colSpan=2, maxWidth=240)
    148         importExportText = self.hubStateConfig.GetImportExportInfoForTooltip()
    149         for path, opacity, text in importExportText:
    150             modeLabel = TextDetail(text=text, align=uiconst.CENTERLEFT, left=24)
    151             cell = tooltipPanel.AddCell(modeLabel)
    152             Sprite(parent=cell, align=uiconst.CENTERLEFT, pos=(8, 0, 16, 16), texturePath=path, color=eveColor.SILVER_GREY)
    153             cell.opacity = opacity