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

currentDesignTierIndicator.py (3979B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\cosmetics\ship\pages\studio\currentDesignTierIndicator.py
      2 from carbonui import Align, uiconst
      3 from carbonui.primitives.container import Container
      4 from carbonui.uianimations import animations
      5 from cosmetics.client.ships.qa.menus import is_qa, get_qa_menu_for_tier_points
      6 from cosmetics.client.ships.skins.live_data import current_skin_design, current_skin_design_signals
      7 from eve.client.script.ui.cosmetics.ship.controls.tierIndicator import TierIndicator
      8 from eve.client.script.ui.cosmetics.ship.pages.studio import studioSignals
      9 from localization import GetByLabel
     10 
     11 class CurrentDesignTierIndicator(Container):
     12     default_align = Align.CENTER
     13     default_state = uiconst.UI_NORMAL
     14     default_height = 58
     15     default_width = 336
     16 
     17     def __init__(self, *args, **kwargs):
     18         super(CurrentDesignTierIndicator, self).__init__(*args, **kwargs)
     19         self._radius = 0.0
     20         self.construct_layout()
     21         self.connect_signals()
     22 
     23     def Close(self):
     24         try:
     25             self.disconnect_signals()
     26         finally:
     27             super(CurrentDesignTierIndicator, self).Close()
     28 
     29     def connect_signals(self):
     30         current_skin_design_signals.on_slot_fitting_changed.connect(self.on_slot_fitting_changed)
     31         current_skin_design_signals.on_tier_level_changed.connect(self.on_tier_level_changed)
     32         current_skin_design_signals.on_design_reset.connect(self.on_design_reset)
     33         current_skin_design_signals.on_existing_design_loaded.connect(self.on_existing_design_loaded)
     34         studioSignals.on_scene_zoom.connect(self.on_scene_zoom)
     35 
     36     def disconnect_signals(self):
     37         current_skin_design_signals.on_slot_fitting_changed.disconnect(self.on_slot_fitting_changed)
     38         current_skin_design_signals.on_tier_level_changed.disconnect(self.on_tier_level_changed)
     39         current_skin_design_signals.on_design_reset.disconnect(self.on_design_reset)
     40         current_skin_design_signals.on_existing_design_loaded.disconnect(self.on_existing_design_loaded)
     41         studioSignals.on_scene_zoom.disconnect(self.on_scene_zoom)
     42 
     43     def construct_layout(self):
     44         self.tier_indicator = TierIndicator(parent=self, align=Align.CENTER)
     45         self.update_tier()
     46 
     47     def get_skin_tier_level(self):
     48         return current_skin_design.get().tier_level
     49 
     50     def on_slot_fitting_changed(self, slot_id, component_instance):
     51         self.update_tier()
     52 
     53     def on_tier_level_changed(self, tier_level):
     54         self.update_tier()
     55 
     56     def on_design_reset(self, *args):
     57         self.update_tier()
     58 
     59     def on_existing_design_loaded(self, *args):
     60         self.update_tier()
     61 
     62     def update_tier(self):
     63         self.tier_indicator.set_tier(self.get_skin_tier_level())
     64 
     65     def on_scene_zoom(self, is_zoomed):
     66         target_opacity = 0.0 if is_zoomed else 1.0
     67         animations.FadeTo(self, self.opacity, target_opacity, duration=0.15)
     68 
     69     def update_radial_position(self):
     70         self.top = self._radius - self.height
     71 
     72     @property
     73     def radius(self):
     74         return self._radius
     75 
     76     @radius.setter
     77     def radius(self, value):
     78         self._radius = value
     79         self.update_radial_position()
     80 
     81     def GetMenu(self):
     82         if is_qa():
     83             return get_qa_menu_for_tier_points()
     84 
     85     @property
     86     def hint(self):
     87         hint = GetByLabel('UI/Personalization/ShipSkins/SKINR/Studio/TierIndicatorHint')
     88         if is_qa():
     89             tier_level = current_skin_design.get().tier_level
     90             tier_tresholds = current_skin_design.get().tier_thresholds
     91             max_value = tier_tresholds.get_threshold_for_tier(tier_level)
     92             min_value = tier_tresholds.get_threshold_for_tier(tier_level - 1) + 1 if tier_level > 1 else 0
     93             hint += u'\n\nQA: Current Tier: {tier} ({min} - {max})\nCurrent Points: {points}'.format(tier=tier_level, min=min_value, max=max_value, points=current_skin_design.get().tier_points)
     94         return hint