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