MCPcopy Create free account
hub / github.com/pyfa-org/Pyfa / TimeCache

Class TimeCache

graphs/data/fitDamageStats/cache/time.py:29–268  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

27
28
29class TimeCache(FitDataCache):
30
31 # Whole data getters
32 def getDpsData(self, src):
33 """Return DPS data in {time: {key: dps}} format."""
34 return self._data[src.item.ID]['finalDps']
35
36 def getVolleyData(self, src):
37 """Return volley data in {time: {key: volley}} format."""
38 return self._data[src.item.ID]['finalVolley']
39
40 def getDmgData(self, src):
41 """Return inflicted damage data in {time: {key: damage}} format."""
42 return self._data[src.item.ID]['finalDmg']
43
44 # Specific data point getters
45 def getDpsDataPoint(self, src, time):
46 """Get DPS data by specified time in {key: dps} format."""
47 return self._getDataPoint(src=src, time=time, dataFunc=self.getDpsData)
48
49 def getVolleyDataPoint(self, src, time):
50 """Get volley data by specified time in {key: volley} format."""
51 return self._getDataPoint(src=src, time=time, dataFunc=self.getVolleyData)
52
53 def getDmgDataPoint(self, src, time):
54 """Get inflicted damage data by specified time in {key: dmg} format."""
55 return self._getDataPoint(src=src, time=time, dataFunc=self.getDmgData)
56
57 # Preparation functions
58 def prepareDpsData(self, src, maxTime):
59 self._prepareDpsVolleyData(src=src, maxTime=maxTime)
60
61 def prepareVolleyData(self, src, maxTime):
62 self._prepareDpsVolleyData(src=src, maxTime=maxTime)
63
64 def prepareDmgData(self, src, maxTime):
65 # Time is none means that time parameter has to be ignored,
66 # we do not need cache for that
67 if maxTime is None:
68 return
69 self._generateInternalForm(src=src, maxTime=maxTime)
70 fitCache = self._data[src.item.ID]
71 # Final cache has been generated already, don't do anything
72 if 'finalDmg' in fitCache:
73 return
74 intCache = fitCache['internalDmg']
75 changesByTime = {}
76 for key, dmgMap in intCache.items():
77 for time in dmgMap:
78 changesByTime.setdefault(time, []).append(key)
79 # Here we convert cache to following format:
80 # {time: {key: damage done by key at this time}}
81 finalCache = fitCache['finalDmg'] = {}
82 timeDmgData = {}
83 for time in sorted(changesByTime):
84 timeDmgData = copy(timeDmgData)
85 for key in changesByTime[time]:
86 keyDmg = intCache[key][time]

Callers 1

__init__Method · 0.50

Calls

no outgoing calls

Tested by

no test coverage detected