70 lines
1.8 KiB
Python
70 lines
1.8 KiB
Python
# Borrowed from new eos
|
|
|
|
|
|
from utils.repr import makeReprStr
|
|
|
|
|
|
class CycleInfo:
|
|
|
|
def __init__(self, activeTime, inactiveTime, quantity, isInactivityReload):
|
|
self.activeTime = activeTime
|
|
self.inactiveTime = inactiveTime
|
|
self.quantity = quantity
|
|
self.isInactivityReload = isInactivityReload
|
|
|
|
@property
|
|
def averageTime(self):
|
|
return self.activeTime + self.inactiveTime
|
|
|
|
def iterCycles(self):
|
|
i = 0
|
|
while i < self.quantity:
|
|
yield self.activeTime, self.inactiveTime, self.isInactivityReload
|
|
i += 1
|
|
|
|
def _getCycleQuantity(self):
|
|
return self.quantity
|
|
|
|
def _getTime(self):
|
|
return (self.activeTime + self.inactiveTime) * self.quantity
|
|
|
|
def __repr__(self):
|
|
spec = ['activeTime', 'inactiveTime', 'quantity', 'isInactivityReload']
|
|
return makeReprStr(self, spec)
|
|
|
|
|
|
class CycleSequence:
|
|
|
|
def __init__(self, sequence, quantity):
|
|
self.sequence = sequence
|
|
self.quantity = quantity
|
|
|
|
@property
|
|
def averageTime(self):
|
|
"""Get average time between cycles."""
|
|
return self._getTime() / self._getCycleQuantity()
|
|
|
|
def iterCycles(self):
|
|
i = 0
|
|
while i < self.quantity:
|
|
for cycleInfo in self.sequence:
|
|
for cycleTime, inactiveTime, isInactivityReload in cycleInfo.iterCycles():
|
|
yield cycleTime, inactiveTime, isInactivityReload
|
|
i += 1
|
|
|
|
def _getCycleQuantity(self):
|
|
quantity = 0
|
|
for item in self.sequence:
|
|
quantity += item._getCycleQuantity()
|
|
return quantity
|
|
|
|
def _getTime(self):
|
|
time = 0
|
|
for item in self.sequence:
|
|
time += item._getTime()
|
|
return time
|
|
|
|
def __repr__(self):
|
|
spec = ['sequence', 'quantity']
|
|
return makeReprStr(self, spec)
|