Rename multiple entities to reflect that it's target profile rather than target resists
This commit is contained in:
@@ -72,7 +72,7 @@ def DBInMemory_test():
|
|||||||
# noinspection PyPep8
|
# noinspection PyPep8
|
||||||
#from eos.db.gamedata import alphaClones, attribute, category, effect, group, icon, item, marketGroup, metaData, metaGroup, queries, traits, unit
|
#from eos.db.gamedata import alphaClones, attribute, category, effect, group, icon, item, marketGroup, metaData, metaGroup, queries, traits, unit
|
||||||
# noinspection PyPep8
|
# noinspection PyPep8
|
||||||
#from eos.db.saveddata import booster, cargo, character, crest, damagePattern, databaseRepair, drone, fighter, fit, implant, implantSet, loadDefaultDatabaseValues, miscData, module, override, price, queries, skill, targetResists, user
|
#from eos.db.saveddata import booster, cargo, character, crest, damagePattern, databaseRepair, drone, fighter, fit, implant, implantSet, loadDefaultDatabaseValues, miscData, module, override, price, queries, skill, targetProfile, user
|
||||||
|
|
||||||
# If using in memory saveddata, you'll want to reflect it so the data structure is good.
|
# If using in memory saveddata, you'll want to reflect it so the data structure is good.
|
||||||
if saveddata_connectionstring == "sqlite:///:memory:":
|
if saveddata_connectionstring == "sqlite:///:memory:":
|
||||||
|
|||||||
@@ -81,7 +81,7 @@ sd_lock = threading.RLock()
|
|||||||
from eos.db.gamedata import alphaClones, attribute, category, effect, group, item, marketGroup, metaData, metaGroup, queries, traits, unit, dynamicAttributes
|
from eos.db.gamedata import alphaClones, attribute, category, effect, group, item, marketGroup, metaData, metaGroup, queries, traits, unit, dynamicAttributes
|
||||||
# noinspection PyPep8
|
# noinspection PyPep8
|
||||||
from eos.db.saveddata import booster, cargo, character, damagePattern, databaseRepair, drone, fighter, fit, implant, implantSet, loadDefaultDatabaseValues, \
|
from eos.db.saveddata import booster, cargo, character, damagePattern, databaseRepair, drone, fighter, fit, implant, implantSet, loadDefaultDatabaseValues, \
|
||||||
miscData, mutator, module, override, price, queries, skill, targetResists, user
|
miscData, mutator, module, override, price, queries, skill, targetProfile, user
|
||||||
|
|
||||||
# Import queries
|
# Import queries
|
||||||
# noinspection PyPep8
|
# noinspection PyPep8
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ __all__ = [
|
|||||||
"implant",
|
"implant",
|
||||||
"damagePattern",
|
"damagePattern",
|
||||||
"miscData",
|
"miscData",
|
||||||
"targetResists",
|
"targetProfile",
|
||||||
"override",
|
"override",
|
||||||
"implantSet",
|
"implantSet",
|
||||||
"loadDefaultDatabaseValues"
|
"loadDefaultDatabaseValues"
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ from eos.saveddata.fighter import Fighter
|
|||||||
from eos.saveddata.fit import Fit as es_Fit
|
from eos.saveddata.fit import Fit as es_Fit
|
||||||
from eos.saveddata.implant import Implant
|
from eos.saveddata.implant import Implant
|
||||||
from eos.saveddata.module import Module
|
from eos.saveddata.module import Module
|
||||||
from eos.saveddata.targetResists import TargetResists
|
from eos.saveddata.targetProfile import TargetProfile
|
||||||
from eos.saveddata.user import User
|
from eos.saveddata.user import User
|
||||||
|
|
||||||
|
|
||||||
@@ -232,7 +232,7 @@ mapper(es_Fit, fits_table,
|
|||||||
Character,
|
Character,
|
||||||
backref="fits"),
|
backref="fits"),
|
||||||
"_Fit__damagePattern": relation(DamagePattern),
|
"_Fit__damagePattern": relation(DamagePattern),
|
||||||
"_Fit__targetResists": relation(TargetResists),
|
"_Fit__targetProfile": relation(TargetProfile),
|
||||||
"projectedOnto": projectedFitSourceRel,
|
"projectedOnto": projectedFitSourceRel,
|
||||||
"victimOf": relationship(
|
"victimOf": relationship(
|
||||||
ProjectedFit,
|
ProjectedFit,
|
||||||
|
|||||||
@@ -19,7 +19,7 @@
|
|||||||
|
|
||||||
import eos.db
|
import eos.db
|
||||||
from eos.saveddata.damagePattern import DamagePattern as es_DamagePattern
|
from eos.saveddata.damagePattern import DamagePattern as es_DamagePattern
|
||||||
from eos.saveddata.targetResists import TargetResists as es_TargetResists
|
from eos.saveddata.targetProfile import TargetProfile as es_TargetProfile
|
||||||
|
|
||||||
|
|
||||||
class ImportError(Exception):
|
class ImportError(Exception):
|
||||||
@@ -188,9 +188,9 @@ class DefaultDatabaseValues:
|
|||||||
|
|
||||||
for targetResistProfileRow in targetResistProfileList:
|
for targetResistProfileRow in targetResistProfileList:
|
||||||
name, em, therm, kin, exp = targetResistProfileRow
|
name, em, therm, kin, exp = targetResistProfileRow
|
||||||
resistsProfile = eos.db.eos.db.getTargetResists(name)
|
resistsProfile = eos.db.eos.db.getTargetProfile(name)
|
||||||
if resistsProfile is None:
|
if resistsProfile is None:
|
||||||
resistsProfile = es_TargetResists(em, therm, kin, exp)
|
resistsProfile = es_TargetProfile(em, therm, kin, exp)
|
||||||
resistsProfile.name = name
|
resistsProfile.name = name
|
||||||
eos.db.save(resistsProfile)
|
eos.db.save(resistsProfile)
|
||||||
|
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ from eos.saveddata.price import Price
|
|||||||
from eos.saveddata.user import User
|
from eos.saveddata.user import User
|
||||||
from eos.saveddata.ssocharacter import SsoCharacter
|
from eos.saveddata.ssocharacter import SsoCharacter
|
||||||
from eos.saveddata.damagePattern import DamagePattern
|
from eos.saveddata.damagePattern import DamagePattern
|
||||||
from eos.saveddata.targetResists import TargetResists
|
from eos.saveddata.targetProfile import TargetProfile
|
||||||
from eos.saveddata.character import Character
|
from eos.saveddata.character import Character
|
||||||
from eos.saveddata.implantSet import ImplantSet
|
from eos.saveddata.implantSet import ImplantSet
|
||||||
from eos.saveddata.fit import Fit
|
from eos.saveddata.fit import Fit
|
||||||
@@ -366,16 +366,16 @@ def clearDamagePatterns():
|
|||||||
return deleted_rows
|
return deleted_rows
|
||||||
|
|
||||||
|
|
||||||
def getTargetResistsList(eager=None):
|
def getTargetProfileList(eager=None):
|
||||||
eager = processEager(eager)
|
eager = processEager(eager)
|
||||||
with sd_lock:
|
with sd_lock:
|
||||||
patterns = saveddata_session.query(TargetResists).options(*eager).all()
|
patterns = saveddata_session.query(TargetProfile).options(*eager).all()
|
||||||
return patterns
|
return patterns
|
||||||
|
|
||||||
|
|
||||||
def clearTargetResists():
|
def clearTargetProfiles():
|
||||||
with sd_lock:
|
with sd_lock:
|
||||||
deleted_rows = saveddata_session.query(TargetResists).delete()
|
deleted_rows = saveddata_session.query(TargetProfile).delete()
|
||||||
commit()
|
commit()
|
||||||
return deleted_rows
|
return deleted_rows
|
||||||
|
|
||||||
@@ -408,22 +408,22 @@ def getDamagePattern(lookfor, eager=None):
|
|||||||
return pattern
|
return pattern
|
||||||
|
|
||||||
|
|
||||||
@cachedQuery(TargetResists, 1, "lookfor")
|
@cachedQuery(TargetProfile, 1, "lookfor")
|
||||||
def getTargetResists(lookfor, eager=None):
|
def getTargetProfile(lookfor, eager=None):
|
||||||
if isinstance(lookfor, int):
|
if isinstance(lookfor, int):
|
||||||
if eager is None:
|
if eager is None:
|
||||||
with sd_lock:
|
with sd_lock:
|
||||||
pattern = saveddata_session.query(TargetResists).get(lookfor)
|
pattern = saveddata_session.query(TargetProfile).get(lookfor)
|
||||||
else:
|
else:
|
||||||
eager = processEager(eager)
|
eager = processEager(eager)
|
||||||
with sd_lock:
|
with sd_lock:
|
||||||
pattern = saveddata_session.query(TargetResists).options(*eager).filter(
|
pattern = saveddata_session.query(TargetProfile).options(*eager).filter(
|
||||||
TargetResists.ID == lookfor).first()
|
TargetProfile.ID == lookfor).first()
|
||||||
elif isinstance(lookfor, str):
|
elif isinstance(lookfor, str):
|
||||||
eager = processEager(eager)
|
eager = processEager(eager)
|
||||||
with sd_lock:
|
with sd_lock:
|
||||||
pattern = saveddata_session.query(TargetResists).options(*eager).filter(
|
pattern = saveddata_session.query(TargetProfile).options(*eager).filter(
|
||||||
TargetResists.name == lookfor).first()
|
TargetProfile.name == lookfor).first()
|
||||||
else:
|
else:
|
||||||
raise TypeError("Need integer or string as argument")
|
raise TypeError("Need integer or string as argument")
|
||||||
return pattern
|
return pattern
|
||||||
@@ -439,11 +439,11 @@ def getImplantSet(lookfor, eager=None):
|
|||||||
eager = processEager(eager)
|
eager = processEager(eager)
|
||||||
with sd_lock:
|
with sd_lock:
|
||||||
pattern = saveddata_session.query(ImplantSet).options(*eager).filter(
|
pattern = saveddata_session.query(ImplantSet).options(*eager).filter(
|
||||||
TargetResists.ID == lookfor).first()
|
TargetProfile.ID == lookfor).first()
|
||||||
elif isinstance(lookfor, str):
|
elif isinstance(lookfor, str):
|
||||||
eager = processEager(eager)
|
eager = processEager(eager)
|
||||||
with sd_lock:
|
with sd_lock:
|
||||||
pattern = saveddata_session.query(ImplantSet).options(*eager).filter(TargetResists.name == lookfor).first()
|
pattern = saveddata_session.query(ImplantSet).options(*eager).filter(TargetProfile.name == lookfor).first()
|
||||||
else:
|
else:
|
||||||
raise TypeError("Improper argument")
|
raise TypeError("Improper argument")
|
||||||
return pattern
|
return pattern
|
||||||
|
|||||||
42
eos/db/saveddata/targetProfile.py
Normal file
42
eos/db/saveddata/targetProfile.py
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
# ===============================================================================
|
||||||
|
# Copyright (C) 2014 Ryan Holmes
|
||||||
|
#
|
||||||
|
# This file is part of eos.
|
||||||
|
#
|
||||||
|
# eos is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 2 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# eos is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU Lesser General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU Lesser General Public License
|
||||||
|
# along with eos. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
# ===============================================================================
|
||||||
|
|
||||||
|
from sqlalchemy import Table, Column, Integer, Float, ForeignKey, String, DateTime
|
||||||
|
from sqlalchemy.orm import mapper
|
||||||
|
import datetime
|
||||||
|
|
||||||
|
from eos.db import saveddata_meta
|
||||||
|
from eos.saveddata.targetProfile import TargetProfile
|
||||||
|
|
||||||
|
targetProfiles_table = Table("targetResists", saveddata_meta,
|
||||||
|
Column("ID", Integer, primary_key=True),
|
||||||
|
Column("name", String),
|
||||||
|
Column("emAmount", Float),
|
||||||
|
Column("thermalAmount", Float),
|
||||||
|
Column("kineticAmount", Float),
|
||||||
|
Column("explosiveAmount", Float),
|
||||||
|
Column("maxVelocity", Float, nullable=True),
|
||||||
|
Column("signatureRadius", Float, nullable=True),
|
||||||
|
Column("radius", Float, nullable=True),
|
||||||
|
Column("ownerID", ForeignKey("users.ID"), nullable=True),
|
||||||
|
Column("created", DateTime, nullable=True, default=datetime.datetime.now),
|
||||||
|
Column("modified", DateTime, nullable=True, onupdate=datetime.datetime.now)
|
||||||
|
)
|
||||||
|
|
||||||
|
mapper(TargetProfile, targetProfiles_table)
|
||||||
@@ -1,42 +0,0 @@
|
|||||||
# ===============================================================================
|
|
||||||
# Copyright (C) 2014 Ryan Holmes
|
|
||||||
#
|
|
||||||
# This file is part of eos.
|
|
||||||
#
|
|
||||||
# eos is free software: you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU Lesser General Public License as published by
|
|
||||||
# the Free Software Foundation, either version 2 of the License, or
|
|
||||||
# (at your option) any later version.
|
|
||||||
#
|
|
||||||
# eos is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU Lesser General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU Lesser General Public License
|
|
||||||
# along with eos. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
# ===============================================================================
|
|
||||||
|
|
||||||
from sqlalchemy import Table, Column, Integer, Float, ForeignKey, String, DateTime
|
|
||||||
from sqlalchemy.orm import mapper
|
|
||||||
import datetime
|
|
||||||
|
|
||||||
from eos.db import saveddata_meta
|
|
||||||
from eos.saveddata.targetResists import TargetResists
|
|
||||||
|
|
||||||
targetResists_table = Table("targetResists", saveddata_meta,
|
|
||||||
Column("ID", Integer, primary_key=True),
|
|
||||||
Column("name", String),
|
|
||||||
Column("emAmount", Float),
|
|
||||||
Column("thermalAmount", Float),
|
|
||||||
Column("kineticAmount", Float),
|
|
||||||
Column("explosiveAmount", Float),
|
|
||||||
Column("maxVelocity", Float, nullable=True),
|
|
||||||
Column("signatureRadius", Float, nullable=True),
|
|
||||||
Column("radius", Float, nullable=True),
|
|
||||||
Column("ownerID", ForeignKey("users.ID"), nullable=True),
|
|
||||||
Column("created", DateTime, nullable=True, default=datetime.datetime.now),
|
|
||||||
Column("modified", DateTime, nullable=True, onupdate=datetime.datetime.now)
|
|
||||||
)
|
|
||||||
|
|
||||||
mapper(TargetResists, targetResists_table)
|
|
||||||
@@ -138,7 +138,7 @@ class Drone(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut):
|
|||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def getVolleyParameters(self, targetResists=None):
|
def getVolleyParameters(self, targetProfile=None):
|
||||||
if not self.dealsDamage or self.amountActive <= 0:
|
if not self.dealsDamage or self.amountActive <= 0:
|
||||||
return {0: DmgTypes(0, 0, 0, 0)}
|
return {0: DmgTypes(0, 0, 0, 0)}
|
||||||
if self.__baseVolley is None:
|
if self.__baseVolley is None:
|
||||||
@@ -150,17 +150,17 @@ class Drone(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut):
|
|||||||
kinetic=(dmgGetter("kineticDamage", 0)) * dmgMult,
|
kinetic=(dmgGetter("kineticDamage", 0)) * dmgMult,
|
||||||
explosive=(dmgGetter("explosiveDamage", 0)) * dmgMult)
|
explosive=(dmgGetter("explosiveDamage", 0)) * dmgMult)
|
||||||
volley = DmgTypes(
|
volley = DmgTypes(
|
||||||
em=self.__baseVolley.em * (1 - getattr(targetResists, "emAmount", 0)),
|
em=self.__baseVolley.em * (1 - getattr(targetProfile, "emAmount", 0)),
|
||||||
thermal=self.__baseVolley.thermal * (1 - getattr(targetResists, "thermalAmount", 0)),
|
thermal=self.__baseVolley.thermal * (1 - getattr(targetProfile, "thermalAmount", 0)),
|
||||||
kinetic=self.__baseVolley.kinetic * (1 - getattr(targetResists, "kineticAmount", 0)),
|
kinetic=self.__baseVolley.kinetic * (1 - getattr(targetProfile, "kineticAmount", 0)),
|
||||||
explosive=self.__baseVolley.explosive * (1 - getattr(targetResists, "explosiveAmount", 0)))
|
explosive=self.__baseVolley.explosive * (1 - getattr(targetProfile, "explosiveAmount", 0)))
|
||||||
return {0: volley}
|
return {0: volley}
|
||||||
|
|
||||||
def getVolley(self, targetResists=None):
|
def getVolley(self, targetProfile=None):
|
||||||
return self.getVolleyParameters(targetResists=targetResists)[0]
|
return self.getVolleyParameters(targetProfile=targetProfile)[0]
|
||||||
|
|
||||||
def getDps(self, targetResists=None):
|
def getDps(self, targetProfile=None):
|
||||||
volley = self.getVolley(targetResists=targetResists)
|
volley = self.getVolley(targetProfile=targetProfile)
|
||||||
if not volley:
|
if not volley:
|
||||||
return DmgTypes(0, 0, 0, 0)
|
return DmgTypes(0, 0, 0, 0)
|
||||||
cycleParams = self.getCycleParameters()
|
cycleParams = self.getCycleParameters()
|
||||||
|
|||||||
@@ -183,7 +183,7 @@ class Fighter(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut):
|
|||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def getVolleyParametersPerEffect(self, targetResists=None):
|
def getVolleyParametersPerEffect(self, targetProfile=None):
|
||||||
if not self.active or self.amountActive <= 0:
|
if not self.active or self.amountActive <= 0:
|
||||||
return {}
|
return {}
|
||||||
if self.__baseVolley is None:
|
if self.__baseVolley is None:
|
||||||
@@ -196,21 +196,21 @@ class Fighter(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut):
|
|||||||
adjustedVolley[effectID] = {}
|
adjustedVolley[effectID] = {}
|
||||||
for volleyTime, volleyValue in effectData.items():
|
for volleyTime, volleyValue in effectData.items():
|
||||||
adjustedVolley[effectID][volleyTime] = DmgTypes(
|
adjustedVolley[effectID][volleyTime] = DmgTypes(
|
||||||
em=volleyValue.em * (1 - getattr(targetResists, "emAmount", 0)),
|
em=volleyValue.em * (1 - getattr(targetProfile, "emAmount", 0)),
|
||||||
thermal=volleyValue.thermal * (1 - getattr(targetResists, "thermalAmount", 0)),
|
thermal=volleyValue.thermal * (1 - getattr(targetProfile, "thermalAmount", 0)),
|
||||||
kinetic=volleyValue.kinetic * (1 - getattr(targetResists, "kineticAmount", 0)),
|
kinetic=volleyValue.kinetic * (1 - getattr(targetProfile, "kineticAmount", 0)),
|
||||||
explosive=volleyValue.explosive * (1 - getattr(targetResists, "explosiveAmount", 0)))
|
explosive=volleyValue.explosive * (1 - getattr(targetProfile, "explosiveAmount", 0)))
|
||||||
return adjustedVolley
|
return adjustedVolley
|
||||||
|
|
||||||
def getVolleyPerEffect(self, targetResists=None):
|
def getVolleyPerEffect(self, targetProfile=None):
|
||||||
volleyParams = self.getVolleyParametersPerEffect(targetResists=targetResists)
|
volleyParams = self.getVolleyParametersPerEffect(targetProfile=targetProfile)
|
||||||
volleyMap = {}
|
volleyMap = {}
|
||||||
for effectID, volleyData in volleyParams.items():
|
for effectID, volleyData in volleyParams.items():
|
||||||
volleyMap[effectID] = volleyData[0]
|
volleyMap[effectID] = volleyData[0]
|
||||||
return volleyMap
|
return volleyMap
|
||||||
|
|
||||||
def getVolley(self, targetResists=None):
|
def getVolley(self, targetProfile=None):
|
||||||
volleyParams = self.getVolleyParametersPerEffect(targetResists=targetResists)
|
volleyParams = self.getVolleyParametersPerEffect(targetProfile=targetProfile)
|
||||||
em = 0
|
em = 0
|
||||||
therm = 0
|
therm = 0
|
||||||
kin = 0
|
kin = 0
|
||||||
@@ -222,30 +222,30 @@ class Fighter(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut):
|
|||||||
exp += volleyData[0].explosive
|
exp += volleyData[0].explosive
|
||||||
return DmgTypes(em, therm, kin, exp)
|
return DmgTypes(em, therm, kin, exp)
|
||||||
|
|
||||||
def getDps(self, targetResists=None):
|
def getDps(self, targetProfile=None):
|
||||||
em = 0
|
em = 0
|
||||||
thermal = 0
|
thermal = 0
|
||||||
kinetic = 0
|
kinetic = 0
|
||||||
explosive = 0
|
explosive = 0
|
||||||
for dps in self.getDpsPerEffect(targetResists=targetResists).values():
|
for dps in self.getDpsPerEffect(targetProfile=targetProfile).values():
|
||||||
em += dps.em
|
em += dps.em
|
||||||
thermal += dps.thermal
|
thermal += dps.thermal
|
||||||
kinetic += dps.kinetic
|
kinetic += dps.kinetic
|
||||||
explosive += dps.explosive
|
explosive += dps.explosive
|
||||||
return DmgTypes(em=em, thermal=thermal, kinetic=kinetic, explosive=explosive)
|
return DmgTypes(em=em, thermal=thermal, kinetic=kinetic, explosive=explosive)
|
||||||
|
|
||||||
def getDpsPerEffect(self, targetResists=None):
|
def getDpsPerEffect(self, targetProfile=None):
|
||||||
if not self.active or self.amountActive <= 0:
|
if not self.active or self.amountActive <= 0:
|
||||||
return {}
|
return {}
|
||||||
cycleParams = self.getCycleParametersPerEffectOptimizedDps(targetResists=targetResists)
|
cycleParams = self.getCycleParametersPerEffectOptimizedDps(targetProfile=targetProfile)
|
||||||
dpsMap = {}
|
dpsMap = {}
|
||||||
for ability in self.abilities:
|
for ability in self.abilities:
|
||||||
if ability.effectID in cycleParams:
|
if ability.effectID in cycleParams:
|
||||||
cycleTime = cycleParams[ability.effectID].averageTime
|
cycleTime = cycleParams[ability.effectID].averageTime
|
||||||
dpsMap[ability.effectID] = ability.getDps(targetResists=targetResists, cycleTimeOverride=cycleTime)
|
dpsMap[ability.effectID] = ability.getDps(targetProfile=targetProfile, cycleTimeOverride=cycleTime)
|
||||||
return dpsMap
|
return dpsMap
|
||||||
|
|
||||||
def getCycleParametersPerEffectOptimizedDps(self, targetResists=None, reloadOverride=None):
|
def getCycleParametersPerEffectOptimizedDps(self, targetProfile=None, reloadOverride=None):
|
||||||
cycleParamsInfinite = self.getCycleParametersPerEffectInfinite()
|
cycleParamsInfinite = self.getCycleParametersPerEffectInfinite()
|
||||||
cycleParamsReload = self.getCycleParametersPerEffect(reloadOverride=reloadOverride)
|
cycleParamsReload = self.getCycleParametersPerEffect(reloadOverride=reloadOverride)
|
||||||
dpsMapOnlyInfinite = {}
|
dpsMapOnlyInfinite = {}
|
||||||
@@ -254,10 +254,10 @@ class Fighter(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut):
|
|||||||
for ability in self.abilities:
|
for ability in self.abilities:
|
||||||
if ability.effectID in cycleParamsInfinite:
|
if ability.effectID in cycleParamsInfinite:
|
||||||
cycleTime = cycleParamsInfinite[ability.effectID].averageTime
|
cycleTime = cycleParamsInfinite[ability.effectID].averageTime
|
||||||
dpsMapOnlyInfinite[ability.effectID] = ability.getDps(targetResists=targetResists, cycleTimeOverride=cycleTime)
|
dpsMapOnlyInfinite[ability.effectID] = ability.getDps(targetProfile=targetProfile, cycleTimeOverride=cycleTime)
|
||||||
if ability.effectID in cycleParamsReload:
|
if ability.effectID in cycleParamsReload:
|
||||||
cycleTime = cycleParamsReload[ability.effectID].averageTime
|
cycleTime = cycleParamsReload[ability.effectID].averageTime
|
||||||
dpsMapAllWithReloads[ability.effectID] = ability.getDps(targetResists=targetResists, cycleTimeOverride=cycleTime)
|
dpsMapAllWithReloads[ability.effectID] = ability.getDps(targetProfile=targetProfile, cycleTimeOverride=cycleTime)
|
||||||
totalOnlyInfinite = sum(i.total for i in dpsMapOnlyInfinite.values())
|
totalOnlyInfinite = sum(i.total for i in dpsMapOnlyInfinite.values())
|
||||||
totalAllWithReloads = sum(i.total for i in dpsMapAllWithReloads.values())
|
totalAllWithReloads = sum(i.total for i in dpsMapAllWithReloads.values())
|
||||||
return cycleParamsInfinite if totalOnlyInfinite >= totalAllWithReloads else cycleParamsReload
|
return cycleParamsInfinite if totalOnlyInfinite >= totalAllWithReloads else cycleParamsReload
|
||||||
|
|||||||
@@ -114,7 +114,7 @@ class FighterAbility:
|
|||||||
speed = self.fighter.getModifiedItemAttr("{}Duration".format(self.attrPrefix))
|
speed = self.fighter.getModifiedItemAttr("{}Duration".format(self.attrPrefix))
|
||||||
return speed
|
return speed
|
||||||
|
|
||||||
def getVolley(self, targetResists=None):
|
def getVolley(self, targetProfile=None):
|
||||||
if not self.dealsDamage or not self.active:
|
if not self.dealsDamage or not self.active:
|
||||||
return DmgTypes(0, 0, 0, 0)
|
return DmgTypes(0, 0, 0, 0)
|
||||||
if self.attrPrefix == "fighterAbilityLaunchBomb":
|
if self.attrPrefix == "fighterAbilityLaunchBomb":
|
||||||
@@ -129,14 +129,14 @@ class FighterAbility:
|
|||||||
exp = self.fighter.getModifiedItemAttr("{}DamageExp".format(self.attrPrefix), 0)
|
exp = self.fighter.getModifiedItemAttr("{}DamageExp".format(self.attrPrefix), 0)
|
||||||
dmgMult = self.fighter.amountActive * self.fighter.getModifiedItemAttr("{}DamageMultiplier".format(self.attrPrefix), 1)
|
dmgMult = self.fighter.amountActive * self.fighter.getModifiedItemAttr("{}DamageMultiplier".format(self.attrPrefix), 1)
|
||||||
volley = DmgTypes(
|
volley = DmgTypes(
|
||||||
em=em * dmgMult * (1 - getattr(targetResists, "emAmount", 0)),
|
em=em * dmgMult * (1 - getattr(targetProfile, "emAmount", 0)),
|
||||||
thermal=therm * dmgMult * (1 - getattr(targetResists, "thermalAmount", 0)),
|
thermal=therm * dmgMult * (1 - getattr(targetProfile, "thermalAmount", 0)),
|
||||||
kinetic=kin * dmgMult * (1 - getattr(targetResists, "kineticAmount", 0)),
|
kinetic=kin * dmgMult * (1 - getattr(targetProfile, "kineticAmount", 0)),
|
||||||
explosive=exp * dmgMult * (1 - getattr(targetResists, "explosiveAmount", 0)))
|
explosive=exp * dmgMult * (1 - getattr(targetProfile, "explosiveAmount", 0)))
|
||||||
return volley
|
return volley
|
||||||
|
|
||||||
def getDps(self, targetResists=None, cycleTimeOverride=None):
|
def getDps(self, targetProfile=None, cycleTimeOverride=None):
|
||||||
volley = self.getVolley(targetResists=targetResists)
|
volley = self.getVolley(targetProfile=targetProfile)
|
||||||
if not volley:
|
if not volley:
|
||||||
return DmgTypes(0, 0, 0, 0)
|
return DmgTypes(0, 0, 0, 0)
|
||||||
cycleTime = cycleTimeOverride if cycleTimeOverride is not None else self.cycleTime
|
cycleTime = cycleTimeOverride if cycleTimeOverride is not None else self.cycleTime
|
||||||
|
|||||||
@@ -149,12 +149,12 @@ class Fit:
|
|||||||
self.__capRecharge = None
|
self.__capRecharge = None
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def targetResists(self):
|
def targetProfile(self):
|
||||||
return self.__targetResists
|
return self.__targetProfile
|
||||||
|
|
||||||
@targetResists.setter
|
@targetProfile.setter
|
||||||
def targetResists(self, targetResists):
|
def targetProfile(self, targetProfile):
|
||||||
self.__targetResists = targetResists
|
self.__targetProfile = targetProfile
|
||||||
self.__weaponDpsMap = {}
|
self.__weaponDpsMap = {}
|
||||||
self.__weaponVolleyMap = {}
|
self.__weaponVolleyMap = {}
|
||||||
self.__droneDps = None
|
self.__droneDps = None
|
||||||
@@ -1497,8 +1497,8 @@ class Fit:
|
|||||||
weaponDps = DmgTypes(0, 0, 0, 0)
|
weaponDps = DmgTypes(0, 0, 0, 0)
|
||||||
|
|
||||||
for mod in self.modules:
|
for mod in self.modules:
|
||||||
weaponVolley += mod.getVolley(spoolOptions=spoolOptions, targetResists=self.targetResists)
|
weaponVolley += mod.getVolley(spoolOptions=spoolOptions, targetProfile=self.targetProfile)
|
||||||
weaponDps += mod.getDps(spoolOptions=spoolOptions, targetResists=self.targetResists)
|
weaponDps += mod.getDps(spoolOptions=spoolOptions, targetProfile=self.targetProfile)
|
||||||
|
|
||||||
self.__weaponVolleyMap[spoolOptions] = weaponVolley
|
self.__weaponVolleyMap[spoolOptions] = weaponVolley
|
||||||
self.__weaponDpsMap[spoolOptions] = weaponDps
|
self.__weaponDpsMap[spoolOptions] = weaponDps
|
||||||
@@ -1508,12 +1508,12 @@ class Fit:
|
|||||||
droneDps = DmgTypes(0, 0, 0, 0)
|
droneDps = DmgTypes(0, 0, 0, 0)
|
||||||
|
|
||||||
for drone in self.drones:
|
for drone in self.drones:
|
||||||
droneVolley += drone.getVolley(targetResists=self.targetResists)
|
droneVolley += drone.getVolley(targetProfile=self.targetProfile)
|
||||||
droneDps += drone.getDps(targetResists=self.targetResists)
|
droneDps += drone.getDps(targetProfile=self.targetProfile)
|
||||||
|
|
||||||
for fighter in self.fighters:
|
for fighter in self.fighters:
|
||||||
droneVolley += fighter.getVolley(targetResists=self.targetResists)
|
droneVolley += fighter.getVolley(targetProfile=self.targetProfile)
|
||||||
droneDps += fighter.getDps(targetResists=self.targetResists)
|
droneDps += fighter.getDps(targetProfile=self.targetProfile)
|
||||||
|
|
||||||
self.__droneDps = droneDps
|
self.__droneDps = droneDps
|
||||||
self.__droneVolley = droneVolley
|
self.__droneVolley = droneVolley
|
||||||
@@ -1557,7 +1557,7 @@ class Fit:
|
|||||||
fitCopy.mode = deepcopy(self.mode)
|
fitCopy.mode = deepcopy(self.mode)
|
||||||
fitCopy.name = "%s copy" % self.name
|
fitCopy.name = "%s copy" % self.name
|
||||||
fitCopy.damagePattern = self.damagePattern
|
fitCopy.damagePattern = self.damagePattern
|
||||||
fitCopy.targetResists = self.targetResists
|
fitCopy.targetProfile = self.targetProfile
|
||||||
fitCopy.implantLocation = self.implantLocation
|
fitCopy.implantLocation = self.implantLocation
|
||||||
fitCopy.systemSecurity = self.systemSecurity
|
fitCopy.systemSecurity = self.systemSecurity
|
||||||
fitCopy.notes = self.notes
|
fitCopy.notes = self.notes
|
||||||
|
|||||||
@@ -421,7 +421,7 @@ class Module(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut):
|
|||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def getVolleyParameters(self, spoolOptions=None, targetResists=None, ignoreState=False):
|
def getVolleyParameters(self, spoolOptions=None, targetProfile=None, ignoreState=False):
|
||||||
if self.isEmpty or (self.state < FittingModuleState.ACTIVE and not ignoreState):
|
if self.isEmpty or (self.state < FittingModuleState.ACTIVE and not ignoreState):
|
||||||
return {0: DmgTypes(0, 0, 0, 0)}
|
return {0: DmgTypes(0, 0, 0, 0)}
|
||||||
if self.__baseVolley is None:
|
if self.__baseVolley is None:
|
||||||
@@ -451,24 +451,24 @@ class Module(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut):
|
|||||||
adjustedVolley = {}
|
adjustedVolley = {}
|
||||||
for volleyTime, volleyValue in self.__baseVolley.items():
|
for volleyTime, volleyValue in self.__baseVolley.items():
|
||||||
adjustedVolley[volleyTime] = DmgTypes(
|
adjustedVolley[volleyTime] = DmgTypes(
|
||||||
em=volleyValue.em * spoolMultiplier * (1 - getattr(targetResists, "emAmount", 0)),
|
em=volleyValue.em * spoolMultiplier * (1 - getattr(targetProfile, "emAmount", 0)),
|
||||||
thermal=volleyValue.thermal * spoolMultiplier * (1 - getattr(targetResists, "thermalAmount", 0)),
|
thermal=volleyValue.thermal * spoolMultiplier * (1 - getattr(targetProfile, "thermalAmount", 0)),
|
||||||
kinetic=volleyValue.kinetic * spoolMultiplier * (1 - getattr(targetResists, "kineticAmount", 0)),
|
kinetic=volleyValue.kinetic * spoolMultiplier * (1 - getattr(targetProfile, "kineticAmount", 0)),
|
||||||
explosive=volleyValue.explosive * spoolMultiplier * (1 - getattr(targetResists, "explosiveAmount", 0)))
|
explosive=volleyValue.explosive * spoolMultiplier * (1 - getattr(targetProfile, "explosiveAmount", 0)))
|
||||||
return adjustedVolley
|
return adjustedVolley
|
||||||
|
|
||||||
def getVolley(self, spoolOptions=None, targetResists=None, ignoreState=False):
|
def getVolley(self, spoolOptions=None, targetProfile=None, ignoreState=False):
|
||||||
volleyParams = self.getVolleyParameters(spoolOptions=spoolOptions, targetResists=targetResists, ignoreState=ignoreState)
|
volleyParams = self.getVolleyParameters(spoolOptions=spoolOptions, targetProfile=targetProfile, ignoreState=ignoreState)
|
||||||
if len(volleyParams) == 0:
|
if len(volleyParams) == 0:
|
||||||
return DmgTypes(0, 0, 0, 0)
|
return DmgTypes(0, 0, 0, 0)
|
||||||
return volleyParams[min(volleyParams)]
|
return volleyParams[min(volleyParams)]
|
||||||
|
|
||||||
def getDps(self, spoolOptions=None, targetResists=None, ignoreState=False):
|
def getDps(self, spoolOptions=None, targetProfile=None, ignoreState=False):
|
||||||
dmgDuringCycle = DmgTypes(0, 0, 0, 0)
|
dmgDuringCycle = DmgTypes(0, 0, 0, 0)
|
||||||
cycleParams = self.getCycleParameters()
|
cycleParams = self.getCycleParameters()
|
||||||
if cycleParams is None:
|
if cycleParams is None:
|
||||||
return dmgDuringCycle
|
return dmgDuringCycle
|
||||||
volleyParams = self.getVolleyParameters(spoolOptions=spoolOptions, targetResists=targetResists, ignoreState=ignoreState)
|
volleyParams = self.getVolleyParameters(spoolOptions=spoolOptions, targetProfile=targetProfile, ignoreState=ignoreState)
|
||||||
avgCycleTime = cycleParams.averageTime
|
avgCycleTime = cycleParams.averageTime
|
||||||
if len(volleyParams) == 0 or avgCycleTime == 0:
|
if len(volleyParams) == 0 or avgCycleTime == 0:
|
||||||
return dmgDuringCycle
|
return dmgDuringCycle
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ import eos.db
|
|||||||
pyfalog = Logger(__name__)
|
pyfalog = Logger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class TargetResists:
|
class TargetProfile:
|
||||||
# also determined import/export order - VERY IMPORTANT
|
# also determined import/export order - VERY IMPORTANT
|
||||||
DAMAGE_TYPES = ("em", "thermal", "kinetic", "explosive")
|
DAMAGE_TYPES = ("em", "thermal", "kinetic", "explosive")
|
||||||
|
|
||||||
@@ -49,7 +49,7 @@ class TargetResists:
|
|||||||
# When we import damage profiles, we create new ones and update old ones. To do this, get a list of current
|
# When we import damage profiles, we create new ones and update old ones. To do this, get a list of current
|
||||||
# patterns to allow lookup
|
# patterns to allow lookup
|
||||||
lookup = {}
|
lookup = {}
|
||||||
current = eos.db.getTargetResistsList()
|
current = eos.db.getTargetProfileList()
|
||||||
for pattern in current:
|
for pattern in current:
|
||||||
lookup[pattern.name] = pattern
|
lookup[pattern.name] = pattern
|
||||||
|
|
||||||
@@ -64,7 +64,7 @@ class TargetResists:
|
|||||||
pyfalog.warning("Data isn't in correct format, continue to next line.")
|
pyfalog.warning("Data isn't in correct format, continue to next line.")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if type != "TargetResists":
|
if type not in ("TargetProfile", "TargetResists"):
|
||||||
continue
|
continue
|
||||||
|
|
||||||
numPatterns += 1
|
numPatterns += 1
|
||||||
@@ -86,7 +86,7 @@ class TargetResists:
|
|||||||
pattern.update(**fields)
|
pattern.update(**fields)
|
||||||
eos.db.save(pattern)
|
eos.db.save(pattern)
|
||||||
else:
|
else:
|
||||||
pattern = TargetResists(**fields)
|
pattern = TargetProfile(**fields)
|
||||||
pattern.name = name.strip()
|
pattern.name = name.strip()
|
||||||
eos.db.save(pattern)
|
eos.db.save(pattern)
|
||||||
patterns.append(pattern)
|
patterns.append(pattern)
|
||||||
@@ -95,13 +95,13 @@ class TargetResists:
|
|||||||
|
|
||||||
return patterns, numPatterns
|
return patterns, numPatterns
|
||||||
|
|
||||||
EXPORT_FORMAT = "TargetResists = %s,%.1f,%.1f,%.1f,%.1f\n"
|
EXPORT_FORMAT = "TargetProfile = %s,%.1f,%.1f,%.1f,%.1f\n"
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def exportPatterns(cls, *patterns):
|
def exportPatterns(cls, *patterns):
|
||||||
out = "# Exported from pyfa\n#\n"
|
out = "# Exported from pyfa\n#\n"
|
||||||
out += "# Values are in following format:\n"
|
out += "# Values are in following format:\n"
|
||||||
out += "# TargetResists = [name],[EM %],[Thermal %],[Kinetic %],[Explosive %]\n\n"
|
out += "# TargetProfile = [name],[EM %],[Thermal %],[Kinetic %],[Explosive %]\n\n"
|
||||||
for dp in patterns:
|
for dp in patterns:
|
||||||
out += cls.EXPORT_FORMAT % (
|
out += cls.EXPORT_FORMAT % (
|
||||||
dp.name,
|
dp.name,
|
||||||
@@ -114,7 +114,7 @@ class TargetResists:
|
|||||||
return out.strip()
|
return out.strip()
|
||||||
|
|
||||||
def __deepcopy__(self, memo):
|
def __deepcopy__(self, memo):
|
||||||
p = TargetResists(
|
p = TargetProfile(
|
||||||
self.emAmount, self.thermalAmount, self.kineticAmount, self.explosiveAmount,
|
self.emAmount, self.thermalAmount, self.kineticAmount, self.explosiveAmount,
|
||||||
self.maxVelocity, self.signatureRadius, self.radius)
|
self.maxVelocity, self.signatureRadius, self.radius)
|
||||||
p.name = "%s copy" % self.name
|
p.name = "%s copy" % self.name
|
||||||
@@ -39,7 +39,7 @@ from gui.builtinContextMenus import ( # noqa: E402,F401
|
|||||||
damagePatternChange,
|
damagePatternChange,
|
||||||
# Firepower panel
|
# Firepower panel
|
||||||
factorReload,
|
factorReload,
|
||||||
targetResists,
|
targetProfile,
|
||||||
# Graph extra options
|
# Graph extra options
|
||||||
graphDmgIgnoreResists,
|
graphDmgIgnoreResists,
|
||||||
graphDmgApplyProjected,
|
graphDmgApplyProjected,
|
||||||
|
|||||||
@@ -8,10 +8,10 @@ import gui.mainFrame
|
|||||||
from gui.bitmap_loader import BitmapLoader
|
from gui.bitmap_loader import BitmapLoader
|
||||||
from gui.contextMenu import ContextMenuUnconditional
|
from gui.contextMenu import ContextMenuUnconditional
|
||||||
from service.fit import Fit
|
from service.fit import Fit
|
||||||
from service.targetResists import TargetResists as svc_TargetResists
|
from service.targetProfile import TargetProfile as svc_TargetProfile
|
||||||
|
|
||||||
|
|
||||||
class TargetResists(ContextMenuUnconditional):
|
class TargetProfile(ContextMenuUnconditional):
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.mainFrame = gui.mainFrame.MainFrame.getInstance()
|
self.mainFrame = gui.mainFrame.MainFrame.getInstance()
|
||||||
@@ -20,13 +20,14 @@ class TargetResists(ContextMenuUnconditional):
|
|||||||
if self.mainFrame.getActiveFit() is None or srcContext != "firepowerViewFull":
|
if self.mainFrame.getActiveFit() is None or srcContext != "firepowerViewFull":
|
||||||
return False
|
return False
|
||||||
|
|
||||||
sTR = svc_TargetResists.getInstance()
|
sTR = svc_TargetProfile.getInstance()
|
||||||
self.patterns = sTR.getTargetResistsList()
|
self.patterns = sTR.getTargetProfileList()
|
||||||
self.patterns.sort(key=lambda p: (p.name in ["None"], p.name))
|
self.patterns.sort(key=lambda p: (p.name in ["None"], p.name))
|
||||||
|
|
||||||
return len(self.patterns) > 0
|
return len(self.patterns) > 0
|
||||||
|
|
||||||
def getText(self, itmContext):
|
def getText(self, itmContext):
|
||||||
|
# We take into consideration just target resists, so call menu item accordingly
|
||||||
return "Target Resists"
|
return "Target Resists"
|
||||||
|
|
||||||
def handleResistSwitch(self, event):
|
def handleResistSwitch(self, event):
|
||||||
@@ -37,7 +38,7 @@ class TargetResists(ContextMenuUnconditional):
|
|||||||
|
|
||||||
sFit = Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
fitID = self.mainFrame.getActiveFit()
|
fitID = self.mainFrame.getActiveFit()
|
||||||
sFit.setTargetResists(fitID, pattern)
|
sFit.setTargetProfile(fitID, pattern)
|
||||||
wx.PostEvent(self.mainFrame, GE.FitChanged(fitIDs=(fitID,)))
|
wx.PostEvent(self.mainFrame, GE.FitChanged(fitIDs=(fitID,)))
|
||||||
|
|
||||||
def addPattern(self, rootMenu, pattern):
|
def addPattern(self, rootMenu, pattern):
|
||||||
@@ -55,7 +56,7 @@ class TargetResists(ContextMenuUnconditional):
|
|||||||
sFit = Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
fitID = self.mainFrame.getActiveFit()
|
fitID = self.mainFrame.getActiveFit()
|
||||||
f = sFit.getFit(fitID)
|
f = sFit.getFit(fitID)
|
||||||
tr = f.targetResists
|
tr = f.targetProfile
|
||||||
|
|
||||||
if tr == pattern:
|
if tr == pattern:
|
||||||
bitmap = BitmapLoader.getBitmap("state_active_small", "gui")
|
bitmap = BitmapLoader.getBitmap("state_active_small", "gui")
|
||||||
@@ -108,4 +109,4 @@ class TargetResists(ContextMenuUnconditional):
|
|||||||
return sub
|
return sub
|
||||||
|
|
||||||
|
|
||||||
TargetResists.register()
|
TargetProfile.register()
|
||||||
@@ -2,7 +2,7 @@ import wx
|
|||||||
|
|
||||||
import config
|
import config
|
||||||
from eos.db.saveddata.loadDefaultDatabaseValues import DefaultDatabaseValues
|
from eos.db.saveddata.loadDefaultDatabaseValues import DefaultDatabaseValues
|
||||||
from eos.db.saveddata.queries import clearPrices, clearDamagePatterns, clearTargetResists
|
from eos.db.saveddata.queries import clearPrices, clearDamagePatterns, clearTargetProfiles
|
||||||
from gui.bitmap_loader import BitmapLoader
|
from gui.bitmap_loader import BitmapLoader
|
||||||
from gui.preferenceView import PreferenceView
|
from gui.preferenceView import PreferenceView
|
||||||
from gui.utils import helpers_wxPython as wxHelpers
|
from gui.utils import helpers_wxPython as wxHelpers
|
||||||
@@ -83,9 +83,9 @@ class PFGeneralPref(PreferenceView):
|
|||||||
btnSizer.Add(self.btnDeleteDamagePatterns, 0, wx.ALL, 5)
|
btnSizer.Add(self.btnDeleteDamagePatterns, 0, wx.ALL, 5)
|
||||||
self.btnDeleteDamagePatterns.Bind(wx.EVT_BUTTON, self.DeleteDamagePatterns)
|
self.btnDeleteDamagePatterns.Bind(wx.EVT_BUTTON, self.DeleteDamagePatterns)
|
||||||
|
|
||||||
self.btnDeleteTargetResists = wx.Button(panel, wx.ID_ANY, "Delete All Target Resist Profiles", wx.DefaultPosition, wx.DefaultSize, 0)
|
self.btnDeleteTargetProfiles = wx.Button(panel, wx.ID_ANY, "Delete All Target Resist Profiles", wx.DefaultPosition, wx.DefaultSize, 0)
|
||||||
btnSizer.Add(self.btnDeleteTargetResists, 0, wx.ALL, 5)
|
btnSizer.Add(self.btnDeleteTargetProfiles, 0, wx.ALL, 5)
|
||||||
self.btnDeleteTargetResists.Bind(wx.EVT_BUTTON, self.DeleteTargetResists)
|
self.btnDeleteTargetProfiles.Bind(wx.EVT_BUTTON, self.DeleteTargetProfiles)
|
||||||
|
|
||||||
self.btnPrices = wx.Button(panel, wx.ID_ANY, "Delete All Prices", wx.DefaultPosition, wx.DefaultSize, 0)
|
self.btnPrices = wx.Button(panel, wx.ID_ANY, "Delete All Prices", wx.DefaultPosition, wx.DefaultSize, 0)
|
||||||
btnSizer.Add(self.btnPrices, 0, wx.ALL, 5)
|
btnSizer.Add(self.btnPrices, 0, wx.ALL, 5)
|
||||||
@@ -110,10 +110,10 @@ class PFGeneralPref(PreferenceView):
|
|||||||
if wxHelpers.YesNoDialog(question, "Confirm"):
|
if wxHelpers.YesNoDialog(question, "Confirm"):
|
||||||
clearDamagePatterns()
|
clearDamagePatterns()
|
||||||
|
|
||||||
def DeleteTargetResists(self, event):
|
def DeleteTargetProfiles(self, event):
|
||||||
question = "This is a destructive action that will delete all target resist profiles.\nAre you sure you want to do this?"
|
question = "This is a destructive action that will delete all target resist profiles.\nAre you sure you want to do this?"
|
||||||
if wxHelpers.YesNoDialog(question, "Confirm"):
|
if wxHelpers.YesNoDialog(question, "Confirm"):
|
||||||
clearTargetResists()
|
clearTargetProfiles()
|
||||||
|
|
||||||
def DeletePrices(self, event):
|
def DeletePrices(self, event):
|
||||||
question = "This is a destructive action that will delete all cached prices out of the database.\nAre you sure you want to do this?"
|
question = "This is a destructive action that will delete all cached prices out of the database.\nAre you sure you want to do this?"
|
||||||
|
|||||||
@@ -146,7 +146,7 @@ class FirepowerViewFull(StatsView):
|
|||||||
|
|
||||||
def refreshPanel(self, fit):
|
def refreshPanel(self, fit):
|
||||||
# If we did anything intresting, we'd update our labels to reflect the new fit's stats here
|
# If we did anything intresting, we'd update our labels to reflect the new fit's stats here
|
||||||
if fit is not None and fit.targetResists is not None:
|
if fit is not None and fit.targetProfile is not None:
|
||||||
self.stEff.Show()
|
self.stEff.Show()
|
||||||
else:
|
else:
|
||||||
self.stEff.Hide()
|
self.stEff.Hide()
|
||||||
|
|||||||
@@ -63,6 +63,7 @@ class GraphColumn(ViewColumn, metaclass=ABCMeta):
|
|||||||
return self._getFitTooltip()
|
return self._getFitTooltip()
|
||||||
return ''
|
return ''
|
||||||
|
|
||||||
|
|
||||||
class DpsColumn(GraphColumn):
|
class DpsColumn(GraphColumn):
|
||||||
|
|
||||||
name = 'Dps'
|
name = 'Dps'
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ from gui.marketBrowser import MarketBrowser
|
|||||||
from gui.multiSwitch import MultiSwitch
|
from gui.multiSwitch import MultiSwitch
|
||||||
from gui.patternEditor import DmgPatternEditorDlg
|
from gui.patternEditor import DmgPatternEditorDlg
|
||||||
from gui.preferenceDialog import PreferenceDialog
|
from gui.preferenceDialog import PreferenceDialog
|
||||||
from gui.resistsEditor import ResistsEditorDlg
|
from gui.targetProfileEditor import ResistsEditorDlg
|
||||||
from gui.setEditor import ImplantSetEditorDlg
|
from gui.setEditor import ImplantSetEditorDlg
|
||||||
from gui.shipBrowser import ShipBrowser
|
from gui.shipBrowser import ShipBrowser
|
||||||
from gui.statsPane import StatsPane
|
from gui.statsPane import StatsPane
|
||||||
@@ -397,7 +397,7 @@ class MainFrame(wx.Frame):
|
|||||||
dlg = AttributeEditor(self)
|
dlg = AttributeEditor(self)
|
||||||
dlg.Show()
|
dlg.Show()
|
||||||
|
|
||||||
def showTargetResistsEditor(self, event):
|
def showTargetProfileEditor(self, event):
|
||||||
ResistsEditorDlg(self)
|
ResistsEditorDlg(self)
|
||||||
|
|
||||||
def showDamagePatternEditor(self, event):
|
def showDamagePatternEditor(self, event):
|
||||||
@@ -472,8 +472,8 @@ class MainFrame(wx.Frame):
|
|||||||
self.Bind(wx.EVT_MENU, self.showCharacterEditor, id=menuBar.characterEditorId)
|
self.Bind(wx.EVT_MENU, self.showCharacterEditor, id=menuBar.characterEditorId)
|
||||||
# Damage pattern editor
|
# Damage pattern editor
|
||||||
self.Bind(wx.EVT_MENU, self.showDamagePatternEditor, id=menuBar.damagePatternEditorId)
|
self.Bind(wx.EVT_MENU, self.showDamagePatternEditor, id=menuBar.damagePatternEditorId)
|
||||||
# Target Resists editor
|
# Target Profile editor
|
||||||
self.Bind(wx.EVT_MENU, self.showTargetResistsEditor, id=menuBar.targetResistsEditorId)
|
self.Bind(wx.EVT_MENU, self.showTargetProfileEditor, id=menuBar.targetProfileEditorId)
|
||||||
# Implant Set editor
|
# Implant Set editor
|
||||||
self.Bind(wx.EVT_MENU, self.showImplantSetEditor, id=menuBar.implantSetEditorId)
|
self.Bind(wx.EVT_MENU, self.showImplantSetEditor, id=menuBar.implantSetEditorId)
|
||||||
# Import dialog
|
# Import dialog
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ class MainMenuBar(wx.MenuBar):
|
|||||||
pyfalog.debug("Initialize MainMenuBar")
|
pyfalog.debug("Initialize MainMenuBar")
|
||||||
self.characterEditorId = wx.NewId()
|
self.characterEditorId = wx.NewId()
|
||||||
self.damagePatternEditorId = wx.NewId()
|
self.damagePatternEditorId = wx.NewId()
|
||||||
self.targetResistsEditorId = wx.NewId()
|
self.targetProfileEditorId = wx.NewId()
|
||||||
self.implantSetEditorId = wx.NewId()
|
self.implantSetEditorId = wx.NewId()
|
||||||
self.graphFrameId = wx.NewId()
|
self.graphFrameId = wx.NewId()
|
||||||
self.backupFitsId = wx.NewId()
|
self.backupFitsId = wx.NewId()
|
||||||
@@ -156,9 +156,9 @@ class MainMenuBar(wx.MenuBar):
|
|||||||
damagePatternEditItem = wx.MenuItem(editorsMenu, self.damagePatternEditorId, "&Damage Pattern Editor")
|
damagePatternEditItem = wx.MenuItem(editorsMenu, self.damagePatternEditorId, "&Damage Pattern Editor")
|
||||||
damagePatternEditItem.SetBitmap(BitmapLoader.getBitmap("damagePattern_small", "gui"))
|
damagePatternEditItem.SetBitmap(BitmapLoader.getBitmap("damagePattern_small", "gui"))
|
||||||
editorsMenu.Append(damagePatternEditItem)
|
editorsMenu.Append(damagePatternEditItem)
|
||||||
targetResistsEditItem = wx.MenuItem(editorsMenu, self.targetResistsEditorId, "&Target Resists Editor")
|
targetProfileEditItem = wx.MenuItem(editorsMenu, self.targetProfileEditorId, "&Target Profile Editor")
|
||||||
targetResistsEditItem.SetBitmap(BitmapLoader.getBitmap("explosive_small", "gui"))
|
targetProfileEditItem.SetBitmap(BitmapLoader.getBitmap("explosive_small", "gui"))
|
||||||
editorsMenu.Append(targetResistsEditItem)
|
editorsMenu.Append(targetProfileEditItem)
|
||||||
|
|
||||||
# Help menu
|
# Help menu
|
||||||
helpMenu = wx.Menu()
|
helpMenu = wx.Menu()
|
||||||
|
|||||||
@@ -19,7 +19,7 @@
|
|||||||
|
|
||||||
# noinspection PyPackageRequirements
|
# noinspection PyPackageRequirements
|
||||||
import wx
|
import wx
|
||||||
from service.targetResists import TargetResists
|
from service.targetProfile import TargetProfile
|
||||||
from gui.bitmap_loader import BitmapLoader
|
from gui.bitmap_loader import BitmapLoader
|
||||||
from gui.utils.clipboard import toClipboard, fromClipboard
|
from gui.utils.clipboard import toClipboard, fromClipboard
|
||||||
from gui.builtinViews.entityEditor import EntityEditor, BaseValidator
|
from gui.builtinViews.entityEditor import EntityEditor, BaseValidator
|
||||||
@@ -28,12 +28,12 @@ from logbook import Logger
|
|||||||
pyfalog = Logger(__name__)
|
pyfalog = Logger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class TargetResistsTextValidor(BaseValidator):
|
class TargetProfileTextValidor(BaseValidator):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
BaseValidator.__init__(self)
|
BaseValidator.__init__(self)
|
||||||
|
|
||||||
def Clone(self):
|
def Clone(self):
|
||||||
return TargetResistsTextValidor()
|
return TargetProfileTextValidor()
|
||||||
|
|
||||||
def Validate(self, win):
|
def Validate(self, win):
|
||||||
entityEditor = win.parent
|
entityEditor = win.parent
|
||||||
@@ -42,9 +42,9 @@ class TargetResistsTextValidor(BaseValidator):
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
if len(text) == 0:
|
if len(text) == 0:
|
||||||
raise ValueError("You must supply a name for your Target Resist Profile!")
|
raise ValueError("You must supply a name for your Target Profile!")
|
||||||
elif text in [x.name for x in entityEditor.choices]:
|
elif text in [x.name for x in entityEditor.choices]:
|
||||||
raise ValueError("Target Resist Profile name already in use, please choose another.")
|
raise ValueError("Target Profile name already in use, please choose another.")
|
||||||
|
|
||||||
return True
|
return True
|
||||||
except ValueError as e:
|
except ValueError as e:
|
||||||
@@ -54,32 +54,32 @@ class TargetResistsTextValidor(BaseValidator):
|
|||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
class TargetResistsEntityEditor(EntityEditor):
|
class TargetProfileEntityEditor(EntityEditor):
|
||||||
def __init__(self, parent):
|
def __init__(self, parent):
|
||||||
EntityEditor.__init__(self, parent, "Target Resist Profile")
|
EntityEditor.__init__(self, parent, "Target Profile")
|
||||||
self.SetEditorValidator(TargetResistsTextValidor)
|
self.SetEditorValidator(TargetProfileTextValidor)
|
||||||
|
|
||||||
def getEntitiesFromContext(self):
|
def getEntitiesFromContext(self):
|
||||||
sTR = TargetResists.getInstance()
|
sTR = TargetProfile.getInstance()
|
||||||
choices = sorted(sTR.getTargetResistsList(), key=lambda p: p.name)
|
choices = sorted(sTR.getTargetProfileList(), key=lambda p: p.name)
|
||||||
return choices
|
return choices
|
||||||
|
|
||||||
def DoNew(self, name):
|
def DoNew(self, name):
|
||||||
sTR = TargetResists.getInstance()
|
sTR = TargetProfile.getInstance()
|
||||||
return sTR.newPattern(name)
|
return sTR.newPattern(name)
|
||||||
|
|
||||||
def DoRename(self, entity, name):
|
def DoRename(self, entity, name):
|
||||||
sTR = TargetResists.getInstance()
|
sTR = TargetProfile.getInstance()
|
||||||
sTR.renamePattern(entity, name)
|
sTR.renamePattern(entity, name)
|
||||||
|
|
||||||
def DoCopy(self, entity, name):
|
def DoCopy(self, entity, name):
|
||||||
sTR = TargetResists.getInstance()
|
sTR = TargetProfile.getInstance()
|
||||||
copy = sTR.copyPattern(entity)
|
copy = sTR.copyPattern(entity)
|
||||||
sTR.renamePattern(copy, name)
|
sTR.renamePattern(copy, name)
|
||||||
return copy
|
return copy
|
||||||
|
|
||||||
def DoDelete(self, entity):
|
def DoDelete(self, entity):
|
||||||
sTR = TargetResists.getInstance()
|
sTR = TargetProfile.getInstance()
|
||||||
sTR.deletePattern(entity)
|
sTR.deletePattern(entity)
|
||||||
|
|
||||||
|
|
||||||
@@ -90,7 +90,7 @@ class ResistsEditorDlg(wx.Dialog):
|
|||||||
wx.Dialog.__init__(
|
wx.Dialog.__init__(
|
||||||
self, parent, id=wx.ID_ANY,
|
self, parent, id=wx.ID_ANY,
|
||||||
# Dropdown list widget is scaled to its longest content line on GTK, adapt to that
|
# Dropdown list widget is scaled to its longest content line on GTK, adapt to that
|
||||||
title="Target Resists Editor",
|
title="Target Profile Editor",
|
||||||
size=wx.Size(500, 240) if "wxGTK" in wx.PlatformInfo else wx.Size(350, 240))
|
size=wx.Size(500, 240) if "wxGTK" in wx.PlatformInfo else wx.Size(350, 240))
|
||||||
|
|
||||||
self.block = False
|
self.block = False
|
||||||
@@ -98,7 +98,7 @@ class ResistsEditorDlg(wx.Dialog):
|
|||||||
|
|
||||||
mainSizer = wx.BoxSizer(wx.VERTICAL)
|
mainSizer = wx.BoxSizer(wx.VERTICAL)
|
||||||
|
|
||||||
self.entityEditor = TargetResistsEntityEditor(self)
|
self.entityEditor = TargetProfileEntityEditor(self)
|
||||||
mainSizer.Add(self.entityEditor, 0, wx.ALL | wx.EXPAND, 2)
|
mainSizer.Add(self.entityEditor, 0, wx.ALL | wx.EXPAND, 2)
|
||||||
|
|
||||||
self.sl = wx.StaticLine(self)
|
self.sl = wx.StaticLine(self)
|
||||||
@@ -227,7 +227,7 @@ class ResistsEditorDlg(wx.Dialog):
|
|||||||
if event is not None:
|
if event is not None:
|
||||||
event.Skip()
|
event.Skip()
|
||||||
|
|
||||||
TargetResists.getInstance().saveChanges(p)
|
TargetProfile.getInstance().saveChanges(p)
|
||||||
|
|
||||||
except ValueError:
|
except ValueError:
|
||||||
editObj.SetForegroundColour(wx.RED)
|
editObj.SetForegroundColour(wx.RED)
|
||||||
@@ -271,7 +271,7 @@ class ResistsEditorDlg(wx.Dialog):
|
|||||||
|
|
||||||
text = fromClipboard()
|
text = fromClipboard()
|
||||||
if text:
|
if text:
|
||||||
sTR = TargetResists.getInstance()
|
sTR = TargetProfile.getInstance()
|
||||||
try:
|
try:
|
||||||
sTR.importPatterns(text)
|
sTR.importPatterns(text)
|
||||||
self.stNotice.SetLabel("Patterns successfully imported from clipboard")
|
self.stNotice.SetLabel("Patterns successfully imported from clipboard")
|
||||||
@@ -290,7 +290,7 @@ class ResistsEditorDlg(wx.Dialog):
|
|||||||
|
|
||||||
def exportPatterns(self, event):
|
def exportPatterns(self, event):
|
||||||
"""Event fired when export to clipboard button is clicked"""
|
"""Event fired when export to clipboard button is clicked"""
|
||||||
sTR = TargetResists.getInstance()
|
sTR = TargetProfile.getInstance()
|
||||||
toClipboard(sTR.exportPatterns())
|
toClipboard(sTR.exportPatterns())
|
||||||
self.stNotice.SetLabel("Patterns exported to clipboard")
|
self.stNotice.SetLabel("Patterns exported to clipboard")
|
||||||
|
|
||||||
@@ -69,7 +69,7 @@ class Fit:
|
|||||||
def __init__(self):
|
def __init__(self):
|
||||||
pyfalog.debug("Initialize Fit class")
|
pyfalog.debug("Initialize Fit class")
|
||||||
self.pattern = DamagePattern.getInstance().getDamagePattern("Uniform")
|
self.pattern = DamagePattern.getInstance().getDamagePattern("Uniform")
|
||||||
self.targetResists = None
|
self.targetProfile = None
|
||||||
self.character = saveddata_Character.getAll5()
|
self.character = saveddata_Character.getAll5()
|
||||||
self.booster = False
|
self.booster = False
|
||||||
self._loadedFits = WeakSet()
|
self._loadedFits = WeakSet()
|
||||||
@@ -170,7 +170,7 @@ class Fit:
|
|||||||
fit = FitType(ship)
|
fit = FitType(ship)
|
||||||
fit.name = name if name is not None else "New %s" % fit.ship.item.name
|
fit.name = name if name is not None else "New %s" % fit.ship.item.name
|
||||||
fit.damagePattern = self.pattern
|
fit.damagePattern = self.pattern
|
||||||
fit.targetResists = self.targetResists
|
fit.targetProfile = self.targetProfile
|
||||||
fit.character = self.character
|
fit.character = self.character
|
||||||
fit.booster = self.booster
|
fit.booster = self.booster
|
||||||
useCharImplants = self.serviceFittingOptions["useCharacterImplantsByDefault"]
|
useCharImplants = self.serviceFittingOptions["useCharacterImplantsByDefault"]
|
||||||
@@ -358,21 +358,21 @@ class Fit:
|
|||||||
self.fill(fit)
|
self.fill(fit)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def getTargetResists(fitID):
|
def getTargetProfile(fitID):
|
||||||
pyfalog.debug("Get target resists for fit ID: {0}", fitID)
|
pyfalog.debug("Get target profile for fit ID: {0}", fitID)
|
||||||
if fitID is None:
|
if fitID is None:
|
||||||
return
|
return
|
||||||
|
|
||||||
fit = eos.db.getFit(fitID)
|
fit = eos.db.getFit(fitID)
|
||||||
return fit.targetResists
|
return fit.targetProfile
|
||||||
|
|
||||||
def setTargetResists(self, fitID, pattern):
|
def setTargetProfile(self, fitID, pattern):
|
||||||
pyfalog.debug("Set target resist for fit ID: {0}", fitID)
|
pyfalog.debug("Set target resist for fit ID: {0}", fitID)
|
||||||
if fitID is None:
|
if fitID is None:
|
||||||
return
|
return
|
||||||
|
|
||||||
fit = eos.db.getFit(fitID)
|
fit = eos.db.getFit(fitID)
|
||||||
fit.targetResists = pattern
|
fit.targetProfile = pattern
|
||||||
eos.db.commit()
|
eos.db.commit()
|
||||||
|
|
||||||
self.recalc(fit)
|
self.recalc(fit)
|
||||||
|
|||||||
@@ -156,7 +156,7 @@ class Port:
|
|||||||
# Set some more fit attributes and save
|
# Set some more fit attributes and save
|
||||||
fit.character = sFit.character
|
fit.character = sFit.character
|
||||||
fit.damagePattern = sFit.pattern
|
fit.damagePattern = sFit.pattern
|
||||||
fit.targetResists = sFit.targetResists
|
fit.targetProfile = sFit.targetProfile
|
||||||
if len(fit.implants) > 0:
|
if len(fit.implants) > 0:
|
||||||
fit.implantLocation = ImplantLocation.FIT
|
fit.implantLocation = ImplantLocation.FIT
|
||||||
else:
|
else:
|
||||||
@@ -194,7 +194,7 @@ class Port:
|
|||||||
for fit in importData:
|
for fit in importData:
|
||||||
fit.character = sFit.character
|
fit.character = sFit.character
|
||||||
fit.damagePattern = sFit.pattern
|
fit.damagePattern = sFit.pattern
|
||||||
fit.targetResists = sFit.targetResists
|
fit.targetProfile = sFit.targetProfile
|
||||||
if len(fit.implants) > 0:
|
if len(fit.implants) > 0:
|
||||||
fit.implantLocation = ImplantLocation.FIT
|
fit.implantLocation = ImplantLocation.FIT
|
||||||
else:
|
else:
|
||||||
|
|||||||
@@ -20,34 +20,34 @@
|
|||||||
import copy
|
import copy
|
||||||
|
|
||||||
from eos import db
|
from eos import db
|
||||||
from eos.saveddata.targetResists import TargetResists as es_TargetResists
|
from eos.saveddata.targetProfile import TargetProfile as es_TargetProfile
|
||||||
|
|
||||||
|
|
||||||
class ImportError(Exception):
|
class ImportError(Exception):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
class TargetResists:
|
class TargetProfile:
|
||||||
instance = None
|
instance = None
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def getInstance(cls):
|
def getInstance(cls):
|
||||||
if cls.instance is None:
|
if cls.instance is None:
|
||||||
cls.instance = TargetResists()
|
cls.instance = TargetProfile()
|
||||||
|
|
||||||
return cls.instance
|
return cls.instance
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def getTargetResistsList():
|
def getTargetProfileList():
|
||||||
return db.getTargetResistsList()
|
return db.getTargetProfileList()
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def getTargetResists(name):
|
def getTargetProfile(name):
|
||||||
return db.getTargetResists(name)
|
return db.getTargetProfile(name)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def newPattern(name):
|
def newPattern(name):
|
||||||
p = es_TargetResists(0.0, 0.0, 0.0, 0.0)
|
p = es_TargetProfile(0.0, 0.0, 0.0, 0.0)
|
||||||
p.name = name
|
p.name = name
|
||||||
db.save(p)
|
db.save(p)
|
||||||
return p
|
return p
|
||||||
@@ -72,7 +72,7 @@ class TargetResists:
|
|||||||
db.save(p)
|
db.save(p)
|
||||||
|
|
||||||
def importPatterns(self, text):
|
def importPatterns(self, text):
|
||||||
imports, num = es_TargetResists.importPatterns(text)
|
imports, num = es_TargetProfile.importPatterns(text)
|
||||||
lenImports = len(imports)
|
lenImports = len(imports)
|
||||||
|
|
||||||
if lenImports == 0:
|
if lenImports == 0:
|
||||||
@@ -81,6 +81,6 @@ class TargetResists:
|
|||||||
raise ImportError("%d patterns imported from clipboard; %d had errors" % (num, num - lenImports))
|
raise ImportError("%d patterns imported from clipboard; %d had errors" % (num, num - lenImports))
|
||||||
|
|
||||||
def exportPatterns(self):
|
def exportPatterns(self):
|
||||||
patterns = self.getTargetResistsList()
|
patterns = self.getTargetProfileList()
|
||||||
patterns.sort(key=lambda p: p.name)
|
patterns.sort(key=lambda p: p.name)
|
||||||
return es_TargetResists.exportPatterns(*patterns)
|
return es_TargetProfile.exportPatterns(*patterns)
|
||||||
Reference in New Issue
Block a user