score.py (2660B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\achievement_system\client\ui\window\navigation\score.py 2 import logging 3 import threadutils 4 from achievement_system.client.api.repository import get_repository 5 from achievement_system.client.api.signal import on_achievement_completed, on_achievement_milestone_reached 6 from achievement_system.client.ui.window.const import TRANSITION_DURATION 7 from achievement_system.common.const import LOGGER_NAME 8 from carbon.common.script.util.format import FmtAmt 9 from carbonui import Align, TextColor 10 from carbonui.primitives.containerAutoSize import ContainerAutoSize 11 from carbonui.text.styles import TextHeader 12 from carbonui.uianimations import animations 13 from character.client.identifier import CharacterIdentifier 14 from localization import GetByLabel 15 logger = logging.getLogger(LOGGER_NAME) 16 17 class AchievementScore(ContainerAutoSize): 18 default_height = 24 19 default_opacity = 0.0 20 21 def __init__(self, *args, **kwargs): 22 super(AchievementScore, self).__init__(*args, **kwargs) 23 self.construct_layout() 24 self.connect_signals() 25 self.update() 26 27 def Close(self): 28 try: 29 self.disconnect_signals() 30 finally: 31 super(AchievementScore, self).Close() 32 33 def connect_signals(self): 34 on_achievement_completed.connect(self.on_achievement_completed) 35 on_achievement_milestone_reached.connect(self.on_achievement_milestone_reached) 36 37 def disconnect_signals(self): 38 on_achievement_completed.disconnect(self.on_achievement_completed) 39 on_achievement_milestone_reached.disconnect(self.on_achievement_milestone_reached) 40 41 def construct_layout(self): 42 self.text_label = TextHeader(name='text_label', parent=self, align=Align.TOLEFT, color=TextColor.SECONDARY) 43 self.amount_label = TextHeader(name='amount_label', parent=self, align=Align.TOLEFT, color=TextColor.NORMAL, padLeft=4) 44 45 @threadutils.highlander_threaded 46 def update(self): 47 self.text_label.text = GetByLabel('UI/Achievements/Window/AchievementScore') 48 try: 49 char_id = CharacterIdentifier(session.charid) 50 score = get_repository().get_achievement_score(char_id) 51 self.amount_label.text = FmtAmt(score) 52 animations.FadeIn(self, duration=TRANSITION_DURATION) 53 except Exception as e: 54 logger.exception('Unable to update total achievement score: %s' % e.message) 55 56 def on_achievement_completed(self, achievement_id): 57 self.update() 58 59 def on_achievement_milestone_reached(self, achievement_id, milestone_id): 60 self.update()