targetTrackingState.py (3287B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\deathzone\targetTrackingState.py 2 from uthread import SEC 3 4 class TargetTrackingState(object): 5 6 def __init__(self, trackedSinceTimestamp, damageTickPeriod, safetyDuration, peakHullDamageFractionPerTick, hullDamageFractionIncreasePerTick): 7 if trackedSinceTimestamp is None: 8 raise ValueError('trackedSinceTimestamp cannot be None') 9 if damageTickPeriod is None or damageTickPeriod <= 0: 10 raise ValueError('damageTickPeriod must be positive number') 11 if safetyDuration is None or safetyDuration <= 0: 12 raise ValueError('safetyDuration must be positive number') 13 if peakHullDamageFractionPerTick is None or peakHullDamageFractionPerTick <= 0: 14 raise ValueError('peakHullDamageFractionPerTick must be positive number') 15 if hullDamageFractionIncreasePerTick is None or hullDamageFractionIncreasePerTick <= 0: 16 raise ValueError('hullDamageFractionIncreasePerTick must be positive number') 17 self._trackedSinceTimestamp = trackedSinceTimestamp 18 self._damageTickPeriod = damageTickPeriod 19 self._safetyDuration = safetyDuration 20 self._peakHullDamageFractionPerTick = peakHullDamageFractionPerTick 21 self._hullDamageFractionIncreasePerTick = hullDamageFractionIncreasePerTick 22 23 def __repr__(self): 24 return 'TargetTrackingState(trackedSinceTimestamp=%r, safetyDuration=%r)' % (self._trackedSinceTimestamp, self._safetyDuration) 25 26 def __eq__(self, other): 27 if isinstance(other, TargetTrackingState): 28 return self._trackedSinceTimestamp == other._trackedSinceTimestamp and self._damageTickPeriod == other._damageTickPeriod and self._safetyDuration == other._safetyDuration and self._peakHullDamageFractionPerTick == other._peakHullDamageFractionPerTick and self._hullDamageFractionIncreasePerTick == other._hullDamageFractionIncreasePerTick 29 return False 30 31 def __ne__(self, other): 32 return not self.__eq__(other) 33 34 @property 35 def trackedSinceTimestamp(self): 36 return self._trackedSinceTimestamp 37 38 @property 39 def damageTickPeriod(self): 40 return self._damageTickPeriod 41 42 @property 43 def safetyDuration(self): 44 return self._safetyDuration 45 46 @property 47 def peakHullDamageFractionPerTick(self): 48 return self._peakHullDamageFractionPerTick 49 50 @property 51 def hullDamageFractionIncreasePerTick(self): 52 return self._hullDamageFractionIncreasePerTick 53 54 def IsDamageActive(self, timestamp): 55 return timestamp > self._trackedSinceTimestamp + self._safetyDuration * SEC 56 57 def GetSafetyTimeRemaining(self, timestamp): 58 return max(0, (self._trackedSinceTimestamp - timestamp) / SEC + self._safetyDuration) 59 60 def GetHullDamageFractionPerTick(self, timestamp): 61 if not self.IsDamageActive(timestamp): 62 return 0.0 63 timeSinceDamageStart = timestamp - (self._trackedSinceTimestamp + self._safetyDuration * SEC) 64 ticksSinceDamageStart = timeSinceDamageStart / (self._damageTickPeriod * SEC) 65 tickDamage = ticksSinceDamageStart * self._hullDamageFractionIncreasePerTick 66 return min(tickDamage, self._peakHullDamageFractionPerTick)