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

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)