Change functionality of remote rep calculations to be more efficient.
* Implement a property per attribute * Use None as our cleared value (signifies that it really hasn't been calculated, not just that the calc was 0)
This commit is contained in:
@@ -129,10 +129,10 @@ class Fit(object):
|
||||
self.__capRecharge = None
|
||||
self.__calculatedTargets = []
|
||||
self.__remoteReps = {
|
||||
"Armor": 0,
|
||||
"Shield": 0,
|
||||
"Hull": 0,
|
||||
"Capacitor": 0,
|
||||
"Armor": None,
|
||||
"Shield": None,
|
||||
"Hull": None,
|
||||
"Capacitor": None,
|
||||
}
|
||||
self.factorReload = False
|
||||
self.boostsFits = set()
|
||||
@@ -307,6 +307,34 @@ class Fit(object):
|
||||
def totalYield(self):
|
||||
return self.droneYield + self.minerYield
|
||||
|
||||
@property
|
||||
def armorRR(self):
|
||||
if self.__remoteReps["Armor"] is None:
|
||||
self.calculateRemoteReps()
|
||||
|
||||
return self.__remoteReps["Armor"]
|
||||
|
||||
@property
|
||||
def shieldRR(self):
|
||||
if self.__remoteReps["Shield"] is None:
|
||||
self.calculateRemoteReps()
|
||||
|
||||
return self.__remoteReps["Shield"]
|
||||
|
||||
@property
|
||||
def hullRR(self):
|
||||
if self.__remoteReps["Hull"] is None:
|
||||
self.calculateRemoteReps()
|
||||
|
||||
return self.__remoteReps["Hull"]
|
||||
|
||||
@property
|
||||
def capTransfer(self):
|
||||
if self.__remoteReps["Capacitor"] is None:
|
||||
self.calculateRemoteReps()
|
||||
|
||||
return self.__remoteReps["Capacitor"]
|
||||
|
||||
@property
|
||||
def maxTargets(self):
|
||||
return min(self.extraAttributes["maxTargetsLockedFromSkills"],
|
||||
@@ -400,7 +428,7 @@ class Fit(object):
|
||||
self.commandBonuses = {}
|
||||
|
||||
for remoterep_type in self.__remoteReps:
|
||||
self.__remoteReps[remoterep_type] = 0
|
||||
self.__remoteReps[remoterep_type] = None
|
||||
|
||||
del self.__calculatedTargets[:]
|
||||
del self.__extraDrains[:]
|
||||
@@ -1157,8 +1185,7 @@ class Fit(object):
|
||||
self.__capStable = True
|
||||
self.__capState = 100
|
||||
|
||||
@property
|
||||
def remoteReps(self):
|
||||
def calculateRemoteReps(self):
|
||||
def amount_per_second(module_amount, module_duration, module_reload, module_chargerate, module_capacity, module_volume):
|
||||
numcycles = math.floor(module_capacity / (module_volume * module_chargerate))
|
||||
|
||||
@@ -1167,15 +1194,19 @@ class Fit(object):
|
||||
|
||||
return module_amount / module_duration
|
||||
|
||||
for remoterep_type in self.__remoteReps:
|
||||
# Set all to 0
|
||||
self.__remoteReps[remoterep_type] = 0
|
||||
|
||||
for module in self.modules:
|
||||
# Skip empty modules
|
||||
if module.isEmpty:
|
||||
continue
|
||||
|
||||
module_group = getattr(module.item.group, "name")
|
||||
module_group = module.item.group.name
|
||||
|
||||
# Skip modules that aren't online
|
||||
if getattr(module, "state", 0) < 1:
|
||||
if module.state < State.ACTIVE:
|
||||
continue
|
||||
|
||||
if module_group in ("Remote Armor Repairer", "Ancillary Remote Armor Repairer"):
|
||||
@@ -1230,8 +1261,6 @@ class Fit(object):
|
||||
|
||||
self.__remoteReps["Capacitor"] += hp_per_s
|
||||
|
||||
return self.__remoteReps
|
||||
|
||||
@property
|
||||
def hp(self):
|
||||
hp = {}
|
||||
|
||||
@@ -83,10 +83,10 @@ class OutgoingViewFull(StatsView):
|
||||
# If we did anything intresting, we'd update our labels to reflect the new fit's stats here
|
||||
|
||||
stats = [
|
||||
("labelRemoteArmor", lambda: fit.remoteReps["Armor"], 3, 0, 0, u"%s HP/s", None),
|
||||
("labelRemoteShield", lambda: fit.remoteReps["Shield"], 3, 0, 0, u"%s HP/s", None),
|
||||
("labelRemoteHull", lambda: fit.remoteReps["Hull"], 3, 0, 0, u"%s HP/s", None),
|
||||
("labelRemoteCapacitor", lambda: fit.remoteReps["Capacitor"], 3, 0, 0, u"%s GJ/s", None),
|
||||
("labelRemoteArmor", lambda: fit.armorRR, 3, 0, 0, u"%s HP/s", None),
|
||||
("labelRemoteShield", lambda: fit.shieldRR, 3, 0, 0, u"%s HP/s", None),
|
||||
("labelRemoteHull", lambda: fit.hullRR, 3, 0, 0, u"%s HP/s", None),
|
||||
("labelRemoteCapacitor", lambda: fit.capTransfer, 3, 0, 0, u"%s GJ/s", None),
|
||||
]
|
||||
|
||||
counter = 0
|
||||
|
||||
@@ -83,10 +83,10 @@ class OutgoingViewFull(StatsView):
|
||||
# If we did anything intresting, we'd update our labels to reflect the new fit's stats here
|
||||
|
||||
stats = [
|
||||
("labelRemoteArmor", lambda: fit.remoteReps["Armor"], 3, 0, 0, u"%s HP/s", None),
|
||||
("labelRemoteShield", lambda: fit.remoteReps["Shield"], 3, 0, 0, u"%s HP/s", None),
|
||||
("labelRemoteHull", lambda: fit.remoteReps["Hull"], 3, 0, 0, u"%s HP/s", None),
|
||||
("labelRemoteCapacitor", lambda: fit.remoteReps["Capacitor"], 3, 0, 0, u"%s GJ/s", None),
|
||||
("labelRemoteArmor", lambda: fit.armorRR, 3, 0, 0, u"%s HP/s", None),
|
||||
("labelRemoteShield", lambda: fit.shieldRR, 3, 0, 0, u"%s HP/s", None),
|
||||
("labelRemoteHull", lambda: fit.hullRR, 3, 0, 0, u"%s HP/s", None),
|
||||
("labelRemoteCapacitor", lambda: fit.capTransfer, 3, 0, 0, u"%s GJ/s", None),
|
||||
]
|
||||
|
||||
counter = 0
|
||||
|
||||
Reference in New Issue
Block a user