MCPcopy
hub / github.com/pyfa-org/Pyfa / FitShieldRegenGraph

Class FitShieldRegenGraph

graphs/data/fitShieldRegen/graph.py:30–81  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

28
29
30class FitShieldRegenGraph(FitGraph):
31
32 def __init__(self, *args, **kwargs):
33 super().__init__(*args, **kwargs)
34 self.isEffective = gui.mainFrame.MainFrame.getInstance().statsPane.nameViewMap['resistancesViewFull'].showEffective
35
36 # UI stuff
37 internalName = 'shieldRegenGraph'
38 name = _t('Shield Regeneration')
39 inputs = [
40 Input(handle='time', unit='s', label=_t('Time'), iconID=1392, defaultValue=120, defaultRange=(0, 300), conditions=[
41 (('time', 's'), None)]),
42 Input(handle='shieldAmount', unit='%', label=_t('Shield amount'), iconID=1384, defaultValue=25, defaultRange=(0, 100), conditions=[
43 (('shieldAmount', 'EHP'), None),
44 (('shieldAmount', 'HP'), None),
45 (('shieldAmount', '%'), None)]),
46 Input(handle='shieldAmountT0', unit='%', label=_t('Starting shield amount'), iconID=1384, defaultValue=0, defaultRange=(0, 100), conditions=[
47 (('time', 's'), None)])]
48 srcExtraCols = ('ShieldAmount', 'ShieldTime')
49 usesHpEffectivity = True
50
51 @property
52 def xDefs(self):
53 return [
54 XDef(handle='time', unit='s', label=_t('Time'), mainInput=('time', 's')),
55 XDef(handle='shieldAmount', unit='EHP' if self.isEffective else 'HP', label=_t('Shield amount'), mainInput=('shieldAmount', '%')),
56 XDef(handle='shieldAmount', unit='%', label=_t('Shield amount'), mainInput=('shieldAmount', '%'))]
57
58 @property
59 def yDefs(self):
60 return [
61 YDef(handle='shieldAmount', unit='EHP' if self.isEffective else 'HP', label=_t('Shield amount')),
62 YDef(handle='shieldRegen', unit='EHP/s' if self.isEffective else 'HP/s', label=_t('Shield regen'))]
63
64 # Calculation stuff
65 _normalizers = {
66 ('shieldAmount', '%'): lambda v, src, tgt: v / 100 * src.item.ship.getModifiedItemAttr('shieldCapacity'),
67 ('shieldAmountT0', '%'): lambda v, src, tgt: None if v is None else v / 100 * src.item.ship.getModifiedItemAttr('shieldCapacity'),
68 # Needed only for "x mark" support, to convert EHP x into normalized value
69 ('shieldAmount', 'EHP'): lambda v, src, tgt: v / src.item.damagePattern.effectivify(src.item.ship, 1, 'shield')}
70 _limiters = {
71 'shieldAmount': lambda src, tgt: (0, src.item.ship.getModifiedItemAttr('shieldCapacity')),
72 'shieldAmountT0': lambda src, tgt: (0, src.item.ship.getModifiedItemAttr('shieldCapacity'))}
73 _getters = {
74 ('time', 'shieldAmount'): Time2ShieldAmountGetter,
75 ('time', 'shieldRegen'): Time2ShieldRegenGetter,
76 ('shieldAmount', 'shieldAmount'): ShieldAmount2ShieldAmountGetter,
77 ('shieldAmount', 'shieldRegen'): ShieldAmount2ShieldRegenGetter}
78 _denormalizers = {
79 ('shieldAmount', '%'): lambda v, src, tgt: v * 100 / src.item.ship.getModifiedItemAttr('shieldCapacity'),
80 ('shieldAmount', 'EHP'): lambda v, src, tgt: src.item.damagePattern.effectivify(src.item.ship, v, 'shield'),
81 ('shieldRegen', 'EHP/s'): lambda v, src, tgt: src.item.damagePattern.effectivify(src.item.ship, v, 'shield')}

Callers

nothing calls this directly

Calls 4

InputClass · 0.90
effectivifyMethod · 0.80
_tFunction · 0.50
getModifiedItemAttrMethod · 0.45

Tested by

no test coverage detected