controller.py (1789B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\achievement_system\client\ui\fanfare\controller.py 2 import blue 3 import trinity 4 import uthread2 5 from achievement_system.client.api.signal import on_achievement_completed 6 from achievement_system.client.ui.fanfare.achievement_complete import achievement_complete_hero_notification 7 8 class AchievementFanfareUIController(object): 9 __notifyevents__ = ['OnApplicationFocusChanged'] 10 11 def __init__(self): 12 self.fanfare_pending_method = None 13 self.achievement_id = None 14 on_achievement_completed.connect(self.on_achievement_completed) 15 sm.RegisterNotify(self) 16 17 def __del__(self): 18 on_achievement_completed.disconnect(self.on_achievement_completed) 19 sm.UnregisterNotify(self) 20 21 def on_achievement_completed(self, achievement_id): 22 self.achievement_id = achievement_id 23 if trinity.app.active: 24 uthread2.start_tasklet(self.trigger_achievement_completed_fanfare) 25 else: 26 self.fanfare_pending_method = self.trigger_achievement_completed_fanfare 27 28 def OnApplicationFocusChanged(self, hasFocus): 29 if self.fanfare_pending_method and hasFocus: 30 method = self.fanfare_pending_method 31 blue.synchro.SleepWallclock(1000) 32 uthread2.start_tasklet(method) 33 34 def trigger_achievement_completed_fanfare(self): 35 self.fanfare_pending_method = None 36 self.show_hero_notification(self.achievement_id) 37 38 def show_hero_notification(self, achievement_id): 39 40 def PlayVideo(parent, cancellation_token): 41 achievement_complete_hero_notification(parent, achievement_id) 42 43 sm.GetService('heroNotification').play(PlayVideo, 1) 44 self.achievement_id = None