wrecksvc.py (2646B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\services\wrecksvc.py 2 import sys 3 import blue 4 import log 5 from carbon.common.script.sys.service import Service 6 from eve.client.script.parklife import states as state 7 8 class WreckService(Service): 9 __guid__ = 'svc.wreck' 10 __dependencies__ = ['stateSvc', 'gameui'] 11 __notifyevents__ = ['OnCharacterSessionChanged', 'OnSessionReset'] 12 __startupdependencies__ = ['settings'] 13 14 def Run(self, *args): 15 super(WreckService, self).Run(*args) 16 self.viewedWrecks = {} 17 self.viewdWrecksLoaded = False 18 self.LoadViewedWrecks() 19 20 def OnCharacterSessionChanged(self, _oldCharacterID, newCharacterID): 21 if newCharacterID is not None: 22 self.LoadViewedWrecks() 23 24 def OnSessionReset(self): 25 self.viewedWrecks = {} 26 self.viewdWrecksLoaded = False 27 28 def LoadViewedWrecks(self): 29 if not session.charid or self.viewdWrecksLoaded: 30 return 31 self.viewdWrecksLoaded = True 32 expire_hours, expire_mins = (2, 5) 33 expire_ms = 1000 * (3600 * expire_hours + 60 * expire_mins) 34 for itemID, time in settings.char.ui.Get('viewedWrecks', {}).iteritems(): 35 try: 36 if blue.os.TimeDiffInMs(time, blue.os.GetWallclockTime()) < expire_ms: 37 self.viewedWrecks[itemID] = time 38 except blue.error: 39 sys.exc_clear() 40 41 try: 42 self._PersistSettings() 43 except: 44 log.LogException() 45 sys.exc_clear() 46 47 def MarkViewed(self, itemID, isViewed, playSound = False): 48 if self.IsMarkedViewed(itemID) == isViewed: 49 return 50 self._SetViewed(itemID, isViewed) 51 self._MarkVisually(itemID, isViewed) 52 self._PersistSettings() 53 if isViewed and playSound: 54 sm.GetService('audio').SendUIEvent('ui_sfx_open_wreck_play') 55 56 def IsMarkedViewed(self, itemID): 57 return self.stateSvc.GetStates(itemID, (state.flagWreckAlreadyOpened,))[0] 58 59 def IsViewedWreck(self, itemID): 60 return itemID in self.viewedWrecks 61 62 def _MarkVisually(self, itemID, isViewed): 63 self.stateSvc.SetState(itemID, state.flagWreckAlreadyOpened, isViewed) 64 65 def _SetViewed(self, itemID, isViewed): 66 if isViewed and itemID not in self.viewedWrecks: 67 self.viewedWrecks[itemID] = blue.os.GetWallclockTime() 68 elif not isViewed and itemID in self.viewedWrecks: 69 del self.viewedWrecks[itemID] 70 71 def _PersistSettings(self): 72 settings.char.ui.Set('viewedWrecks', self.viewedWrecks)