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

dotInfoPerTarget.py (1715B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\dotWeapons\client\dotInfoPerTarget.py
      2 import gametime
      3 import itertoolsext
      4 from dotWeapons.common.dotConst import DOT_ACTIVE
      5 
      6 class DamageInfoPerTarget(object):
      7 
      8     def __init__(self):
      9         self._ResetState()
     10 
     11     def _ResetState(self):
     12         self._dmgInfo = set()
     13 
     14     def UpdatedDotWeapons(self, dmgApps):
     15         self._dmgInfo = dmgApps
     16 
     17     def HasDotApps(self):
     18         self._ExpireDmgInfo()
     19         if self._dmgInfo:
     20             return True
     21 
     22     def _ExpireDmgInfo(self):
     23         toRemove = []
     24         for d in self._dmgInfo:
     25             if d.expiryTime <= gametime.GetSimTime():
     26                 toRemove.append(d)
     27 
     28         for tr in toRemove:
     29             self._dmgInfo.discard(tr)
     30 
     31     def GetAppliedDamage(self):
     32         self._ExpireDmgInfo()
     33         return itertoolsext.first(self._dmgInfo, predicate=lambda x: x.activityState == DOT_ACTIVE)
     34 
     35     def GetAllDmgInfo(self, doExpire = True):
     36         if doExpire:
     37             self._ExpireDmgInfo()
     38         return self._dmgInfo
     39 
     40     def GetLastExpiryTimestamp(self):
     41         self._ExpireDmgInfo()
     42         lastPendingExpiryTime = None
     43         for p in self.GetAllDmgInfo():
     44             if lastPendingExpiryTime < p.expiryTime:
     45                 lastPendingExpiryTime = p.expiryTime
     46 
     47         return lastPendingExpiryTime
     48 
     49     def GetDamageInfoForAttacker(self, charID, doExpire = True):
     50         all = self.GetAllDmgInfo(doExpire)
     51         ret = []
     52         for dmgInfo in all:
     53             if dmgInfo.attackerID == charID:
     54                 ret.append(dmgInfo)
     55 
     56         return ret
     57 
     58     def __repr__(self):
     59         return '<DamageInfoPerTarget %s>, %s' % (self.__dict__, id(self))