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

mining_scan_buttons.py (6223B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\oremining\mining_scan_buttons.py
      2 import appConst
      3 import carbonui
      4 import carbonui.text.styles
      5 import dogma.const as dogma_const
      6 import eveicon
      7 import evelink.client
      8 import evetypes
      9 from carbon.common.script.sys.serviceManager import ServiceManager
     10 from carbonui import uiconst, PickState, TextColor, Align
     11 from carbonui.control.contextMenu.menuData import MenuData
     12 from carbonui.loggers.buttonLogger import log_button_clicked
     13 from carbonui.primitives.containerAutoSize import ContainerAutoSize
     14 from carbonui.primitives.gradientSprite import GradientSprite
     15 from carbonui.uiconst import OutputMode
     16 from carbonui.uicore import uicore
     17 from eve.client.script.dogma import dogma_signals
     18 from eve.client.script.ui import eveColor
     19 from eve.client.script.ui.inflight.mining_scan_results_window import MiningScanResultsWindow
     20 from eve.client.script.ui.inflight.shipHud.leftSideButton import LeftSideButton
     21 from eve.client.script.ui.shared.ledger.ledgerWnd import LedgerWindow
     22 from localization import GetByLabel
     23 from mining import MiningScan
     24 from mining.client import mining_signals, mining_util
     25 from mining.client.mining_overlay_controller import MiningOverlayController
     26 from uihider import UiHiderMixin
     27 from uihighlighting.uniqueNameConst import UNIQUE_NAME_MINING_SCAN_BTN
     28 
     29 class MiningScanButtons(UiHiderMixin, ContainerAutoSize):
     30     uniqueUiName = UNIQUE_NAME_MINING_SCAN_BTN
     31     default_padLeft = 8
     32 
     33     def __init__(self, **kwargs):
     34         super(MiningScanButtons, self).__init__(**kwargs)
     35         LeftSideButtonMiningScan(parent=self, padLeft=2)
     36 
     37 
     38 class LeftSideButtonMiningScan(LeftSideButton):
     39     default_texturePath = eveicon.mining_overlay_toggle_default
     40     cmdName = 'CmdMiningScan'
     41     analyticID = 'MiningScanButton'
     42 
     43     def __init__(self, **kwargs):
     44         super(LeftSideButtonMiningScan, self).__init__(**kwargs)
     45         self.update_icon()
     46         self.connect_signals()
     47 
     48     def Close(self):
     49         super(LeftSideButtonMiningScan, self).Close()
     50         self.disconnect_signals()
     51 
     52     def connect_signals(self):
     53         mining_signals.on_mining_overlay_enabled.connect(self.update)
     54         mining_signals.on_mining_overlay_disabled.connect(self.update)
     55         mining_signals.on_mining_scan_effect_started.connect(self.on_mining_scan_effect_started)
     56         mining_signals.on_mining_scan_effect_completed.connect(self.on_mining_scan_effect_completed)
     57         dogma_signals.on_attribute_changed.connect(self.on_dogma_attribute_changed)
     58 
     59     def disconnect_signals(self):
     60         mining_signals.on_mining_overlay_enabled.disconnect(self.update)
     61         mining_signals.on_mining_overlay_disabled.disconnect(self.update)
     62         mining_signals.on_mining_scan_effect_started.disconnect(self.on_mining_scan_effect_started)
     63         mining_signals.on_mining_scan_effect_completed.disconnect(self.on_mining_scan_effect_completed)
     64         dogma_signals.on_attribute_changed.disconnect(self.on_dogma_attribute_changed)
     65 
     66     def on_mining_scan_effect_started(self):
     67         self.SetActive()
     68         uicore.animations.FadeTo(self.blinkBG, 0.0, 0.9, duration=1.6, loops=uiconst.ANIM_REPEAT, curveType=uiconst.ANIM_WAVE, callback=self._BlinkFadeOut)
     69 
     70     def on_mining_scan_effect_completed(self):
     71         self._BlinkFadeOut()
     72 
     73     def on_dogma_attribute_changed(self, item, attribute_id, value, old_value):
     74         if item.itemID == session.shipid and attribute_id == dogma_const.attributeMiningScannerUpgrade:
     75             self.update_icon()
     76 
     77     def update_icon(self):
     78         tier = mining_util.get_current_ship_mining_scanner_upgrade_tier()
     79         if tier == MiningScan.TIER_2:
     80             texture_path = eveicon.mining_overlay_toggle_local
     81         elif tier == MiningScan.TIER_3:
     82             texture_path = eveicon.mining_overlay_toggle_fleet_shared
     83         else:
     84             texture_path = eveicon.mining_overlay_toggle_default
     85         self.icon.texturePath = texture_path
     86 
     87     def OnClick(self, *args):
     88         LeftSideButton.OnClick(self)
     89         uicore.cmd.GetCommandAndExecute(self.cmdName)
     90         log_button_clicked(self)
     91 
     92     def update(self, *args):
     93         if MiningOverlayController.get_instance().is_active:
     94             self.SetActive()
     95         else:
     96             self.SetInactive()
     97             self._BlinkFadeOut()
     98 
     99     def GetMenu(self):
    100         m = MenuData()
    101         controller = MiningOverlayController.get_instance()
    102         m.AddEntry(GetByLabel('UI/Mining/OpenScanResultsWindow'), MiningScanResultsWindow.Open, texturePath=eveicon.open_window)
    103         m.AddEntry(GetByLabel('UI/Mining/OpenMiningLedger'), LedgerWindow.Open, texturePath=eveicon.mining)
    104         if controller.is_active:
    105             m.AddSeparator()
    106             m.AddEntry(GetByLabel('UI/Mining/DisableMiningOverlay'), controller.deactivate, texturePath=eveicon.close)
    107         return m
    108 
    109     def LoadTooltipPanel(self, tooltipPanel, *args):
    110         super(LeftSideButtonMiningScan, self).LoadTooltipPanel(tooltipPanel, *args)
    111         tooltipPanel.AddCell(carbonui.text.styles.TextBody(text=GetByLabel('UI/Mining/OreValue'), padTop=8), colSpan=2)
    112         tooltipPanel.AddCell(GradientSprite(align=uiconst.TOTOP, rgbData=[(0.0, eveColor.ULTRAMARINE_BLUE[:3]), (0.5, eveColor.AIR_TURQUOISE[:3]), (1.0, eveColor.SAND_YELLOW[:3])], alphaData=[(0.0, 1.0)], outputMode=OutputMode.COLOR_AND_GLOW, glowBrightness=0.2, width=200, height=8), colSpan=2)
    113         carbonui.text.styles.TextBody(parent=tooltipPanel, align=Align.CENTERLEFT, text=GetByLabel('UI/Mining/LowValue'))
    114         carbonui.text.styles.TextBody(parent=tooltipPanel, align=Align.CENTERRIGHT, text=GetByLabel('UI/Mining/HighValue'))
    115         tier = mining_util.get_current_ship_mining_scanner_upgrade_tier()
    116         if not tier or tier < MiningScan.TIER_2:
    117             tooltipPanel.pickState = PickState.ON
    118             module_link = evelink.type_link(appConst.typeSurveyScannerI, evetypes.GetName(appConst.typeSurveyScannerI))
    119             label = carbonui.text.styles.TextBody(text=GetByLabel('UI/Mining/MiningScannerUpgradeRequired', module_name=module_link), pickState=PickState.ON, color=TextColor.SECONDARY, maxWidth=200, padTop=8)
    120             tooltipPanel.AddCell(label, colSpan=2)