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

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