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))