From e6309bb8bbe79e2cedfb70ff641e529effc02eed Mon Sep 17 00:00:00 2001 From: Indiction Date: Thu, 7 Mar 2019 00:14:48 +0100 Subject: [PATCH 01/12] Copy Enums to const.py Switching to IntEnum where necessary. --- eos/const.py | 55 ++++++++++++++++++- eos/saveddata/fit.py | 13 +---- eos/saveddata/module.py | 16 +----- .../attributeGrouping.py | 1 - service/esi.py | 6 +- service/esiAccess.py | 13 +---- service/port/efs.py | 8 --- service/port/eft.py | 9 +-- service/port/multibuy.py | 18 +++--- 9 files changed, 68 insertions(+), 71 deletions(-) diff --git a/eos/const.py b/eos/const.py index 95dd8a888..3db2dea03 100644 --- a/eos/const.py +++ b/eos/const.py @@ -1,5 +1,5 @@ from eos.enum import Enum - +from enum import IntEnum class Slot(Enum): @@ -24,3 +24,56 @@ class Slot(Enum): FS_LIGHT = 13 FS_SUPPORT = 14 FS_HEAVY = 15 + + +class ImplantLocation(Enum): + FIT = 0 + CHARACTER = 1 + + +class CalcType(Enum): + LOCAL = 0 + PROJECTED = 1 + COMMAND = 2 + +class State(Enum): + OFFLINE = -1 + ONLINE = 0 + ACTIVE = 1 + OVERHEATED = 2 + +class Hardpoint(Enum): + NONE = 0 + MISSILE = 1 + TURRET = 2 + +class LoginMethod(Enum): + SERVER = 0 + MANUAL = 1 + +class SsoMode(Enum): + AUTO = 0 + CUSTOM = 1 + +class ESIEndpoints(Enum): + CHAR = "/v4/characters/{character_id}/" + CHAR_SKILLS = "/v4/characters/{character_id}/skills/" + CHAR_FITTINGS = "/v1/characters/{character_id}/fittings/" + CHAR_DEL_FIT = "/v1/characters/{character_id}/fittings/{fitting_id}/" + +class MultiBuy_ItemType(IntEnum): + IMPLANTS = 1 + CARGO = 2 + LOADED_CHARGES = 3 + +class Options(IntEnum): + IMPLANTS = 1 + MUTATIONS = 2 + LOADED_CHARGES = 3 + +class RigSize(Enum): + # Matches to item attribute "rigSize" on ship and rig items + SMALL = 1 + MEDIUM = 2 + LARGE = 3 + CAPITAL = 4 diff --git a/eos/saveddata/fit.py b/eos/saveddata/fit.py index f33a78651..49c2c4dbf 100644 --- a/eos/saveddata/fit.py +++ b/eos/saveddata/fit.py @@ -29,6 +29,7 @@ import eos.db from eos import capSim from eos.effectHandlerHelpers import HandledModuleList, HandledDroneCargoList, HandledImplantBoosterList, HandledProjectedDroneList, HandledProjectedModList from eos.enum import Enum +from eos.const import ImplantLocation, CalcType from eos.saveddata.ship import Ship from eos.saveddata.drone import Drone from eos.saveddata.character import Character @@ -36,20 +37,10 @@ from eos.saveddata.citadel import Citadel from eos.saveddata.module import Module, State, Slot, Hardpoint from eos.utils.stats import DmgTypes from logbook import Logger + pyfalog = Logger(__name__) -class ImplantLocation(Enum): - FIT = 0 - CHARACTER = 1 - - -class CalcType(Enum): - LOCAL = 0 - PROJECTED = 1 - COMMAND = 2 - - class Fit(object): """Represents a fitting, with modules, ship, implants, etc.""" diff --git a/eos/saveddata/module.py b/eos/saveddata/module.py index 25b15e147..ef7312e64 100644 --- a/eos/saveddata/module.py +++ b/eos/saveddata/module.py @@ -23,7 +23,7 @@ from logbook import Logger from sqlalchemy.orm import reconstructor, validates import eos.db -from eos.const import Slot +from eos.const import Slot, State, Hardpoint from eos.effectHandlerHelpers import HandledCharge, HandledItem from eos.enum import Enum from eos.modifiedAttributeDict import ChargeAttrShortcut, ItemAttrShortcut, ModifiedAttributeDict @@ -35,14 +35,6 @@ from eos.utils.stats import DmgTypes pyfalog = Logger(__name__) - -class State(Enum): - OFFLINE = -1 - ONLINE = 0 - ACTIVE = 1 - OVERHEATED = 2 - - ProjectedMap = { State.OVERHEATED: State.ACTIVE, State.ACTIVE: State.OFFLINE, @@ -67,12 +59,6 @@ ProjectedSystem = { } -class Hardpoint(Enum): - NONE = 0 - MISSILE = 1 - TURRET = 2 - - class Module(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut): """An instance of this class represents a module together with its charge and modified attributes""" MINING_ATTRIBUTES = ("miningAmount",) diff --git a/gui/builtinItemStatsViews/attributeGrouping.py b/gui/builtinItemStatsViews/attributeGrouping.py index de466cf73..0edccd8ca 100644 --- a/gui/builtinItemStatsViews/attributeGrouping.py +++ b/gui/builtinItemStatsViews/attributeGrouping.py @@ -1,6 +1,5 @@ from enum import Enum, auto - # Define the various groups of attributes class AttrGroup(Enum): FITTING = auto() diff --git a/service/esi.py b/service/esi.py index 8162c6844..da11e4792 100644 --- a/service/esi.py +++ b/service/esi.py @@ -10,6 +10,7 @@ import webbrowser import eos.db from eos.enum import Enum +from eos.const import LoginMethod from eos.saveddata.ssocharacter import SsoCharacter from service.esiAccess import APIException, SsoMode import gui.globalEvents as GE @@ -24,11 +25,6 @@ from requests import Session pyfalog = Logger(__name__) -class LoginMethod(Enum): - SERVER = 0 - MANUAL = 1 - - class Esi(EsiAccess): _instance = None diff --git a/service/esiAccess.py b/service/esiAccess.py index 8ec3dd95d..bd5eb5307 100644 --- a/service/esiAccess.py +++ b/service/esiAccess.py @@ -18,6 +18,7 @@ import base64 import datetime from eos.enum import Enum +from eos.const import SsoMode, ESIEndpoints from service.settings import EsiSettings, NetworkSettings from requests import Session @@ -42,11 +43,6 @@ scopes = [ ] -class SsoMode(Enum): - AUTO = 0 - CUSTOM = 1 - - class APIException(Exception): """ Exception for SSO related errors """ @@ -66,13 +62,6 @@ class APIException(Exception): return 'HTTP Error %s' % self.status_code -class ESIEndpoints(Enum): - CHAR = "/v4/characters/{character_id}/" - CHAR_SKILLS = "/v4/characters/{character_id}/skills/" - CHAR_FITTINGS = "/v1/characters/{character_id}/fittings/" - CHAR_DEL_FIT = "/v1/characters/{character_id}/fittings/{fitting_id}/" - - class EsiAccess(object): def __init__(self): self.settings = EsiSettings.getInstance() diff --git a/service/port/efs.py b/service/port/efs.py index c93c7d87d..fe84ccb52 100755 --- a/service/port/efs.py +++ b/service/port/efs.py @@ -19,14 +19,6 @@ from logbook import Logger pyfalog = Logger(__name__) -class RigSize(Enum): - # Matches to item attribute "rigSize" on ship and rig items - SMALL = 1 - MEDIUM = 2 - LARGE = 3 - CAPITAL = 4 - - class EfsPort: wepTestSet = {} version = 0.03 diff --git a/service/port/eft.py b/service/port/eft.py index 0d8a0a706..d8ac8e7f1 100644 --- a/service/port/eft.py +++ b/service/port/eft.py @@ -20,6 +20,8 @@ import re from enum import Enum +from eos.const import RigSize +from eos.const import Options from logbook import Logger @@ -41,13 +43,6 @@ from service.port.shared import IPortUser, fetchItem, processing_notify pyfalog = Logger(__name__) - -class Options(Enum): - IMPLANTS = 1 - MUTATIONS = 2 - LOADED_CHARGES = 3 - - EFT_OPTIONS = ( (Options.LOADED_CHARGES.value, 'Loaded Charges', 'Export charges loaded into modules', True), (Options.MUTATIONS.value, 'Mutated Attributes', 'Export mutated modules\' stats', True), diff --git a/service/port/multibuy.py b/service/port/multibuy.py index 1c6b78836..fcaa5902d 100644 --- a/service/port/multibuy.py +++ b/service/port/multibuy.py @@ -19,18 +19,14 @@ from enum import Enum +from eos.const import MultiBuy_ItemType -class Options(Enum): - IMPLANTS = 1 - CARGO = 2 - LOADED_CHARGES = 3 - MULTIBUY_OPTIONS = ( - (Options.LOADED_CHARGES.value, 'Loaded Charges', 'Export charges loaded into modules', True), - (Options.IMPLANTS.value, 'Implants && Boosters', 'Export implants and boosters', False), - (Options.CARGO.value, 'Cargo', 'Export cargo contents', True), + (MultiBuy_ItemType.LOADED_CHARGES.value, 'Loaded Charges', 'Export charges loaded into modules', True), + (MultiBuy_ItemType.IMPLANTS.value, 'Implants && Boosters', 'Export implants and boosters', False), + (MultiBuy_ItemType.CARGO.value, 'Cargo', 'Export cargo contents', True), ) @@ -48,7 +44,7 @@ def exportMultiBuy(fit, options): if module.isMutated: continue addItem(module.item) - if module.charge and options[Options.LOADED_CHARGES.value]: + if module.charge and options[MultiBuy_ItemType.LOADED_CHARGES.value]: addItem(module.charge, module.numCharges) for drone in fit.drones: @@ -57,11 +53,11 @@ def exportMultiBuy(fit, options): for fighter in fit.fighters: addItem(fighter.item, fighter.amountActive) - if options[Options.CARGO.value]: + if options[MultiBuy_ItemType.CARGO.value]: for cargo in fit.cargo: addItem(cargo.item, cargo.amount) - if options[Options.IMPLANTS.value]: + if options[MultiBuy_ItemType.IMPLANTS.value]: for implant in fit.implants: addItem(implant.item) From 6333a0c74b311820e65b6cd388227774210e4fe4 Mon Sep 17 00:00:00 2001 From: Indiction Date: Thu, 7 Mar 2019 22:30:51 +0100 Subject: [PATCH 02/12] Adding descriptions to enums. Renaming Enums into more useful names. --- _development/helpers.py | 4 +- config.py | 12 +-- eos/const.py | 74 +++++++++++++--- eos/effects/doomsdayaoeneut.py | 6 +- eos/effects/energyneutralizerfalloff.py | 6 +- eos/effects/entityenergyneutralizerfalloff.py | 6 +- .../structureenergyneutralizerfalloff.py | 4 +- ...ucturewarpscrambleblockmwdwithnpceffect.py | 10 +-- eos/effects/warpdisruptsphere.py | 10 +-- .../warpscrambleblockmwdwithnpceffect.py | 10 +-- eos/graph/fitDps.py | 12 +-- eos/saveddata/fighter.py | 14 +-- eos/saveddata/fit.py | 48 +++++----- eos/saveddata/module.py | 88 +++++++++---------- gui/builtinAdditionPanes/fighterView.py | 6 +- gui/builtinContextMenus/moduleAmmoPicker.py | 6 +- gui/builtinStatsViews/resourcesViewFull.py | 6 +- gui/builtinViewColumns/baseIcon.py | 4 +- gui/builtinViewColumns/baseName.py | 8 +- gui/builtinViewColumns/state.py | 2 +- gui/builtinViews/fittingView.py | 14 +-- gui/fitCommands/calc/fitAddModule.py | 6 +- gui/fitCommands/calc/fitAddProjectedEnv.py | 4 +- gui/fitCommands/calc/fitAddProjectedModule.py | 6 +- .../calc/fitImportMutatedModule.py | 6 +- gui/fitCommands/calc/fitReplaceModule.py | 6 +- service/character.py | 2 +- service/esi.py | 10 +-- service/esiAccess.py | 18 ++-- service/fit.py | 12 +-- service/fitDeprecated.py | 20 ++--- service/port/dna.py | 12 +-- service/port/efs.py | 34 +++---- service/port/eft.py | 50 +++++------ service/port/esi.py | 20 ++--- service/port/multibuy.py | 14 +-- service/port/xml.py | 10 +-- 37 files changed, 314 insertions(+), 266 deletions(-) diff --git a/_development/helpers.py b/_development/helpers.py index ad1447371..53d44201f 100644 --- a/_development/helpers.py +++ b/_development/helpers.py @@ -129,7 +129,7 @@ def Saveddata(): from eos.saveddata.ship import Ship from eos.saveddata.fit import Fit from eos.saveddata.character import Character - from eos.saveddata.module import Module, State + from eos.saveddata.module import Module, FittingModuleState from eos.saveddata.citadel import Citadel from eos.saveddata.booster import Booster @@ -139,7 +139,7 @@ def Saveddata(): 'Fit' : Fit, 'Character': Character, 'Module' : Module, - 'State' : State, + 'State' : FittingModuleState, 'Booster' : Booster, } return helper diff --git a/config.py b/config.py index 7f347eb3c..f8027af9b 100644 --- a/config.py +++ b/config.py @@ -6,7 +6,7 @@ import wx from logbook import CRITICAL, DEBUG, ERROR, FingersCrossedHandler, INFO, Logger, NestedSetup, NullHandler, \ StreamHandler, TimedRotatingFileHandler, WARNING import hashlib -from eos.const import Slot +from eos.const import FittingSlot from cryptography.fernet import Fernet @@ -50,11 +50,11 @@ LOGLEVEL_MAP = { } slotColourMap = { - Slot.LOW: wx.Colour(250, 235, 204), # yellow = low slots - Slot.MED: wx.Colour(188, 215, 241), # blue = mid slots - Slot.HIGH: wx.Colour(235, 204, 209), # red = high slots - Slot.RIG: '', - Slot.SUBSYSTEM: '' + FittingSlot.LOW: wx.Colour(250, 235, 204), # yellow = low slots + FittingSlot.MED: wx.Colour(188, 215, 241), # blue = mid slots + FittingSlot.HIGH: wx.Colour(235, 204, 209), # red = high slots + FittingSlot.RIG: '', + FittingSlot.SUBSYSTEM: '' } def getClientSecret(): diff --git a/eos/const.py b/eos/const.py index 3db2dea03..29b443846 100644 --- a/eos/const.py +++ b/eos/const.py @@ -1,8 +1,29 @@ +# ============================================================================= +# Copyright (C) 2019 Ryan Holmes +# +# This file is part of pyfa. +# +# pyfa is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# pyfa 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 General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with pyfa. If not, see . +# ============================================================================= + from eos.enum import Enum from enum import IntEnum - -class Slot(Enum): +class FittingSlot(Enum): + """ + Contains slots for ship fittings + """ # These are self-explanatory LOW = 1 MED = 2 @@ -25,54 +46,81 @@ class Slot(Enum): FS_SUPPORT = 14 FS_HEAVY = 15 - class ImplantLocation(Enum): + """ + Contains location of the implant + """ FIT = 0 CHARACTER = 1 - class CalcType(Enum): + """ + Contains location of the calculation + """ LOCAL = 0 PROJECTED = 1 COMMAND = 2 -class State(Enum): +class FittingModuleState(Enum): + """ + Contains the state of a fitting module + """ OFFLINE = -1 ONLINE = 0 ACTIVE = 1 OVERHEATED = 2 -class Hardpoint(Enum): +class FittingHardpoint(Enum): + """ + Contains the types of a fitting hardpoint + """ NONE = 0 MISSILE = 1 TURRET = 2 -class LoginMethod(Enum): +class EsiLoginMethod(Enum): + """ + Contains the method of ESI login + """ SERVER = 0 MANUAL = 1 -class SsoMode(Enum): +class EsiSsoMode(Enum): + """ + Contains the mode of ESI sso mode + """ AUTO = 0 CUSTOM = 1 -class ESIEndpoints(Enum): +class EsiEndpoints(Enum): + """ + Contains the endpoint paths for the ESI access + """ CHAR = "/v4/characters/{character_id}/" CHAR_SKILLS = "/v4/characters/{character_id}/skills/" CHAR_FITTINGS = "/v1/characters/{character_id}/fittings/" CHAR_DEL_FIT = "/v1/characters/{character_id}/fittings/{fitting_id}/" -class MultiBuy_ItemType(IntEnum): +class PortMultiBuyItemType(IntEnum): + """ + Contains different types of items to multibuy export + """ IMPLANTS = 1 CARGO = 2 LOADED_CHARGES = 3 -class Options(IntEnum): +class PortEftOptions(IntEnum): + """ + Contains different options for eft-export + """ IMPLANTS = 1 MUTATIONS = 2 LOADED_CHARGES = 3 -class RigSize(Enum): - # Matches to item attribute "rigSize" on ship and rig items +class PortEftRigSize(Enum): + """ + Contains different sizes of ship rigs + """ SMALL = 1 MEDIUM = 2 LARGE = 3 diff --git a/eos/effects/doomsdayaoeneut.py b/eos/effects/doomsdayaoeneut.py index 1be85f6bd..d5263e15b 100644 --- a/eos/effects/doomsdayaoeneut.py +++ b/eos/effects/doomsdayaoeneut.py @@ -3,15 +3,15 @@ # Used by: # Module: Energy Neutralization Burst Projector # Structure Module: Standup Energy Neutralization Burst Projector -from eos.saveddata.module import State +from eos.saveddata.module import FittingModuleState from eos.modifiedAttributeDict import ModifiedAttributeDict type = "active", "projected" def handler(fit, src, context, **kwargs): - if "projected" in context and ((hasattr(src, "state") and src.state >= State.ACTIVE) or - hasattr(src, "amountActive")): + if "projected" in context and ((hasattr(src, "state") and src.state >= FittingModuleState.ACTIVE) or + hasattr(src, "amountActive")): amount = src.getModifiedItemAttr("energyNeutralizerAmount") if 'effect' in kwargs: diff --git a/eos/effects/energyneutralizerfalloff.py b/eos/effects/energyneutralizerfalloff.py index 67e55e7ad..31f94fa5e 100644 --- a/eos/effects/energyneutralizerfalloff.py +++ b/eos/effects/energyneutralizerfalloff.py @@ -2,15 +2,15 @@ # # Used by: # Modules from group: Energy Neutralizer (54 of 54) -from eos.saveddata.module import State +from eos.saveddata.module import FittingModuleState from eos.modifiedAttributeDict import ModifiedAttributeDict type = "active", "projected" def handler(fit, src, context, **kwargs): - if "projected" in context and ((hasattr(src, "state") and src.state >= State.ACTIVE) or - hasattr(src, "amountActive")): + if "projected" in context and ((hasattr(src, "state") and src.state >= FittingModuleState.ACTIVE) or + hasattr(src, "amountActive")): amount = src.getModifiedItemAttr("energyNeutralizerAmount") if 'effect' in kwargs: diff --git a/eos/effects/entityenergyneutralizerfalloff.py b/eos/effects/entityenergyneutralizerfalloff.py index 751cd540c..8edfe8adf 100644 --- a/eos/effects/entityenergyneutralizerfalloff.py +++ b/eos/effects/entityenergyneutralizerfalloff.py @@ -2,15 +2,15 @@ # # Used by: # Drones from group: Energy Neutralizer Drone (3 of 3) -from eos.saveddata.module import State +from eos.saveddata.module import FittingModuleState from eos.modifiedAttributeDict import ModifiedAttributeDict type = "active", "projected" def handler(fit, src, context, **kwargs): - if "projected" in context and ((hasattr(src, "state") and src.state >= State.ACTIVE) or - hasattr(src, "amountActive")): + if "projected" in context and ((hasattr(src, "state") and src.state >= FittingModuleState.ACTIVE) or + hasattr(src, "amountActive")): amount = src.getModifiedItemAttr("energyNeutralizerAmount") time = src.getModifiedItemAttr("energyNeutralizerDuration") diff --git a/eos/effects/structureenergyneutralizerfalloff.py b/eos/effects/structureenergyneutralizerfalloff.py index c9cdd769e..73d7db41d 100644 --- a/eos/effects/structureenergyneutralizerfalloff.py +++ b/eos/effects/structureenergyneutralizerfalloff.py @@ -2,7 +2,7 @@ # # Used by: # Structure Modules from group: Structure Energy Neutralizer (5 of 5) -from eos.saveddata.module import State +from eos.saveddata.module import FittingModuleState from eos.modifiedAttributeDict import ModifiedAttributeDict type = "active", "projected" @@ -11,7 +11,7 @@ type = "active", "projected" def handler(fit, src, context, **kwargs): amount = 0 if "projected" in context: - if (hasattr(src, "state") and src.state >= State.ACTIVE) or hasattr(src, "amountActive"): + if (hasattr(src, "state") and src.state >= FittingModuleState.ACTIVE) or hasattr(src, "amountActive"): amount = src.getModifiedItemAttr("energyNeutralizerAmount") if 'effect' in kwargs: diff --git a/eos/effects/structurewarpscrambleblockmwdwithnpceffect.py b/eos/effects/structurewarpscrambleblockmwdwithnpceffect.py index e6ab9536e..abe0c562b 100644 --- a/eos/effects/structurewarpscrambleblockmwdwithnpceffect.py +++ b/eos/effects/structurewarpscrambleblockmwdwithnpceffect.py @@ -2,7 +2,7 @@ # # Used by: # Structure Modules from group: Structure Warp Scrambler (2 of 2) -from eos.saveddata.module import State +from eos.saveddata.module import FittingModuleState # Not used by any item runTime = "early" @@ -14,7 +14,7 @@ def handler(fit, module, context): fit.ship.increaseItemAttr("warpScrambleStatus", module.getModifiedItemAttr("warpScrambleStrength")) if module.charge is not None and module.charge.ID == 47336: for mod in fit.modules: - if not mod.isEmpty and mod.item.requiresSkill("High Speed Maneuvering") and mod.state > State.ONLINE: - mod.state = State.ONLINE - if not mod.isEmpty and mod.item.requiresSkill("Micro Jump Drive Operation") and mod.state > State.ONLINE: - mod.state = State.ONLINE + if not mod.isEmpty and mod.item.requiresSkill("High Speed Maneuvering") and mod.state > FittingModuleState.ONLINE: + mod.state = FittingModuleState.ONLINE + if not mod.isEmpty and mod.item.requiresSkill("Micro Jump Drive Operation") and mod.state > FittingModuleState.ONLINE: + mod.state = FittingModuleState.ONLINE diff --git a/eos/effects/warpdisruptsphere.py b/eos/effects/warpdisruptsphere.py index f8ce29992..e131b9d0c 100644 --- a/eos/effects/warpdisruptsphere.py +++ b/eos/effects/warpdisruptsphere.py @@ -7,7 +7,7 @@ # # Used by: # Modules from group: Warp Disrupt Field Generator (7 of 7) -from eos.saveddata.module import State +from eos.saveddata.module import FittingModuleState type = "projected", "active" runTime = "early" @@ -19,10 +19,10 @@ def handler(fit, module, context): fit.ship.increaseItemAttr("warpScrambleStatus", module.getModifiedItemAttr("warpScrambleStrength")) if module.charge is not None and module.charge.ID == 45010: for mod in fit.modules: - if not mod.isEmpty and mod.item.requiresSkill("High Speed Maneuvering") and mod.state > State.ONLINE: - mod.state = State.ONLINE - if not mod.isEmpty and mod.item.requiresSkill("Micro Jump Drive Operation") and mod.state > State.ONLINE: - mod.state = State.ONLINE + if not mod.isEmpty and mod.item.requiresSkill("High Speed Maneuvering") and mod.state > FittingModuleState.ONLINE: + mod.state = FittingModuleState.ONLINE + if not mod.isEmpty and mod.item.requiresSkill("Micro Jump Drive Operation") and mod.state > FittingModuleState.ONLINE: + mod.state = FittingModuleState.ONLINE else: if module.charge is None: fit.ship.boostItemAttr("mass", module.getModifiedItemAttr("massBonusPercentage")) diff --git a/eos/effects/warpscrambleblockmwdwithnpceffect.py b/eos/effects/warpscrambleblockmwdwithnpceffect.py index 0985d4673..cf47a4ed9 100644 --- a/eos/effects/warpscrambleblockmwdwithnpceffect.py +++ b/eos/effects/warpscrambleblockmwdwithnpceffect.py @@ -2,7 +2,7 @@ # # Used by: # Modules named like: Warp Scrambler (27 of 27) -from eos.saveddata.module import State +from eos.saveddata.module import FittingModuleState runTime = "early" type = "projected", "active" @@ -16,10 +16,10 @@ def handler(fit, module, context): # this is such a dirty hack for mod in fit.modules: - if not mod.isEmpty and mod.state > State.ONLINE and ( + if not mod.isEmpty and mod.state > FittingModuleState.ONLINE and ( mod.item.requiresSkill("Micro Jump Drive Operation") or mod.item.requiresSkill("High Speed Maneuvering") ): - mod.state = State.ONLINE - if not mod.isEmpty and mod.item.requiresSkill("Micro Jump Drive Operation") and mod.state > State.ONLINE: - mod.state = State.ONLINE + mod.state = FittingModuleState.ONLINE + if not mod.isEmpty and mod.item.requiresSkill("Micro Jump Drive Operation") and mod.state > FittingModuleState.ONLINE: + mod.state = FittingModuleState.ONLINE diff --git a/eos/graph/fitDps.py b/eos/graph/fitDps.py index a8d6c4ec3..65b855dbd 100644 --- a/eos/graph/fitDps.py +++ b/eos/graph/fitDps.py @@ -20,7 +20,7 @@ from math import log, sin, radians, exp from eos.graph import Graph -from eos.saveddata.module import State, Hardpoint +from eos.saveddata.module import FittingModuleState, FittingHardpoint from logbook import Logger pyfalog = Logger(__name__) @@ -46,7 +46,7 @@ class FitDpsGraph(Graph): abssort = lambda _val: -abs(_val - 1) for mod in fit.modules: - if not mod.isEmpty and mod.state >= State.ACTIVE: + if not mod.isEmpty and mod.state >= FittingModuleState.ACTIVE: if "remoteTargetPaintFalloff" in mod.item.effects or "structureModuleEffectTargetPainter" in mod.item.effects: ew['signatureRadius'].append( 1 + (mod.getModifiedItemAttr("signatureRadiusBonus") / 100) * self.calculateModuleMultiplier( @@ -76,12 +76,12 @@ class FitDpsGraph(Graph): for mod in fit.modules: dps = mod.getDps(targetResists=fit.targetResists).total - if mod.hardpoint == Hardpoint.TURRET: - if mod.state >= State.ACTIVE: + if mod.hardpoint == FittingHardpoint.TURRET: + if mod.state >= FittingModuleState.ACTIVE: total += dps * self.calculateTurretMultiplier(mod, data) - elif mod.hardpoint == Hardpoint.MISSILE: - if mod.state >= State.ACTIVE and mod.maxRange is not None and mod.maxRange >= distance: + elif mod.hardpoint == FittingHardpoint.MISSILE: + if mod.state >= FittingModuleState.ACTIVE and mod.maxRange is not None and mod.maxRange >= distance: total += dps * self.calculateMissileMultiplier(mod, data) if distance <= fit.extraAttributes["droneControlRange"]: diff --git a/eos/saveddata/fighter.py b/eos/saveddata/fighter.py index 4b929d594..b11ced0fd 100644 --- a/eos/saveddata/fighter.py +++ b/eos/saveddata/fighter.py @@ -25,7 +25,7 @@ import eos.db from eos.effectHandlerHelpers import HandledItem, HandledCharge from eos.modifiedAttributeDict import ModifiedAttributeDict, ItemAttrShortcut, ChargeAttrShortcut from eos.saveddata.fighterAbility import FighterAbility -from eos.saveddata.module import Slot +from eos.saveddata.module import FittingSlot from eos.utils.stats import DmgTypes pyfalog = Logger(__name__) @@ -116,12 +116,12 @@ class Fighter(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut): def __calculateSlot(self, item): types = { - "Light" : Slot.F_LIGHT, - "Support": Slot.F_SUPPORT, - "Heavy" : Slot.F_HEAVY, - "StandupLight": Slot.FS_LIGHT, - "StandupSupport": Slot.FS_SUPPORT, - "StandupHeavy": Slot.FS_HEAVY + "Light" : FittingSlot.F_LIGHT, + "Support": FittingSlot.F_SUPPORT, + "Heavy" : FittingSlot.F_HEAVY, + "StandupLight": FittingSlot.FS_LIGHT, + "StandupSupport": FittingSlot.FS_SUPPORT, + "StandupHeavy": FittingSlot.FS_HEAVY } for t, slot in types.items(): diff --git a/eos/saveddata/fit.py b/eos/saveddata/fit.py index 49c2c4dbf..eb3a1c7d8 100644 --- a/eos/saveddata/fit.py +++ b/eos/saveddata/fit.py @@ -34,7 +34,7 @@ from eos.saveddata.ship import Ship from eos.saveddata.drone import Drone from eos.saveddata.character import Character from eos.saveddata.citadel import Citadel -from eos.saveddata.module import Module, State, Slot, Hardpoint +from eos.saveddata.module import Module, FittingModuleState, FittingSlot, FittingHardpoint from eos.utils.stats import DmgTypes from logbook import Logger @@ -892,7 +892,7 @@ class Fit(object): if self.ship is None: return - for slotType in (Slot.LOW, Slot.MED, Slot.HIGH, Slot.RIG, Slot.SUBSYSTEM, Slot.SERVICE): + for slotType in (FittingSlot.LOW, FittingSlot.MED, FittingSlot.HIGH, FittingSlot.RIG, FittingSlot.SUBSYSTEM, FittingSlot.SERVICE): amount = self.getSlotsFree(slotType, True) if amount > 0: for _ in range(int(amount)): @@ -939,7 +939,7 @@ class Fit(object): def getItemAttrOnlineSum(dict, attr): amount = 0 for mod in dict: - add = mod.getModifiedItemAttr(attr) if mod.state >= State.ONLINE else None + add = mod.getModifiedItemAttr(attr) if mod.state >= FittingModuleState.ONLINE else None if add is not None: amount += add @@ -958,29 +958,29 @@ class Fit(object): for mod in chain(self.modules, self.fighters): if mod.slot is type and (not getattr(mod, "isEmpty", False) or countDummies): - if type in (Slot.F_HEAVY, Slot.F_SUPPORT, Slot.F_LIGHT, Slot.FS_HEAVY, Slot.FS_LIGHT, Slot.FS_SUPPORT) and not mod.active: + if type in (FittingSlot.F_HEAVY, FittingSlot.F_SUPPORT, FittingSlot.F_LIGHT, FittingSlot.FS_HEAVY, FittingSlot.FS_LIGHT, FittingSlot.FS_SUPPORT) and not mod.active: continue amount += 1 return amount slots = { - Slot.LOW : "lowSlots", - Slot.MED : "medSlots", - Slot.HIGH : "hiSlots", - Slot.RIG : "rigSlots", - Slot.SUBSYSTEM: "maxSubSystems", - Slot.SERVICE : "serviceSlots", - Slot.F_LIGHT : "fighterLightSlots", - Slot.F_SUPPORT: "fighterSupportSlots", - Slot.F_HEAVY : "fighterHeavySlots", - Slot.FS_LIGHT: "fighterStandupLightSlots", - Slot.FS_SUPPORT: "fighterStandupSupportSlots", - Slot.FS_HEAVY: "fighterStandupHeavySlots", + FittingSlot.LOW : "lowSlots", + FittingSlot.MED : "medSlots", + FittingSlot.HIGH : "hiSlots", + FittingSlot.RIG : "rigSlots", + FittingSlot.SUBSYSTEM: "maxSubSystems", + FittingSlot.SERVICE : "serviceSlots", + FittingSlot.F_LIGHT : "fighterLightSlots", + FittingSlot.F_SUPPORT: "fighterSupportSlots", + FittingSlot.F_HEAVY : "fighterHeavySlots", + FittingSlot.FS_LIGHT: "fighterStandupLightSlots", + FittingSlot.FS_SUPPORT: "fighterStandupSupportSlots", + FittingSlot.FS_HEAVY: "fighterStandupHeavySlots", } def getSlotsFree(self, type, countDummies=False): - if type in (Slot.MODE, Slot.SYSTEM): + if type in (FittingSlot.MODE, FittingSlot.SYSTEM): # These slots don't really exist, return default 0 return 0 @@ -992,12 +992,12 @@ class Fit(object): return self.ship.getModifiedItemAttr(self.slots[type]) or 0 def getHardpointsFree(self, type): - if type == Hardpoint.NONE: + if type == FittingHardpoint.NONE: return 1 - elif type == Hardpoint.TURRET: - return self.ship.getModifiedItemAttr('turretSlotsLeft') - self.getHardpointsUsed(Hardpoint.TURRET) - elif type == Hardpoint.MISSILE: - return self.ship.getModifiedItemAttr('launcherSlotsLeft') - self.getHardpointsUsed(Hardpoint.MISSILE) + elif type == FittingHardpoint.TURRET: + return self.ship.getModifiedItemAttr('turretSlotsLeft') - self.getHardpointsUsed(FittingHardpoint.TURRET) + elif type == FittingHardpoint.MISSILE: + return self.ship.getModifiedItemAttr('launcherSlotsLeft') - self.getHardpointsUsed(FittingHardpoint.MISSILE) else: raise ValueError("%d is not a valid value for Hardpoint Enum", type) @@ -1159,7 +1159,7 @@ class Fit(object): capUsed = 0 capAdded = 0 for mod in self.modules: - if mod.state >= State.ACTIVE: + if mod.state >= FittingModuleState.ACTIVE: if (mod.getModifiedItemAttr("capacitorNeed") or 0) != 0: cycleTime = mod.rawCycleTime or 0 reactivationTime = mod.getModifiedItemAttr("moduleReactivationDelay") or 0 @@ -1173,7 +1173,7 @@ class Fit(object): capAdded -= capNeed # If this is a turret, don't stagger activations - disableStagger = mod.hardpoint == Hardpoint.TURRET + disableStagger = mod.hardpoint == FittingHardpoint.TURRET drains.append((int(fullCycleTime), mod.getModifiedItemAttr("capacitorNeed") or 0, mod.numShots or 0, disableStagger, reloadTime)) diff --git a/eos/saveddata/module.py b/eos/saveddata/module.py index ef7312e64..34b8143c1 100644 --- a/eos/saveddata/module.py +++ b/eos/saveddata/module.py @@ -23,7 +23,7 @@ from logbook import Logger from sqlalchemy.orm import reconstructor, validates import eos.db -from eos.const import Slot, State, Hardpoint +from eos.const import FittingSlot, FittingModuleState, FittingHardpoint from eos.effectHandlerHelpers import HandledCharge, HandledItem from eos.enum import Enum from eos.modifiedAttributeDict import ChargeAttrShortcut, ItemAttrShortcut, ModifiedAttributeDict @@ -36,26 +36,26 @@ from eos.utils.stats import DmgTypes pyfalog = Logger(__name__) ProjectedMap = { - State.OVERHEATED: State.ACTIVE, - State.ACTIVE: State.OFFLINE, - State.OFFLINE: State.ACTIVE, - State.ONLINE: State.ACTIVE # Just in case + FittingModuleState.OVERHEATED: FittingModuleState.ACTIVE, + FittingModuleState.ACTIVE: FittingModuleState.OFFLINE, + FittingModuleState.OFFLINE: FittingModuleState.ACTIVE, + FittingModuleState.ONLINE: FittingModuleState.ACTIVE # Just in case } # Old state : New State LocalMap = { - State.OVERHEATED: State.ACTIVE, - State.ACTIVE: State.ONLINE, - State.OFFLINE: State.ONLINE, - State.ONLINE: State.ACTIVE + FittingModuleState.OVERHEATED: FittingModuleState.ACTIVE, + FittingModuleState.ACTIVE: FittingModuleState.ONLINE, + FittingModuleState.OFFLINE: FittingModuleState.ONLINE, + FittingModuleState.ONLINE: FittingModuleState.ACTIVE } # For system effects. They should only ever be online or offline ProjectedSystem = { - State.OFFLINE: State.ONLINE, - State.ONLINE: State.OFFLINE + FittingModuleState.OFFLINE: FittingModuleState.ONLINE, + FittingModuleState.ONLINE: FittingModuleState.OFFLINE } @@ -90,7 +90,7 @@ class Module(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut): self.__charge = None self.projected = False - self.state = State.ONLINE + self.state = FittingModuleState.ONLINE self.build() @reconstructor @@ -139,7 +139,7 @@ class Module(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut): self.__reloadTime = None self.__reloadForce = None self.__chargeCycles = None - self.__hardpoint = Hardpoint.NONE + self.__hardpoint = FittingHardpoint.NONE self.__itemModifiedAttributes = ModifiedAttributeDict(parent=self) self.__chargeModifiedAttributes = ModifiedAttributeDict(parent=self) self.__slot = self.dummySlot # defaults to None @@ -382,7 +382,7 @@ class Module(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut): if self.isEmpty: self.__miningyield = 0 else: - if self.state >= State.ACTIVE: + if self.state >= FittingModuleState.ACTIVE: volley = self.getModifiedItemAttr("specialtyMiningAmount") or self.getModifiedItemAttr( "miningAmount") or 0 if volley: @@ -396,7 +396,7 @@ class Module(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut): return self.__miningyield def getVolley(self, spoolOptions=None, targetResists=None, ignoreState=False): - if self.isEmpty or (self.state < State.ACTIVE and not ignoreState): + if self.isEmpty or (self.state < FittingModuleState.ACTIVE and not ignoreState): return DmgTypes(0, 0, 0, 0) if self.__baseVolley is None: dmgGetter = self.getModifiedChargeAttr if self.charge else self.getModifiedItemAttr @@ -434,7 +434,7 @@ class Module(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut): return dps def getRemoteReps(self, spoolOptions=None, ignoreState=False): - if self.isEmpty or (self.state < State.ACTIVE and not ignoreState): + if self.isEmpty or (self.state < FittingModuleState.ACTIVE and not ignoreState): return None, 0 def getBaseRemoteReps(module): @@ -576,14 +576,14 @@ class Module(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut): return False # If the mod is a subsystem, don't let two subs in the same slot fit - if self.slot == Slot.SUBSYSTEM: + if self.slot == FittingSlot.SUBSYSTEM: subSlot = self.getModifiedItemAttr("subSystemSlot") for mod in fit.modules: if mod.getModifiedItemAttr("subSystemSlot") == subSlot: return False # Check rig sizes - if self.slot == Slot.RIG: + if self.slot == FittingSlot.RIG: if self.getModifiedItemAttr("rigSize") != fit.ship.getModifiedItemAttr("rigSize"): return False @@ -613,9 +613,9 @@ class Module(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut): # Check if we're within bounds if state < -1 or state > 2: return False - elif state >= State.ACTIVE and not self.item.isType("active"): + elif state >= FittingModuleState.ACTIVE and not self.item.isType("active"): return False - elif state == State.OVERHEATED and not self.item.isType("overheat"): + elif state == FittingModuleState.OVERHEATED and not self.item.isType("overheat"): return False else: return True @@ -627,7 +627,7 @@ class Module(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut): # If we're going to set module to offline or online for local modules or offline for projected, # it should be fine for all cases item = self.item - if (state <= State.ONLINE and projectedOnto is None) or (state <= State.OFFLINE): + if (state <= FittingModuleState.ONLINE and projectedOnto is None) or (state <= FittingModuleState.OFFLINE): return True # Check if the local module is over it's max limit; if it's not, we're fine @@ -641,7 +641,7 @@ class Module(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut): group = item.group.name for mod in self.owner.modules: currItem = getattr(mod, "item", None) - if mod.state >= State.ACTIVE and currItem is not None and currItem.group.name == group: + if mod.state >= FittingModuleState.ACTIVE and currItem is not None and currItem.group.name == group: currActive += 1 if currActive > maxGroupActive: break @@ -704,28 +704,28 @@ class Module(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut): @staticmethod def __calculateHardpoint(item): effectHardpointMap = { - "turretFitted" : Hardpoint.TURRET, - "launcherFitted": Hardpoint.MISSILE + "turretFitted" : FittingHardpoint.TURRET, + "launcherFitted": FittingHardpoint.MISSILE } if item is None: - return Hardpoint.NONE + return FittingHardpoint.NONE for effectName, slot in effectHardpointMap.items(): if effectName in item.effects: return slot - return Hardpoint.NONE + return FittingHardpoint.NONE @staticmethod def calculateSlot(item): effectSlotMap = { - "rigSlot" : Slot.RIG, - "loPower" : Slot.LOW, - "medPower" : Slot.MED, - "hiPower" : Slot.HIGH, - "subSystem" : Slot.SUBSYSTEM, - "serviceSlot": Slot.SERVICE + "rigSlot" : FittingSlot.RIG, + "loPower" : FittingSlot.LOW, + "medPower" : FittingSlot.MED, + "hiPower" : FittingSlot.HIGH, + "subSystem" : FittingSlot.SUBSYSTEM, + "serviceSlot": FittingSlot.SERVICE } if item is None: return None @@ -733,7 +733,7 @@ class Module(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut): if effectName in item.effects: return slot if item.group.name in Module.SYSTEM_GROUPS: - return Slot.SYSTEM + return FittingSlot.SYSTEM return None @@ -787,8 +787,8 @@ class Module(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut): if effect.runTime == runTime and \ effect.activeByDefault and \ (effect.isType("offline") or - (effect.isType("passive") and self.state >= State.ONLINE) or - (effect.isType("active") and self.state >= State.ACTIVE)) and \ + (effect.isType("passive") and self.state >= FittingModuleState.ONLINE) or + (effect.isType("active") and self.state >= FittingModuleState.ACTIVE)) and \ (not gang or (gang and effect.isType("gang"))): chargeContext = ("moduleCharge",) @@ -801,7 +801,7 @@ class Module(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut): effect.handler(fit, self, chargeContext) if self.item: - if self.state >= State.OVERHEATED: + if self.state >= FittingModuleState.OVERHEATED: for effect in self.item.effects.values(): if effect.runTime == runTime and \ effect.isType("overheat") \ @@ -814,8 +814,8 @@ class Module(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut): if effect.runTime == runTime and \ effect.activeByDefault and \ (effect.isType("offline") or - (effect.isType("passive") and self.state >= State.ONLINE) or - (effect.isType("active") and self.state >= State.ACTIVE)) \ + (effect.isType("passive") and self.state >= FittingModuleState.ONLINE) or + (effect.isType("active") and self.state >= FittingModuleState.ACTIVE)) \ and ((projected and effect.isType("projected")) or not projected) \ and ((gang and effect.isType("gang")) or not gang): try: @@ -890,7 +890,7 @@ class Module(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut): @property def capUse(self): capNeed = self.getModifiedItemAttr("capacitorNeed") - if capNeed and self.state >= State.ACTIVE: + if capNeed and self.state >= FittingModuleState.ACTIVE: cycleTime = self.cycleTime if cycleTime > 0: capUsed = capNeed / (cycleTime / 1000.0) @@ -902,10 +902,10 @@ class Module(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut): def getProposedState(mod, click, proposedState=None): # todo: instead of passing in module, make this a instanced function. pyfalog.debug("Get proposed state for module.") - if mod.slot == Slot.SUBSYSTEM or mod.isEmpty: - return State.ONLINE + if mod.slot == FittingSlot.SUBSYSTEM or mod.isEmpty: + return FittingModuleState.ONLINE - if mod.slot == Slot.SYSTEM: + if mod.slot == FittingSlot.SYSTEM: transitionMap = ProjectedSystem else: transitionMap = ProjectedMap if mod.projected else LocalMap @@ -915,9 +915,9 @@ class Module(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut): if proposedState is not None: state = proposedState elif click == "right": - state = State.OVERHEATED + state = FittingModuleState.OVERHEATED elif click == "ctrl": - state = State.OFFLINE + state = FittingModuleState.OFFLINE else: state = transitionMap[currState] if not mod.isValidState(state): diff --git a/gui/builtinAdditionPanes/fighterView.py b/gui/builtinAdditionPanes/fighterView.py index bf797ae15..60b31536d 100644 --- a/gui/builtinAdditionPanes/fighterView.py +++ b/gui/builtinAdditionPanes/fighterView.py @@ -25,7 +25,7 @@ from gui.builtinMarketBrowser.events import ItemSelected, ITEM_SELECTED import gui.mainFrame import gui.display as d from gui.builtinViewColumns.state import State -from eos.saveddata.module import Slot +from eos.saveddata.module import FittingSlot from gui.contextMenu import ContextMenu from gui.utils.staticHelpers import DragDropHelper from service.fit import Fit @@ -93,9 +93,9 @@ class FighterView(wx.Panel): if fit: for x in self.labels: if fit.isStructure: - slot = getattr(Slot, "FS_{}".format(x.upper())) + slot = getattr(FittingSlot, "FS_{}".format(x.upper())) else: - slot = getattr(Slot, "F_{}".format(x.upper())) + slot = getattr(FittingSlot, "F_{}".format(x.upper())) used = fit.getSlotsUsed(slot) total = fit.getNumSlots(slot) color = wx.Colour(204, 51, 51) if used > total else wx.SystemSettings.GetColour( diff --git a/gui/builtinContextMenus/moduleAmmoPicker.py b/gui/builtinContextMenus/moduleAmmoPicker.py index f4de653b4..fec9ab4e0 100644 --- a/gui/builtinContextMenus/moduleAmmoPicker.py +++ b/gui/builtinContextMenus/moduleAmmoPicker.py @@ -5,7 +5,7 @@ import wx import gui.fitCommands as cmd import gui.mainFrame -from eos.saveddata.module import Hardpoint +from eos.saveddata.module import FittingHardpoint from gui.bitmap_loader import BitmapLoader from gui.contextMenu import ContextMenu from service.market import Market @@ -136,7 +136,7 @@ class ModuleAmmoPicker(ContextMenu): hardpoint = self.module.hardpoint moduleName = self.module.item.name # Make sure we do not consider mining turrets as combat turrets - if hardpoint == Hardpoint.TURRET and self.module.getModifiedItemAttr("miningAmount", None) is None: + if hardpoint == FittingHardpoint.TURRET and self.module.getModifiedItemAttr("miningAmount", None) is None: self.addSeperator(m, "Long Range") items = [] range_ = None @@ -180,7 +180,7 @@ class ModuleAmmoPicker(ContextMenu): m.Append(item) self.addSeperator(m, "Short Range") - elif hardpoint == Hardpoint.MISSILE and moduleName != 'Festival Launcher': + elif hardpoint == FittingHardpoint.MISSILE and moduleName != 'Festival Launcher': self.charges.sort(key=self.missileSorter) type_ = None sub = None diff --git a/gui/builtinStatsViews/resourcesViewFull.py b/gui/builtinStatsViews/resourcesViewFull.py index 77a1eaae5..79bc9533c 100644 --- a/gui/builtinStatsViews/resourcesViewFull.py +++ b/gui/builtinStatsViews/resourcesViewFull.py @@ -26,7 +26,7 @@ import gui.mainFrame from gui.chrome_tabs import EVT_NOTEBOOK_PAGE_CHANGED from gui.utils import fonts -from eos.saveddata.module import Hardpoint +from eos.saveddata.module import FittingHardpoint from gui.utils.numberFormatter import formatAmount @@ -196,9 +196,9 @@ class ResourcesViewFull(StatsView): # If we did anything intresting, we'd update our labels to reflect the new fit's stats here stats = ( - ("label%sUsedTurretHardpoints", lambda: fit.getHardpointsUsed(Hardpoint.TURRET), 0, 0, 0), + ("label%sUsedTurretHardpoints", lambda: fit.getHardpointsUsed(FittingHardpoint.TURRET), 0, 0, 0), ("label%sTotalTurretHardpoints", lambda: fit.ship.getModifiedItemAttr('turretSlotsLeft'), 0, 0, 0), - ("label%sUsedLauncherHardpoints", lambda: fit.getHardpointsUsed(Hardpoint.MISSILE), 0, 0, 0), + ("label%sUsedLauncherHardpoints", lambda: fit.getHardpointsUsed(FittingHardpoint.MISSILE), 0, 0, 0), ("label%sTotalLauncherHardpoints", lambda: fit.ship.getModifiedItemAttr('launcherSlotsLeft'), 0, 0, 0), ("label%sUsedDronesActive", lambda: fit.activeDrones, 0, 0, 0), ("label%sTotalDronesActive", lambda: fit.extraAttributes["maxActiveDrones"], 0, 0, 0), diff --git a/gui/builtinViewColumns/baseIcon.py b/gui/builtinViewColumns/baseIcon.py index 207d639c5..536d90da9 100644 --- a/gui/builtinViewColumns/baseIcon.py +++ b/gui/builtinViewColumns/baseIcon.py @@ -2,7 +2,7 @@ import wx from eos.saveddata.implant import Implant from eos.saveddata.drone import Drone -from eos.saveddata.module import Module, Slot, Rack +from eos.saveddata.module import Module, FittingSlot, Rack from eos.saveddata.fit import Fit from gui.viewColumn import ViewColumn @@ -32,7 +32,7 @@ class BaseIcon(ViewColumn): return self.shipImage elif isinstance(stuff, Module): if stuff.isEmpty: - return self.fittingView.imageList.GetImageIndex("slot_%s_small" % Slot.getName(stuff.slot).lower(), + return self.fittingView.imageList.GetImageIndex("slot_%s_small" % FittingSlot.getName(stuff.slot).lower(), "gui") else: return self.loadIconFile(stuff.item.iconID or "") diff --git a/gui/builtinViewColumns/baseName.py b/gui/builtinViewColumns/baseName.py index 368dd74b6..d6710c782 100644 --- a/gui/builtinViewColumns/baseName.py +++ b/gui/builtinViewColumns/baseName.py @@ -25,7 +25,7 @@ from eos.saveddata.cargo import Cargo from eos.saveddata.implant import Implant from eos.saveddata.drone import Drone from eos.saveddata.fighter import Fighter -from eos.saveddata.module import Module, Slot, Rack +from eos.saveddata.module import Module, FittingSlot, Rack from eos.saveddata.fit import Fit from service.fit import Fit as FitSvc from service.market import Market @@ -72,10 +72,10 @@ class BaseName(ViewColumn): return "%s (%s)" % (stuff.name, stuff.ship.item.name) elif isinstance(stuff, Rack): if FitSvc.getInstance().serviceFittingOptions["rackLabels"]: - if stuff.slot == Slot.MODE: + if stuff.slot == FittingSlot.MODE: return '─ Tactical Mode ─' else: - return '─ {} {} Slot{}─'.format(stuff.num, Slot.getName(stuff.slot).capitalize(), '' if stuff.num == 1 else 's') + return '─ {} {} Slot{}─'.format(stuff.num, FittingSlot.getName(stuff.slot).capitalize(), '' if stuff.num == 1 else 's') else: return "" elif isinstance(stuff, Module): @@ -89,7 +89,7 @@ class BaseName(ViewColumn): return "{} {}".format(type.name, stuff.item.name[-1:]) if stuff.isEmpty: - return "%s Slot" % Slot.getName(stuff.slot).capitalize() + return "%s Slot" % FittingSlot.getName(stuff.slot).capitalize() else: return stuff.item.name elif isinstance(stuff, Implant): diff --git a/gui/builtinViewColumns/state.py b/gui/builtinViewColumns/state.py index c99ae2947..67aa483f6 100644 --- a/gui/builtinViewColumns/state.py +++ b/gui/builtinViewColumns/state.py @@ -24,7 +24,7 @@ import wx from eos.saveddata.fit import Fit from eos.saveddata.implant import Implant from eos.saveddata.drone import Drone -from eos.saveddata.module import Module, State as State_, Rack +from eos.saveddata.module import Module, FittingModuleState as State_, Rack from gui.viewColumn import ViewColumn import gui.mainFrame diff --git a/gui/builtinViews/fittingView.py b/gui/builtinViews/fittingView.py index 372ea6a2e..83d9e43df 100644 --- a/gui/builtinViews/fittingView.py +++ b/gui/builtinViews/fittingView.py @@ -30,7 +30,7 @@ import gui.globalEvents as GE import gui.mainFrame import gui.multiSwitch from eos.saveddata.mode import Mode -from eos.saveddata.module import Module, Rack, Slot +from eos.saveddata.module import Module, Rack, FittingSlot from gui.bitmap_loader import BitmapLoader from gui.builtinMarketBrowser.events import ITEM_SELECTED from gui.builtinShipBrowser.events import EVT_FIT_REMOVED, EVT_FIT_RENAMED, EVT_FIT_SELECTED, FitSelected @@ -474,7 +474,7 @@ class FittingView(d.Display): sFit = Fit.getInstance() fit = sFit.getFit(self.activeFitID) - slotOrder = [Slot.SUBSYSTEM, Slot.HIGH, Slot.MED, Slot.LOW, Slot.RIG, Slot.SERVICE] + slotOrder = [FittingSlot.SUBSYSTEM, FittingSlot.HIGH, FittingSlot.MED, FittingSlot.LOW, FittingSlot.RIG, FittingSlot.SERVICE] if fit is not None: self.mods = fit.modules[:] @@ -507,7 +507,7 @@ class FittingView(d.Display): # while also marking the mode header position in the Blanks list if sFit.serviceFittingOptions["rackSlots"]: self.blanks.append(len(self.mods)) - self.mods.append(Rack.buildRack(Slot.MODE, None)) + self.mods.append(Rack.buildRack(FittingSlot.MODE, None)) self.mods.append(fit.mode) else: @@ -648,8 +648,8 @@ class FittingView(d.Display): slotMap = {} # test for too many modules (happens with t3s / CCP change in slot layout) - for slotType in Slot.getTypes(): - slot = Slot.getValue(slotType) + for slotType in FittingSlot.getTypes(): + slot = FittingSlot.getValue(slotType) slotMap[slot] = fit.getSlotsFree(slot) < 0 for i, mod in enumerate(self.mods): @@ -735,8 +735,8 @@ class FittingView(d.Display): return slotMap = {} - for slotType in Slot.getTypes(): - slot = Slot.getValue(slotType) + for slotType in FittingSlot.getTypes(): + slot = FittingSlot.getValue(slotType) slotMap[slot] = fit.getSlotsFree(slot) < 0 padding = 2 diff --git a/gui/fitCommands/calc/fitAddModule.py b/gui/fitCommands/calc/fitAddModule.py index cd96b6d4f..4bdf057c7 100644 --- a/gui/fitCommands/calc/fitAddModule.py +++ b/gui/fitCommands/calc/fitAddModule.py @@ -1,5 +1,5 @@ import wx -from eos.saveddata.module import Module, State +from eos.saveddata.module import Module, FittingModuleState import eos.db from logbook import Logger from service.fit import Fit @@ -52,8 +52,8 @@ class FitAddModuleCommand(wx.Command): self.module.owner = fit numSlots = len(fit.modules) fit.modules.append(self.module) - if self.module.isValidState(State.ACTIVE): - self.module.state = State.ACTIVE + if self.module.isValidState(FittingModuleState.ACTIVE): + self.module.state = FittingModuleState.ACTIVE # todo: fix these # As some items may affect state-limiting attributes of the ship, calculate new attributes first diff --git a/gui/fitCommands/calc/fitAddProjectedEnv.py b/gui/fitCommands/calc/fitAddProjectedEnv.py index dc1a0443a..90af881a9 100644 --- a/gui/fitCommands/calc/fitAddProjectedEnv.py +++ b/gui/fitCommands/calc/fitAddProjectedEnv.py @@ -1,5 +1,5 @@ import wx -from eos.saveddata.module import Module, State +from eos.saveddata.module import Module, FittingModuleState import eos.db from logbook import Logger pyfalog = Logger(__name__) @@ -28,7 +28,7 @@ class FitAddProjectedEnvCommand(wx.Command): # todo: thing to check for existing environmental effects - module.state = State.ONLINE + module.state = FittingModuleState.ONLINE if module.isExclusiveSystemEffect: # if this is an exclusive system effect, we need to cache the old one. We make room for the new one here, which returns the old one self.old_item = fit.projectedModules.makeRoom(module) diff --git a/gui/fitCommands/calc/fitAddProjectedModule.py b/gui/fitCommands/calc/fitAddProjectedModule.py index 6d2ad3f4f..4531ea8b5 100644 --- a/gui/fitCommands/calc/fitAddProjectedModule.py +++ b/gui/fitCommands/calc/fitAddProjectedModule.py @@ -1,7 +1,7 @@ import wx import eos.db from logbook import Logger -from eos.saveddata.module import Module, State +from eos.saveddata.module import Module, FittingModuleState pyfalog = Logger(__name__) @@ -27,9 +27,9 @@ class FitAddProjectedModuleCommand(wx.Command): except ValueError: return False - module.state = State.ACTIVE + module.state = FittingModuleState.ACTIVE if not module.canHaveState(module.state, fit): - module.state = State.OFFLINE + module.state = FittingModuleState.OFFLINE fit.projectedModules.append(module) eos.db.commit() diff --git a/gui/fitCommands/calc/fitImportMutatedModule.py b/gui/fitCommands/calc/fitImportMutatedModule.py index 3a28c68ea..b5e323d0e 100644 --- a/gui/fitCommands/calc/fitImportMutatedModule.py +++ b/gui/fitCommands/calc/fitImportMutatedModule.py @@ -1,5 +1,5 @@ import wx -from eos.saveddata.module import Module, State +from eos.saveddata.module import Module, FittingModuleState import eos.db from eos.db.gamedata.queries import getDynamicItem from logbook import Logger @@ -62,8 +62,8 @@ class FitImportMutatedCommand(wx.Command): module.owner = fit numSlots = len(fit.modules) fit.modules.append(module) - if module.isValidState(State.ACTIVE): - module.state = State.ACTIVE + if module.isValidState(FittingModuleState.ACTIVE): + module.state = FittingModuleState.ACTIVE # todo: fix these # As some items may affect state-limiting attributes of the ship, calculate new attributes first diff --git a/gui/fitCommands/calc/fitReplaceModule.py b/gui/fitCommands/calc/fitReplaceModule.py index 286bd9451..3ccf371e7 100644 --- a/gui/fitCommands/calc/fitReplaceModule.py +++ b/gui/fitCommands/calc/fitReplaceModule.py @@ -2,7 +2,7 @@ import wx from logbook import Logger import eos.db -from eos.saveddata.module import Module, State +from eos.saveddata.module import Module, FittingModuleState from gui.fitCommands.helpers import ModuleInfoCache pyfalog = Logger(__name__) @@ -75,8 +75,8 @@ class FitReplaceModuleCommand(wx.Command): if self.module.fits(fit): self.module.owner = fit fit.modules.toModule(self.position, self.module) - if self.module.isValidState(State.ACTIVE): - self.module.state = State.ACTIVE + if self.module.isValidState(FittingModuleState.ACTIVE): + self.module.state = FittingModuleState.ACTIVE if self.old_module and self.old_module.charge and self.module.isValidCharge(self.old_module.charge): self.module.charge = self.old_module.charge diff --git a/service/character.py b/service/character.py index 565d7d329..1dc14c7c6 100644 --- a/service/character.py +++ b/service/character.py @@ -37,7 +37,7 @@ from service.esi import Esi from eos.saveddata.implant import Implant as es_Implant from eos.saveddata.character import Character as es_Character, Skill -from eos.saveddata.module import Slot as es_Slot, Module as es_Module +from eos.saveddata.module import FittingSlot as es_Slot, Module as es_Module from eos.saveddata.fighter import Fighter as es_Fighter pyfalog = Logger(__name__) diff --git a/service/esi.py b/service/esi.py index da11e4792..ce7d9a0cf 100644 --- a/service/esi.py +++ b/service/esi.py @@ -10,9 +10,9 @@ import webbrowser import eos.db from eos.enum import Enum -from eos.const import LoginMethod +from eos.const import EsiLoginMethod from eos.saveddata.ssocharacter import SsoCharacter -from service.esiAccess import APIException, SsoMode +from service.esiAccess import APIException, EsiSsoMode import gui.globalEvents as GE from gui.ssoLogin import SsoLogin, SsoLoginServer from service.server import StoppableHTTPServer, AuthHandler @@ -103,8 +103,8 @@ class Esi(EsiAccess): def login(self): # always start the local server if user is using client details. Otherwise, start only if they choose to do so. - if self.settings.get('ssoMode') == SsoMode.CUSTOM or self.settings.get('loginMode') == LoginMethod.SERVER: - dlg = gui.ssoLogin.SsoLoginServer(6461 if self.settings.get('ssoMode') == SsoMode.CUSTOM else 0) + if self.settings.get('ssoMode') == EsiSsoMode.CUSTOM or self.settings.get('loginMode') == EsiLoginMethod.SERVER: + dlg = gui.ssoLogin.SsoLoginServer(6461 if self.settings.get('ssoMode') == EsiSsoMode.CUSTOM else 0) dlg.ShowModal() else: dlg = gui.ssoLogin.SsoLogin() @@ -138,7 +138,7 @@ class Esi(EsiAccess): def handleLogin(self, message): # we already have authenticated stuff for the auto mode - if self.settings.get('ssoMode') == SsoMode.AUTO: + if self.settings.get('ssoMode') == EsiSsoMode.AUTO: ssoInfo = message['SSOInfo'][0] auth_response = json.loads(base64.b64decode(ssoInfo)) else: diff --git a/service/esiAccess.py b/service/esiAccess.py index bd5eb5307..0afe2bbc3 100644 --- a/service/esiAccess.py +++ b/service/esiAccess.py @@ -18,7 +18,7 @@ import base64 import datetime from eos.enum import Enum -from eos.const import SsoMode, ESIEndpoints +from eos.const import EsiSsoMode, EsiEndpoints from service.settings import EsiSettings, NetworkSettings from requests import Session @@ -78,7 +78,7 @@ class EsiAccess(object): @property def sso_url(self): - if self.settings.get("ssoMode") == SsoMode.CUSTOM: + if self.settings.get("ssoMode") == EsiSsoMode.CUSTOM: return "https://login.eveonline.com" return "https://www.pyfa.io" @@ -99,20 +99,20 @@ class EsiAccess(object): return '%s/oauth/token' % self.sso_url def getSkills(self, char): - return self.get(char, ESIEndpoints.CHAR_SKILLS, character_id=char.characterID) + return self.get(char, EsiEndpoints.CHAR_SKILLS, character_id=char.characterID) def getSecStatus(self, char): - return self.get(char, ESIEndpoints.CHAR, character_id=char.characterID) + return self.get(char, EsiEndpoints.CHAR, character_id=char.characterID) def getFittings(self, char): - return self.get(char, ESIEndpoints.CHAR_FITTINGS, character_id=char.characterID) + return self.get(char, EsiEndpoints.CHAR_FITTINGS, character_id=char.characterID) def postFitting(self, char, json_str): # @todo: new fitting ID can be recovered from resp.data, - return self.post(char, ESIEndpoints.CHAR_FITTINGS, json_str, character_id=char.characterID) + return self.post(char, EsiEndpoints.CHAR_FITTINGS, json_str, character_id=char.characterID) def delFitting(self, char, fittingID): - return self.delete(char, ESIEndpoints.CHAR_DEL_FIT, character_id=char.characterID, fitting_id=fittingID) + return self.delete(char, EsiEndpoints.CHAR_DEL_FIT, character_id=char.characterID, fitting_id=fittingID) @staticmethod def update_token(char, tokenResponse): @@ -125,7 +125,7 @@ class EsiAccess(object): def getLoginURI(self, redirect=None): self.state = str(uuid.uuid4()) - if self.settings.get("ssoMode") == SsoMode.AUTO: + if self.settings.get("ssoMode") == EsiSsoMode.AUTO: args = { 'state': self.state, 'pyfa_version': config.version, @@ -172,7 +172,7 @@ class EsiAccess(object): 'refresh_token': refreshToken, } - if self.settings.get('ssoMode') == SsoMode.AUTO: + if self.settings.get('ssoMode') == EsiSsoMode.AUTO: # data is all we really need, the rest is handled automatically by pyfa.io return { 'data': data, diff --git a/service/fit.py b/service/fit.py index 035bb50ee..44686dc00 100644 --- a/service/fit.py +++ b/service/fit.py @@ -31,7 +31,7 @@ from eos.saveddata.damagePattern import DamagePattern as es_DamagePattern from eos.saveddata.drone import Drone as es_Drone from eos.saveddata.fighter import Fighter as es_Fighter from eos.saveddata.fit import Fit as FitType, ImplantLocation -from eos.saveddata.module import Module as es_Module, State +from eos.saveddata.module import Module as es_Module, FittingModuleState from eos.saveddata.ship import Ship as es_Ship from service.character import Character from service.damagePattern import DamagePattern @@ -347,7 +347,7 @@ class Fit(FitDeprecated): elif isinstance(thing, es_Module): thing.state = es_Module.getProposedState(thing, click) if not thing.canHaveState(thing.state, fit): - thing.state = State.OFFLINE + thing.state = FittingModuleState.OFFLINE elif isinstance(thing, FitType): projectionInfo = thing.getProjectionInfo(fitID) if projectionInfo: @@ -379,8 +379,8 @@ class Fit(FitDeprecated): if m.fits(fit): m.owner = fit fit.modules.toModule(position, m) - if m.isValidState(State.ACTIVE): - m.state = State.ACTIVE + if m.isValidState(FittingModuleState.ACTIVE): + m.state = FittingModuleState.ACTIVE # As some items may affect state-limiting attributes of the ship, calculate new attributes first self.recalc(fit) @@ -534,13 +534,13 @@ class Fit(FitDeprecated): if mod != base: # fix for #529, where a module may be in incorrect state after CCP changes mechanics of module if not mod.canHaveState(mod.state) or not mod.isValidState(mod.state): - mod.state = State.ONLINE + mod.state = FittingModuleState.ONLINE changed = True for mod in fit.projectedModules: # fix for #529, where a module may be in incorrect state after CCP changes mechanics of module if not mod.canHaveState(mod.state, fit) or not mod.isValidState(mod.state): - mod.state = State.OFFLINE + mod.state = FittingModuleState.OFFLINE changed = True for drone in fit.projectedDrones: diff --git a/service/fitDeprecated.py b/service/fitDeprecated.py index 4f0d79b0d..0e1569deb 100644 --- a/service/fitDeprecated.py +++ b/service/fitDeprecated.py @@ -27,7 +27,7 @@ from eos.saveddata.cargo import Cargo as es_Cargo from eos.saveddata.drone import Drone as es_Drone from eos.saveddata.fighter import Fighter as es_Fighter from eos.saveddata.implant import Implant as es_Implant -from eos.saveddata.module import Module as es_Module, State +from eos.saveddata.module import Module as es_Module, FittingModuleState from eos.saveddata.fit import Fit as FitType from utils.deprecated import deprecated @@ -304,16 +304,16 @@ class FitDeprecated(object): fit.projectedFighters.append(fighter) elif thing.group.name in es_Module.SYSTEM_GROUPS: module = es_Module(thing) - module.state = State.ONLINE + module.state = FittingModuleState.ONLINE fit.projectedModules.append(module) else: try: module = es_Module(thing) except ValueError: return False - module.state = State.ACTIVE + module.state = FittingModuleState.ACTIVE if not module.canHaveState(module.state, fit): - module.state = State.OFFLINE + module.state = FittingModuleState.OFFLINE fit.projectedModules.append(module) eos.db.commit() @@ -396,8 +396,8 @@ class FitDeprecated(object): m.owner = fit numSlots = len(fit.modules) fit.modules.append(m) - if m.isValidState(State.ACTIVE): - m.state = State.ACTIVE + if m.isValidState(FittingModuleState.ACTIVE): + m.state = FittingModuleState.ACTIVE # As some items may affect state-limiting attributes of the ship, calculate new attributes first self.recalc(fit) @@ -465,8 +465,8 @@ class FitDeprecated(object): if m.fits(fit): m.owner = fit fit.modules.toModule(position, m) - if m.isValidState(State.ACTIVE): - m.state = State.ACTIVE + if m.isValidState(FittingModuleState.ACTIVE): + m.state = FittingModuleState.ACTIVE if recalc: # As some items may affect state-limiting attributes of the ship, calculate new attributes first @@ -508,8 +508,8 @@ class FitDeprecated(object): try: cargoP = es_Module(cargo.item) cargoP.owner = fit - if cargoP.isValidState(State.ACTIVE): - cargoP.state = State.ACTIVE + if cargoP.isValidState(FittingModuleState.ACTIVE): + cargoP.state = FittingModuleState.ACTIVE except: pyfalog.warning("Invalid item: {0}", cargo.item) return diff --git a/service/port/dna.py b/service/port/dna.py index bc64e9e99..6181a0d76 100644 --- a/service/port/dna.py +++ b/service/port/dna.py @@ -28,7 +28,7 @@ from eos.saveddata.citadel import Citadel from eos.saveddata.drone import Drone from eos.saveddata.fighter import Fighter from eos.saveddata.fit import Fit -from eos.saveddata.module import Module, State, Slot +from eos.saveddata.module import Module, FittingModuleState, FittingSlot from eos.saveddata.ship import Ship from service.fit import Fit as svcFit from service.market import Market @@ -106,8 +106,8 @@ def importDna(string): f.modules.append(m) else: m.owner = f - if m.isValidState(State.ACTIVE): - m.state = State.ACTIVE + if m.isValidState(FittingModuleState.ACTIVE): + m.state = FittingModuleState.ACTIVE moduleList.append(m) # Recalc to get slot numbers correct for T3 cruisers @@ -116,8 +116,8 @@ def importDna(string): for module in moduleList: if module.fits(f): module.owner = f - if module.isValidState(State.ACTIVE): - module.state = State.ACTIVE + if module.isValidState(FittingModuleState.ACTIVE): + module.state = FittingModuleState.ACTIVE f.modules.append(module) return f @@ -131,7 +131,7 @@ def exportDna(fit): sFit = svcFit.getInstance() for mod in fit.modules: if not mod.isEmpty: - if mod.slot == Slot.SUBSYSTEM: + if mod.slot == FittingSlot.SUBSYSTEM: subsystems.append(mod) continue if mod.itemID not in mods: diff --git a/service/port/efs.py b/service/port/efs.py index fe84ccb52..84c8a7001 100755 --- a/service/port/efs.py +++ b/service/port/efs.py @@ -7,7 +7,7 @@ from config import version as pyfaVersion from service.fit import Fit from service.market import Market from eos.enum import Enum -from eos.saveddata.module import Hardpoint, Slot, Module, State +from eos.saveddata.module import FittingHardpoint, FittingSlot, Module, FittingModuleState from eos.saveddata.drone import Drone from eos.effectHandlerHelpers import HandledList from eos.db import gamedata_session, getCategory, getAttributeInfo, getGroup @@ -78,7 +78,7 @@ class EfsPort: propWithBloom = next(filter(activePropWBloomFilter, propMods), None) if propWithBloom is not None: oldPropState = propWithBloom.state - propWithBloom.state = State.ONLINE + propWithBloom.state = FittingModuleState.ONLINE sFit.recalc(fit) sp = fit.maxSpeed sig = fit.ship.getModifiedItemAttr("signatureRadius") @@ -190,8 +190,8 @@ class EfsPort: def getModuleInfo(fit, padTypeIDs=False): moduleNames = [] modTypeIDs = [] - moduleNameSets = {Slot.LOW: [], Slot.MED: [], Slot.HIGH: [], Slot.RIG: [], Slot.SUBSYSTEM: []} - modTypeIDSets = {Slot.LOW: [], Slot.MED: [], Slot.HIGH: [], Slot.RIG: [], Slot.SUBSYSTEM: []} + moduleNameSets = {FittingSlot.LOW: [], FittingSlot.MED: [], FittingSlot.HIGH: [], FittingSlot.RIG: [], FittingSlot.SUBSYSTEM: []} + modTypeIDSets = {FittingSlot.LOW: [], FittingSlot.MED: [], FittingSlot.HIGH: [], FittingSlot.RIG: [], FittingSlot.SUBSYSTEM: []} for mod in fit.modules: try: if mod.item is not None: @@ -208,17 +208,17 @@ class EfsPort: pyfalog.error("Could not find name for module {0}".format(vars(mod))) for modInfo in [ - ["High Slots:"], moduleNameSets[Slot.HIGH], ["", "Med Slots:"], moduleNameSets[Slot.MED], - ["", "Low Slots:"], moduleNameSets[Slot.LOW], ["", "Rig Slots:"], moduleNameSets[Slot.RIG] + ["High Slots:"], moduleNameSets[FittingSlot.HIGH], ["", "Med Slots:"], moduleNameSets[FittingSlot.MED], + ["", "Low Slots:"], moduleNameSets[FittingSlot.LOW], ["", "Rig Slots:"], moduleNameSets[FittingSlot.RIG] ]: moduleNames.extend(modInfo) - if len(moduleNameSets[Slot.SUBSYSTEM]) > 0: + if len(moduleNameSets[FittingSlot.SUBSYSTEM]) > 0: moduleNames.extend(["", "Subsystems:"]) - moduleNames.extend(moduleNameSets[Slot.SUBSYSTEM]) + moduleNames.extend(moduleNameSets[FittingSlot.SUBSYSTEM]) - for slotType in [Slot.HIGH, Slot.MED, Slot.LOW, Slot.RIG, Slot.SUBSYSTEM]: - if slotType is not Slot.SUBSYSTEM or len(modTypeIDSets[slotType]) > 0: - modTypeIDs.extend([0, 0] if slotType is not Slot.HIGH else [0]) + for slotType in [FittingSlot.HIGH, FittingSlot.MED, FittingSlot.LOW, FittingSlot.RIG, FittingSlot.SUBSYSTEM]: + if slotType is not FittingSlot.SUBSYSTEM or len(modTypeIDSets[slotType]) > 0: + modTypeIDs.extend([0, 0] if slotType is not FittingSlot.HIGH else [0]) modTypeIDs.extend(modTypeIDSets[slotType]) droneNames = [] @@ -323,18 +323,18 @@ class EfsPort: name = stats.item.name + ", " + stats.charge.name else: name = stats.item.name - if stats.hardpoint == Hardpoint.TURRET: + if stats.hardpoint == FittingHardpoint.TURRET: tracking = stats.getModifiedItemAttr("trackingSpeed") typeing = "Turret" # Bombs share most attributes with missiles despite not needing the hardpoint - elif stats.hardpoint == Hardpoint.MISSILE or "Bomb Launcher" in stats.item.name: + elif stats.hardpoint == FittingHardpoint.MISSILE or "Bomb Launcher" in stats.item.name: maxVelocity = stats.getModifiedChargeAttr("maxVelocity") explosionDelay = stats.getModifiedChargeAttr("explosionDelay") damageReductionFactor = stats.getModifiedChargeAttr("aoeDamageReductionFactor") explosionRadius = stats.getModifiedChargeAttr("aoeCloudSize") explosionVelocity = stats.getModifiedChargeAttr("aoeVelocity") typeing = "Missile" - elif stats.hardpoint == Hardpoint.NONE: + elif stats.hardpoint == FittingHardpoint.NONE: aoeFieldRange = stats.getModifiedItemAttr("empFieldRange") # This also covers non-bomb weapons with dps values and no hardpoints, most notably targeted doomsdays. typeing = "SmartBomb" @@ -488,11 +488,11 @@ class EfsPort: getDroneMulti = lambda d: sumDamage(d.getModifiedItemAttr) * d.getModifiedItemAttr("damageMultiplier") fitMultipliers["drones"] = list(map(getDroneMulti, tf.drones)) - getFitTurrets = lambda f: filter(lambda mod: mod.hardpoint == Hardpoint.TURRET, f.modules) + getFitTurrets = lambda f: filter(lambda mod: mod.hardpoint == FittingHardpoint.TURRET, f.modules) getTurretMulti = lambda mod: mod.getModifiedItemAttr("damageMultiplier") / mod.cycleTime fitMultipliers["turrets"] = list(map(getTurretMulti, getFitTurrets(tf))) - getFitLaunchers = lambda f: filter(lambda mod: mod.hardpoint == Hardpoint.MISSILE, f.modules) + getFitLaunchers = lambda f: filter(lambda mod: mod.hardpoint == FittingHardpoint.MISSILE, f.modules) getLauncherMulti = lambda mod: sumDamage(mod.getModifiedChargeAttr) / mod.cycleTime fitMultipliers["launchers"] = list(map(getLauncherMulti, getFitLaunchers(tf))) return fitMultipliers @@ -530,7 +530,7 @@ class EfsPort: if effect._Effect__effectModule is not None: effect.handler(tf, fit.mode, []) if fit.ship.item.groupID == getGroup("Strategic Cruiser").ID: - subSystems = list(filter(lambda mod: mod.slot == Slot.SUBSYSTEM and mod.item, fit.modules)) + subSystems = list(filter(lambda mod: mod.slot == FittingSlot.SUBSYSTEM and mod.item, fit.modules)) for sub in subSystems: for effect in sub.item.effects.values(): if effect._Effect__effectModule is not None: diff --git a/service/port/eft.py b/service/port/eft.py index d8ac8e7f1..43a936529 100644 --- a/service/port/eft.py +++ b/service/port/eft.py @@ -20,8 +20,8 @@ import re from enum import Enum -from eos.const import RigSize -from eos.const import Options +from eos.const import PortEftRigSize +from eos.const import PortEftOptions from logbook import Logger @@ -32,7 +32,7 @@ from eos.saveddata.booster import Booster from eos.saveddata.drone import Drone from eos.saveddata.fighter import Fighter from eos.saveddata.implant import Implant -from eos.saveddata.module import Module, State, Slot +from eos.saveddata.module import Module, FittingModuleState, FittingSlot from eos.saveddata.ship import Ship from eos.saveddata.fit import Fit from service.fit import Fit as svcFit @@ -44,14 +44,14 @@ from service.port.shared import IPortUser, fetchItem, processing_notify pyfalog = Logger(__name__) EFT_OPTIONS = ( - (Options.LOADED_CHARGES.value, 'Loaded Charges', 'Export charges loaded into modules', True), - (Options.MUTATIONS.value, 'Mutated Attributes', 'Export mutated modules\' stats', True), - (Options.IMPLANTS.value, 'Implants && Boosters', 'Export implants and boosters', True), + (PortEftOptions.LOADED_CHARGES.value, 'Loaded Charges', 'Export charges loaded into modules', True), + (PortEftOptions.MUTATIONS.value, 'Mutated Attributes', 'Export mutated modules\' stats', True), + (PortEftOptions.IMPLANTS.value, 'Implants && Boosters', 'Export implants and boosters', True), ) MODULE_CATS = ('Module', 'Subsystem', 'Structure Module') -SLOT_ORDER = (Slot.LOW, Slot.MED, Slot.HIGH, Slot.RIG, Slot.SUBSYSTEM, Slot.SERVICE) +SLOT_ORDER = (FittingSlot.LOW, FittingSlot.MED, FittingSlot.HIGH, FittingSlot.RIG, FittingSlot.SUBSYSTEM, FittingSlot.SERVICE) OFFLINE_SUFFIX = '/OFFLINE' @@ -81,21 +81,21 @@ def exportEft(fit, options): modName = module.baseItem.name else: modName = module.item.name - if module.isMutated and options[Options.MUTATIONS.value]: + if module.isMutated and options[PortEftOptions.MUTATIONS.value]: mutants[mutantReference] = module mutationSuffix = ' [{}]'.format(mutantReference) mutantReference += 1 else: mutationSuffix = '' - modOfflineSuffix = ' {}'.format(OFFLINE_SUFFIX) if module.state == State.OFFLINE else '' - if module.charge and options[Options.LOADED_CHARGES.value]: + modOfflineSuffix = ' {}'.format(OFFLINE_SUFFIX) if module.state == FittingModuleState.OFFLINE else '' + if module.charge and options[PortEftOptions.LOADED_CHARGES.value]: rackLines.append('{}, {}{}{}'.format( modName, module.charge.name, modOfflineSuffix, mutationSuffix)) else: rackLines.append('{}{}{}'.format(modName, modOfflineSuffix, mutationSuffix)) else: rackLines.append('[Empty {} slot]'.format( - Slot.getName(slotType).capitalize() if slotType is not None else '')) + FittingSlot.getName(slotType).capitalize() if slotType is not None else '')) if rackLines: modSection.append('\n'.join(rackLines)) if modSection: @@ -117,7 +117,7 @@ def exportEft(fit, options): sections.append('\n\n'.join(minionSection)) # Section 3: implants, boosters - if options[Options.IMPLANTS.value]: + if options[PortEftOptions.IMPLANTS.value]: charSection = [] implantLines = [] for implant in fit.implants: @@ -144,7 +144,7 @@ def exportEft(fit, options): # Section 5: mutated modules' details mutationLines = [] - if mutants and options[Options.MUTATIONS.value]: + if mutants and options[PortEftOptions.MUTATIONS.value]: for mutantReference in sorted(mutants): mutant = mutants[mutantReference] mutationLines.append(renderMutant(mutant, firstPrefix='[{}] '.format(mutantReference), prefix=' ')) @@ -436,8 +436,8 @@ def importEftCfg(shipname, lines, iportuser): else: m.owner = fitobj # Activate mod if it is activable - if m.isValidState(State.ACTIVE): - m.state = State.ACTIVE + if m.isValidState(FittingModuleState.ACTIVE): + m.state = FittingModuleState.ACTIVE # Add charge to mod if applicable, on any errors just don't add anything if chargeName: try: @@ -717,12 +717,12 @@ class AbstractFit: @property def __slotContainerMap(self): return { - Slot.HIGH: self.modulesHigh, - Slot.MED: self.modulesMed, - Slot.LOW: self.modulesLow, - Slot.RIG: self.rigs, - Slot.SUBSYSTEM: self.subsystems, - Slot.SERVICE: self.services} + FittingSlot.HIGH: self.modulesHigh, + FittingSlot.MED: self.modulesMed, + FittingSlot.LOW: self.modulesLow, + FittingSlot.RIG: self.rigs, + FittingSlot.SUBSYSTEM: self.subsystems, + FittingSlot.SERVICE: self.services} def getContainerBySlot(self, slotType): return self.__slotContainerMap.get(slotType) @@ -793,10 +793,10 @@ class AbstractFit: if itemSpec.charge is not None and m.isValidCharge(itemSpec.charge): m.charge = itemSpec.charge - if itemSpec.offline and m.isValidState(State.OFFLINE): - m.state = State.OFFLINE - elif m.isValidState(State.ACTIVE): - m.state = State.ACTIVE + if itemSpec.offline and m.isValidState(FittingModuleState.OFFLINE): + m.state = FittingModuleState.OFFLINE + elif m.isValidState(FittingModuleState.ACTIVE): + m.state = FittingModuleState.ACTIVE return m def addImplant(self, itemSpec): diff --git a/service/port/esi.py b/service/port/esi.py index a97480624..b1cc8aee7 100644 --- a/service/port/esi.py +++ b/service/port/esi.py @@ -28,7 +28,7 @@ from eos.saveddata.citadel import Citadel from eos.saveddata.drone import Drone from eos.saveddata.fighter import Fighter from eos.saveddata.fit import Fit -from eos.saveddata.module import Module, State, Slot +from eos.saveddata.module import Module, FittingModuleState, FittingSlot from eos.saveddata.ship import Ship from service.fit import Fit as svcFit from service.market import Market @@ -41,12 +41,12 @@ class ESIExportException(Exception): pyfalog = Logger(__name__) INV_FLAGS = { - Slot.LOW: 11, - Slot.MED: 19, - Slot.HIGH: 27, - Slot.RIG: 92, - Slot.SUBSYSTEM: 125, - Slot.SERVICE: 164 + FittingSlot.LOW: 11, + FittingSlot.MED: 19, + FittingSlot.HIGH: 27, + FittingSlot.RIG: 92, + FittingSlot.SUBSYSTEM: 125, + FittingSlot.SERVICE: 164 } INV_FLAG_CARGOBAY = 5 @@ -82,7 +82,7 @@ def exportESI(ofit): item = nested_dict() slot = module.slot - if slot == Slot.SUBSYSTEM: + if slot == FittingSlot.SUBSYSTEM: # Order of subsystem matters based on this attr. See GH issue #130 slot = int(module.getModifiedItemAttr("subSystemSlot")) item['flag'] = slot @@ -189,8 +189,8 @@ def importESI(string): if m.fits(fitobj): fitobj.modules.append(m) else: - if m.isValidState(State.ACTIVE): - m.state = State.ACTIVE + if m.isValidState(FittingModuleState.ACTIVE): + m.state = FittingModuleState.ACTIVE moduleList.append(m) diff --git a/service/port/multibuy.py b/service/port/multibuy.py index fcaa5902d..a2ecb7706 100644 --- a/service/port/multibuy.py +++ b/service/port/multibuy.py @@ -19,14 +19,14 @@ from enum import Enum -from eos.const import MultiBuy_ItemType +from eos.const import PortMultiBuyItemType MULTIBUY_OPTIONS = ( - (MultiBuy_ItemType.LOADED_CHARGES.value, 'Loaded Charges', 'Export charges loaded into modules', True), - (MultiBuy_ItemType.IMPLANTS.value, 'Implants && Boosters', 'Export implants and boosters', False), - (MultiBuy_ItemType.CARGO.value, 'Cargo', 'Export cargo contents', True), + (PortMultiBuyItemType.LOADED_CHARGES.value, 'Loaded Charges', 'Export charges loaded into modules', True), + (PortMultiBuyItemType.IMPLANTS.value, 'Implants && Boosters', 'Export implants and boosters', False), + (PortMultiBuyItemType.CARGO.value, 'Cargo', 'Export cargo contents', True), ) @@ -44,7 +44,7 @@ def exportMultiBuy(fit, options): if module.isMutated: continue addItem(module.item) - if module.charge and options[MultiBuy_ItemType.LOADED_CHARGES.value]: + if module.charge and options[PortMultiBuyItemType.LOADED_CHARGES.value]: addItem(module.charge, module.numCharges) for drone in fit.drones: @@ -53,11 +53,11 @@ def exportMultiBuy(fit, options): for fighter in fit.fighters: addItem(fighter.item, fighter.amountActive) - if options[MultiBuy_ItemType.CARGO.value]: + if options[PortMultiBuyItemType.CARGO.value]: for cargo in fit.cargo: addItem(cargo.item, cargo.amount) - if options[MultiBuy_ItemType.IMPLANTS.value]: + if options[PortMultiBuyItemType.IMPLANTS.value]: for implant in fit.implants: addItem(implant.item) diff --git a/service/port/xml.py b/service/port/xml.py index 432bbcdd8..5f708cc64 100644 --- a/service/port/xml.py +++ b/service/port/xml.py @@ -28,7 +28,7 @@ from eos.saveddata.citadel import Citadel from eos.saveddata.drone import Drone from eos.saveddata.fighter import Fighter from eos.saveddata.fit import Fit -from eos.saveddata.module import Module, State, Slot +from eos.saveddata.module import Module, FittingModuleState, FittingSlot from eos.saveddata.ship import Ship from service.fit import Fit as svcFit from service.market import Market @@ -198,8 +198,8 @@ def importXml(text, iportuser): m.owner = fitobj fitobj.modules.append(m) else: - if m.isValidState(State.ACTIVE): - m.state = State.ACTIVE + if m.isValidState(FittingModuleState.ACTIVE): + m.state = FittingModuleState.ACTIVE moduleList.append(m) @@ -266,7 +266,7 @@ def exportXml(iportuser, *fits): slot = module.slot - if slot == Slot.SUBSYSTEM: + if slot == FittingSlot.SUBSYSTEM: # Order of subsystem matters based on this attr. See GH issue #130 slotId = module.getModifiedItemAttr("subSystemSlot") - 125 else: @@ -278,7 +278,7 @@ def exportXml(iportuser, *fits): hardware = doc.createElement("hardware") hardware.setAttribute("type", module.item.name) - slotName = Slot.getName(slot).lower() + slotName = FittingSlot.getName(slot).lower() slotName = slotName if slotName != "high" else "hi" hardware.setAttribute("slot", "%s slot %d" % (slotName, slotId)) fitting.appendChild(hardware) From aaec82e493e2f5af7a390114e7b0a014a6a92bf9 Mon Sep 17 00:00:00 2001 From: Indiction Date: Sat, 9 Mar 2019 12:30:05 +0100 Subject: [PATCH 03/12] Added unique to current IntEnums Renamed PortMultiBuyItemType to PortMultiBuyOptions --- eos/const.py | 6 ++++-- service/port/multibuy.py | 14 +++++++------- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/eos/const.py b/eos/const.py index 29b443846..b88e02c26 100644 --- a/eos/const.py +++ b/eos/const.py @@ -18,7 +18,7 @@ # ============================================================================= from eos.enum import Enum -from enum import IntEnum +from enum import IntEnum,unique class FittingSlot(Enum): """ @@ -101,7 +101,8 @@ class EsiEndpoints(Enum): CHAR_FITTINGS = "/v1/characters/{character_id}/fittings/" CHAR_DEL_FIT = "/v1/characters/{character_id}/fittings/{fitting_id}/" -class PortMultiBuyItemType(IntEnum): +@unique +class PortMultiBuyOptions(IntEnum): """ Contains different types of items to multibuy export """ @@ -109,6 +110,7 @@ class PortMultiBuyItemType(IntEnum): CARGO = 2 LOADED_CHARGES = 3 +@unique class PortEftOptions(IntEnum): """ Contains different options for eft-export diff --git a/service/port/multibuy.py b/service/port/multibuy.py index a2ecb7706..5ea6e7afa 100644 --- a/service/port/multibuy.py +++ b/service/port/multibuy.py @@ -19,14 +19,14 @@ from enum import Enum -from eos.const import PortMultiBuyItemType +from eos.const import PortMultiBuyOptions MULTIBUY_OPTIONS = ( - (PortMultiBuyItemType.LOADED_CHARGES.value, 'Loaded Charges', 'Export charges loaded into modules', True), - (PortMultiBuyItemType.IMPLANTS.value, 'Implants && Boosters', 'Export implants and boosters', False), - (PortMultiBuyItemType.CARGO.value, 'Cargo', 'Export cargo contents', True), + (PortMultiBuyOptions.LOADED_CHARGES.value, 'Loaded Charges', 'Export charges loaded into modules', True), + (PortMultiBuyOptions.IMPLANTS.value, 'Implants && Boosters', 'Export implants and boosters', False), + (PortMultiBuyOptions.CARGO.value, 'Cargo', 'Export cargo contents', True), ) @@ -44,7 +44,7 @@ def exportMultiBuy(fit, options): if module.isMutated: continue addItem(module.item) - if module.charge and options[PortMultiBuyItemType.LOADED_CHARGES.value]: + if module.charge and options[PortMultiBuyOptions.LOADED_CHARGES.value]: addItem(module.charge, module.numCharges) for drone in fit.drones: @@ -53,11 +53,11 @@ def exportMultiBuy(fit, options): for fighter in fit.fighters: addItem(fighter.item, fighter.amountActive) - if options[PortMultiBuyItemType.CARGO.value]: + if options[PortMultiBuyOptions.CARGO.value]: for cargo in fit.cargo: addItem(cargo.item, cargo.amount) - if options[PortMultiBuyItemType.IMPLANTS.value]: + if options[PortMultiBuyOptions.IMPLANTS.value]: for implant in fit.implants: addItem(implant.item) From f58c8ec4f94726d36c2bf43961e37a8913065c13 Mon Sep 17 00:00:00 2001 From: Indiction Date: Sat, 9 Mar 2019 15:18:10 +0100 Subject: [PATCH 04/12] Added unique to rest except Fittingslot --- eos/const.py | 18 ++++++++++++------ eos/saveddata/fit.py | 2 +- gui/builtinViewColumns/state.py | 8 ++++---- 3 files changed, 17 insertions(+), 11 deletions(-) diff --git a/eos/const.py b/eos/const.py index b88e02c26..08a0dc3e1 100644 --- a/eos/const.py +++ b/eos/const.py @@ -46,14 +46,16 @@ class FittingSlot(Enum): FS_SUPPORT = 14 FS_HEAVY = 15 -class ImplantLocation(Enum): +@unique +class ImplantLocation(IntEnum): """ Contains location of the implant """ FIT = 0 CHARACTER = 1 -class CalcType(Enum): +@unique +class CalcType(IntEnum): """ Contains location of the calculation """ @@ -61,7 +63,8 @@ class CalcType(Enum): PROJECTED = 1 COMMAND = 2 -class FittingModuleState(Enum): +@unique +class FittingModuleState(IntEnum): """ Contains the state of a fitting module """ @@ -70,7 +73,8 @@ class FittingModuleState(Enum): ACTIVE = 1 OVERHEATED = 2 -class FittingHardpoint(Enum): +@unique +class FittingHardpoint(IntEnum): """ Contains the types of a fitting hardpoint """ @@ -78,14 +82,16 @@ class FittingHardpoint(Enum): MISSILE = 1 TURRET = 2 -class EsiLoginMethod(Enum): +@unique +class EsiLoginMethod(IntEnum): """ Contains the method of ESI login """ SERVER = 0 MANUAL = 1 -class EsiSsoMode(Enum): +@unique +class EsiSsoMode(IntEnum): """ Contains the mode of ESI sso mode """ diff --git a/eos/saveddata/fit.py b/eos/saveddata/fit.py index eb3a1c7d8..5d7310dfc 100644 --- a/eos/saveddata/fit.py +++ b/eos/saveddata/fit.py @@ -732,7 +732,7 @@ class Fit(object): The type of calculation our current iteration is in. This helps us determine the interactions between fits that rely on others for proper calculations """ - pyfalog.info("Starting fit calculation on: {0}, calc: {1}", repr(self), CalcType.getName(type)) + pyfalog.info("Starting fit calculation on: {0}, calc: {1}", repr(self), CalcType(type).name) # If we are projecting this fit onto another one, collect the projection info for later use diff --git a/gui/builtinViewColumns/state.py b/gui/builtinViewColumns/state.py index 67aa483f6..14a797561 100644 --- a/gui/builtinViewColumns/state.py +++ b/gui/builtinViewColumns/state.py @@ -49,8 +49,8 @@ class State(ViewColumn): return State_.getName(mod.state).title() def getImageId(self, stuff): - generic_active = self.fittingView.imageList.GetImageIndex("state_%s_small" % State_.getName(1).lower(), "gui") - generic_inactive = self.fittingView.imageList.GetImageIndex("state_%s_small" % State_.getName(-1).lower(), + generic_active = self.fittingView.imageList.GetImageIndex("state_%s_small" % State_(1).name.lower(), "gui") + generic_inactive = self.fittingView.imageList.GetImageIndex("state_%s_small" % State_(-1).name.lower(), "gui") if isinstance(stuff, Drone): @@ -64,7 +64,7 @@ class State(ViewColumn): if stuff.isEmpty: return -1 else: - return self.fittingView.imageList.GetImageIndex("state_%s_small" % State_.getName(stuff.state).lower(), + return self.fittingView.imageList.GetImageIndex("state_%s_small" % State_(stuff.state).name.lower(), "gui") elif isinstance(stuff, Fit): fitID = self.mainFrame.getActiveFit() @@ -83,7 +83,7 @@ class State(ViewColumn): return generic_inactive elif isinstance(stuff, Implant) and stuff.character: # if we're showing character implants, show an "online" state, which should not be changed - return self.fittingView.imageList.GetImageIndex("state_%s_small" % State_.getName(0).lower(), "gui") + return self.fittingView.imageList.GetImageIndex("state_%s_small" % State_(0).name.lower(), "gui") else: active = getattr(stuff, "active", None) if active is None: From bd33efa87595119f9a7a41c466cc133863a78477 Mon Sep 17 00:00:00 2001 From: Indiction Date: Sat, 9 Mar 2019 18:45:28 +0100 Subject: [PATCH 05/12] Changed FittingSlot to IntEnum --- eos/const.py | 3 ++- eos/saveddata/fighter.py | 2 +- eos/saveddata/fit.py | 6 +++--- eos/saveddata/module.py | 14 +++++++------- gui/builtinAdditionPanes/fighterView.py | 3 ++- gui/builtinViewColumns/baseIcon.py | 5 +++-- gui/builtinViewColumns/baseName.py | 7 ++++--- gui/builtinViewColumns/state.py | 2 +- gui/builtinViews/fittingView.py | 10 +++++----- service/character.py | 3 ++- service/port/dna.py | 3 ++- service/port/efs.py | 3 ++- service/port/eft.py | 5 +++-- service/port/esi.py | 3 ++- service/port/xml.py | 5 +++-- 15 files changed, 42 insertions(+), 32 deletions(-) diff --git a/eos/const.py b/eos/const.py index 08a0dc3e1..63b7cc533 100644 --- a/eos/const.py +++ b/eos/const.py @@ -20,7 +20,8 @@ from eos.enum import Enum from enum import IntEnum,unique -class FittingSlot(Enum): +@unique +class FittingSlot(IntEnum): """ Contains slots for ship fittings """ diff --git a/eos/saveddata/fighter.py b/eos/saveddata/fighter.py index b11ced0fd..d0e9513f7 100644 --- a/eos/saveddata/fighter.py +++ b/eos/saveddata/fighter.py @@ -25,8 +25,8 @@ import eos.db from eos.effectHandlerHelpers import HandledItem, HandledCharge from eos.modifiedAttributeDict import ModifiedAttributeDict, ItemAttrShortcut, ChargeAttrShortcut from eos.saveddata.fighterAbility import FighterAbility -from eos.saveddata.module import FittingSlot from eos.utils.stats import DmgTypes +from eos.const import FittingSlot pyfalog = Logger(__name__) diff --git a/eos/saveddata/fit.py b/eos/saveddata/fit.py index 5d7310dfc..0daff8b50 100644 --- a/eos/saveddata/fit.py +++ b/eos/saveddata/fit.py @@ -29,12 +29,12 @@ import eos.db from eos import capSim from eos.effectHandlerHelpers import HandledModuleList, HandledDroneCargoList, HandledImplantBoosterList, HandledProjectedDroneList, HandledProjectedModList from eos.enum import Enum -from eos.const import ImplantLocation, CalcType +from eos.const import ImplantLocation, CalcType, FittingSlot from eos.saveddata.ship import Ship from eos.saveddata.drone import Drone from eos.saveddata.character import Character from eos.saveddata.citadel import Citadel -from eos.saveddata.module import Module, FittingModuleState, FittingSlot, FittingHardpoint +from eos.saveddata.module import Module, FittingModuleState, FittingHardpoint from eos.utils.stats import DmgTypes from logbook import Logger @@ -892,7 +892,7 @@ class Fit(object): if self.ship is None: return - for slotType in (FittingSlot.LOW, FittingSlot.MED, FittingSlot.HIGH, FittingSlot.RIG, FittingSlot.SUBSYSTEM, FittingSlot.SERVICE): + for slotType in (FittingSlot.LOW.value, FittingSlot.MED.value, FittingSlot.HIGH.value, FittingSlot.RIG.value, FittingSlot.SUBSYSTEM.value, FittingSlot.SERVICE.value): amount = self.getSlotsFree(slotType, True) if amount > 0: for _ in range(int(amount)): diff --git a/eos/saveddata/module.py b/eos/saveddata/module.py index 34b8143c1..57f61cca8 100644 --- a/eos/saveddata/module.py +++ b/eos/saveddata/module.py @@ -23,7 +23,7 @@ from logbook import Logger from sqlalchemy.orm import reconstructor, validates import eos.db -from eos.const import FittingSlot, FittingModuleState, FittingHardpoint +from eos.const import FittingModuleState, FittingHardpoint, FittingSlot from eos.effectHandlerHelpers import HandledCharge, HandledItem from eos.enum import Enum from eos.modifiedAttributeDict import ChargeAttrShortcut, ItemAttrShortcut, ModifiedAttributeDict @@ -720,12 +720,12 @@ class Module(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut): @staticmethod def calculateSlot(item): effectSlotMap = { - "rigSlot" : FittingSlot.RIG, - "loPower" : FittingSlot.LOW, - "medPower" : FittingSlot.MED, - "hiPower" : FittingSlot.HIGH, - "subSystem" : FittingSlot.SUBSYSTEM, - "serviceSlot": FittingSlot.SERVICE + "rigSlot" : FittingSlot.RIG.value, + "loPower" : FittingSlot.LOW.value, + "medPower" : FittingSlot.MED.value, + "hiPower" : FittingSlot.HIGH.value, + "subSystem" : FittingSlot.SUBSYSTEM.value, + "serviceSlot": FittingSlot.SERVICE.value } if item is None: return None diff --git a/gui/builtinAdditionPanes/fighterView.py b/gui/builtinAdditionPanes/fighterView.py index 60b31536d..61402eb03 100644 --- a/gui/builtinAdditionPanes/fighterView.py +++ b/gui/builtinAdditionPanes/fighterView.py @@ -25,7 +25,8 @@ from gui.builtinMarketBrowser.events import ItemSelected, ITEM_SELECTED import gui.mainFrame import gui.display as d from gui.builtinViewColumns.state import State -from eos.saveddata.module import FittingSlot +#from eos.saveddata.module import FittingSlot +from eos.const import FittingSlot from gui.contextMenu import ContextMenu from gui.utils.staticHelpers import DragDropHelper from service.fit import Fit diff --git a/gui/builtinViewColumns/baseIcon.py b/gui/builtinViewColumns/baseIcon.py index 536d90da9..e5cbd62f2 100644 --- a/gui/builtinViewColumns/baseIcon.py +++ b/gui/builtinViewColumns/baseIcon.py @@ -2,8 +2,9 @@ import wx from eos.saveddata.implant import Implant from eos.saveddata.drone import Drone -from eos.saveddata.module import Module, FittingSlot, Rack +from eos.saveddata.module import Module, Rack from eos.saveddata.fit import Fit +from eos.const import FittingSlot from gui.viewColumn import ViewColumn @@ -32,7 +33,7 @@ class BaseIcon(ViewColumn): return self.shipImage elif isinstance(stuff, Module): if stuff.isEmpty: - return self.fittingView.imageList.GetImageIndex("slot_%s_small" % FittingSlot.getName(stuff.slot).lower(), + return self.fittingView.imageList.GetImageIndex("slot_%s_small" % FittingSlot(stuff.slot).name.lower(), "gui") else: return self.loadIconFile(stuff.item.iconID or "") diff --git a/gui/builtinViewColumns/baseName.py b/gui/builtinViewColumns/baseName.py index d6710c782..cad1eebd0 100644 --- a/gui/builtinViewColumns/baseName.py +++ b/gui/builtinViewColumns/baseName.py @@ -25,8 +25,9 @@ from eos.saveddata.cargo import Cargo from eos.saveddata.implant import Implant from eos.saveddata.drone import Drone from eos.saveddata.fighter import Fighter -from eos.saveddata.module import Module, FittingSlot, Rack +from eos.saveddata.module import Module, Rack from eos.saveddata.fit import Fit +from eos.const import FittingSlot from service.fit import Fit as FitSvc from service.market import Market from gui.viewColumn import ViewColumn @@ -75,7 +76,7 @@ class BaseName(ViewColumn): if stuff.slot == FittingSlot.MODE: return '─ Tactical Mode ─' else: - return '─ {} {} Slot{}─'.format(stuff.num, FittingSlot.getName(stuff.slot).capitalize(), '' if stuff.num == 1 else 's') + return '─ {} {} Slot{}─'.format(stuff.num, FittingSlot(stuff.slot).name.capitalize(), '' if stuff.num == 1 else 's') else: return "" elif isinstance(stuff, Module): @@ -89,7 +90,7 @@ class BaseName(ViewColumn): return "{} {}".format(type.name, stuff.item.name[-1:]) if stuff.isEmpty: - return "%s Slot" % FittingSlot.getName(stuff.slot).capitalize() + return "%s Slot" % FittingSlot(stuff.slot).name.capitalize() else: return stuff.item.name elif isinstance(stuff, Implant): diff --git a/gui/builtinViewColumns/state.py b/gui/builtinViewColumns/state.py index 14a797561..793fbd57e 100644 --- a/gui/builtinViewColumns/state.py +++ b/gui/builtinViewColumns/state.py @@ -46,7 +46,7 @@ class State(ViewColumn): def getToolTip(self, mod): if isinstance(mod, Module) and not mod.isEmpty: - return State_.getName(mod.state).title() + return State_(mod.state).name.title() def getImageId(self, stuff): generic_active = self.fittingView.imageList.GetImageIndex("state_%s_small" % State_(1).name.lower(), "gui") diff --git a/gui/builtinViews/fittingView.py b/gui/builtinViews/fittingView.py index 83d9e43df..7b5646fa4 100644 --- a/gui/builtinViews/fittingView.py +++ b/gui/builtinViews/fittingView.py @@ -30,7 +30,8 @@ import gui.globalEvents as GE import gui.mainFrame import gui.multiSwitch from eos.saveddata.mode import Mode -from eos.saveddata.module import Module, Rack, FittingSlot +from eos.saveddata.module import Module, Rack +from eos.const import FittingSlot from gui.bitmap_loader import BitmapLoader from gui.builtinMarketBrowser.events import ITEM_SELECTED from gui.builtinShipBrowser.events import EVT_FIT_REMOVED, EVT_FIT_RENAMED, EVT_FIT_SELECTED, FitSelected @@ -648,8 +649,7 @@ class FittingView(d.Display): slotMap = {} # test for too many modules (happens with t3s / CCP change in slot layout) - for slotType in FittingSlot.getTypes(): - slot = FittingSlot.getValue(slotType) + for slot in [e.value for e in FittingSlot]: slotMap[slot] = fit.getSlotsFree(slot) < 0 for i, mod in enumerate(self.mods): @@ -735,8 +735,8 @@ class FittingView(d.Display): return slotMap = {} - for slotType in FittingSlot.getTypes(): - slot = FittingSlot.getValue(slotType) + + for slot in [e.value for e in FittingSlot]: slotMap[slot] = fit.getSlotsFree(slot) < 0 padding = 2 diff --git a/service/character.py b/service/character.py index 1dc14c7c6..7e95c5f82 100644 --- a/service/character.py +++ b/service/character.py @@ -37,7 +37,8 @@ from service.esi import Esi from eos.saveddata.implant import Implant as es_Implant from eos.saveddata.character import Character as es_Character, Skill -from eos.saveddata.module import FittingSlot as es_Slot, Module as es_Module +from eos.saveddata.module import Module as es_Module +from eos.const import FittingSlot as es_Slot from eos.saveddata.fighter import Fighter as es_Fighter pyfalog = Logger(__name__) diff --git a/service/port/dna.py b/service/port/dna.py index 6181a0d76..8c383fb82 100644 --- a/service/port/dna.py +++ b/service/port/dna.py @@ -28,8 +28,9 @@ from eos.saveddata.citadel import Citadel from eos.saveddata.drone import Drone from eos.saveddata.fighter import Fighter from eos.saveddata.fit import Fit -from eos.saveddata.module import Module, FittingModuleState, FittingSlot +from eos.saveddata.module import Module, FittingModuleState from eos.saveddata.ship import Ship +from eos.const import FittingSlot from service.fit import Fit as svcFit from service.market import Market diff --git a/service/port/efs.py b/service/port/efs.py index 84c8a7001..8d253c621 100755 --- a/service/port/efs.py +++ b/service/port/efs.py @@ -7,11 +7,12 @@ from config import version as pyfaVersion from service.fit import Fit from service.market import Market from eos.enum import Enum -from eos.saveddata.module import FittingHardpoint, FittingSlot, Module, FittingModuleState +from eos.saveddata.module import FittingHardpoint, Module, FittingModuleState from eos.saveddata.drone import Drone from eos.effectHandlerHelpers import HandledList from eos.db import gamedata_session, getCategory, getAttributeInfo, getGroup from eos.gamedata import Attribute, Effect, Group, Item, ItemEffect +from eos.const import FittingSlot from eos.utils.spoolSupport import SpoolType, SpoolOptions from gui.fitCommands.calc.fitAddModule import FitAddModuleCommand from gui.fitCommands.calc.fitRemoveModule import FitRemoveModuleCommand diff --git a/service/port/eft.py b/service/port/eft.py index 43a936529..a16a77a80 100644 --- a/service/port/eft.py +++ b/service/port/eft.py @@ -32,9 +32,10 @@ from eos.saveddata.booster import Booster from eos.saveddata.drone import Drone from eos.saveddata.fighter import Fighter from eos.saveddata.implant import Implant -from eos.saveddata.module import Module, FittingModuleState, FittingSlot +from eos.saveddata.module import Module, FittingModuleState from eos.saveddata.ship import Ship from eos.saveddata.fit import Fit +from eos.const import FittingSlot from service.fit import Fit as svcFit from service.market import Market from service.port.muta import parseMutant, renderMutant @@ -95,7 +96,7 @@ def exportEft(fit, options): rackLines.append('{}{}{}'.format(modName, modOfflineSuffix, mutationSuffix)) else: rackLines.append('[Empty {} slot]'.format( - FittingSlot.getName(slotType).capitalize() if slotType is not None else '')) + FittingSlot(slotType).name.capitalize() if slotType is not None else '')) if rackLines: modSection.append('\n'.join(rackLines)) if modSection: diff --git a/service/port/esi.py b/service/port/esi.py index b1cc8aee7..c9c8ed708 100644 --- a/service/port/esi.py +++ b/service/port/esi.py @@ -28,7 +28,8 @@ from eos.saveddata.citadel import Citadel from eos.saveddata.drone import Drone from eos.saveddata.fighter import Fighter from eos.saveddata.fit import Fit -from eos.saveddata.module import Module, FittingModuleState, FittingSlot +from eos.saveddata.module import Module, FittingModuleState +from eos.const import FittingSlot from eos.saveddata.ship import Ship from service.fit import Fit as svcFit from service.market import Market diff --git a/service/port/xml.py b/service/port/xml.py index 5f708cc64..7fcb05117 100644 --- a/service/port/xml.py +++ b/service/port/xml.py @@ -28,8 +28,9 @@ from eos.saveddata.citadel import Citadel from eos.saveddata.drone import Drone from eos.saveddata.fighter import Fighter from eos.saveddata.fit import Fit -from eos.saveddata.module import Module, FittingModuleState, FittingSlot +from eos.saveddata.module import Module, FittingModuleState from eos.saveddata.ship import Ship +from eos.const import FittingSlot from service.fit import Fit as svcFit from service.market import Market from utils.strfunctions import sequential_rep, replace_ltgt @@ -278,7 +279,7 @@ def exportXml(iportuser, *fits): hardware = doc.createElement("hardware") hardware.setAttribute("type", module.item.name) - slotName = FittingSlot.getName(slot).lower() + slotName = FittingSlot(slot).name.lower() slotName = slotName if slotName != "high" else "hi" hardware.setAttribute("slot", "%s slot %d" % (slotName, slotId)) fitting.appendChild(hardware) From afa8c3c53ad2ee43cdfc15a8217c81443970e23e Mon Sep 17 00:00:00 2001 From: Indiction Date: Sat, 9 Mar 2019 18:59:43 +0100 Subject: [PATCH 06/12] Replaced eos.enum by enum. Removed unused enum import. Found another Enum to move. --- eos/const.py | 25 ++++++- eos/enum.py | 23 ------ eos/saveddata/fit.py | 1 - eos/saveddata/module.py | 2 +- .../attributeGrouping.py | 75 +++++++------------ gui/builtinItemStatsViews/itemAttributes.py | 2 +- service/esi.py | 1 - service/esiAccess.py | 1 - service/port/efs.py | 1 - service/port/eft.py | 1 - service/port/multibuy.py | 1 - 11 files changed, 53 insertions(+), 80 deletions(-) delete mode 100644 eos/enum.py diff --git a/eos/const.py b/eos/const.py index 63b7cc533..dfb1705ce 100644 --- a/eos/const.py +++ b/eos/const.py @@ -17,8 +17,7 @@ # along with pyfa. If not, see . # ============================================================================= -from eos.enum import Enum -from enum import IntEnum,unique +from enum import Enum,IntEnum,unique,auto @unique class FittingSlot(IntEnum): @@ -83,6 +82,25 @@ class FittingHardpoint(IntEnum): MISSILE = 1 TURRET = 2 +@unique +class FittingAttrGroup(IntEnum): + """ + Define the various groups of attributes + """ + FITTING = auto() + STRUCTURE = auto() + SHIELD = auto() + ARMOR = auto() + TARGETING = auto() + EWAR_RESISTS = auto() + CAPACITOR = auto() + SHARED_FACILITIES = auto() + FIGHTER_FACILITIES = auto() + ON_DEATH = auto() + JUMP_SYSTEMS = auto() + PROPULSIONS = auto() + FIGHTERS = auto() + @unique class EsiLoginMethod(IntEnum): """ @@ -126,7 +144,8 @@ class PortEftOptions(IntEnum): MUTATIONS = 2 LOADED_CHARGES = 3 -class PortEftRigSize(Enum): +@unique +class PortEftRigSize(IntEnum): """ Contains different sizes of ship rigs """ diff --git a/eos/enum.py b/eos/enum.py deleted file mode 100644 index 12e8e09e1..000000000 --- a/eos/enum.py +++ /dev/null @@ -1,23 +0,0 @@ -class Enum(object): - def __init__(self): - pass - - @classmethod - def getTypes(cls): - for stuff in cls.__dict__: - if stuff.upper() == stuff: - yield stuff - - @classmethod - def getName(cls, v): - map = getattr(cls, "_map", None) - if map is None: - map = cls._map = {} - for type in cls.getTypes(): - map[cls.getValue(type)] = type - - return map.get(v) - - @classmethod - def getValue(cls, type): - return cls.__dict__[type] diff --git a/eos/saveddata/fit.py b/eos/saveddata/fit.py index 0daff8b50..028c20379 100644 --- a/eos/saveddata/fit.py +++ b/eos/saveddata/fit.py @@ -28,7 +28,6 @@ from sqlalchemy.orm import validates, reconstructor import eos.db from eos import capSim from eos.effectHandlerHelpers import HandledModuleList, HandledDroneCargoList, HandledImplantBoosterList, HandledProjectedDroneList, HandledProjectedModList -from eos.enum import Enum from eos.const import ImplantLocation, CalcType, FittingSlot from eos.saveddata.ship import Ship from eos.saveddata.drone import Drone diff --git a/eos/saveddata/module.py b/eos/saveddata/module.py index 57f61cca8..8a842d6c6 100644 --- a/eos/saveddata/module.py +++ b/eos/saveddata/module.py @@ -25,7 +25,7 @@ from sqlalchemy.orm import reconstructor, validates import eos.db from eos.const import FittingModuleState, FittingHardpoint, FittingSlot from eos.effectHandlerHelpers import HandledCharge, HandledItem -from eos.enum import Enum +from enum import Enum from eos.modifiedAttributeDict import ChargeAttrShortcut, ItemAttrShortcut, ModifiedAttributeDict from eos.saveddata.citadel import Citadel from eos.saveddata.mutator import Mutator diff --git a/gui/builtinItemStatsViews/attributeGrouping.py b/gui/builtinItemStatsViews/attributeGrouping.py index 0edccd8ca..d27b1231d 100644 --- a/gui/builtinItemStatsViews/attributeGrouping.py +++ b/gui/builtinItemStatsViews/attributeGrouping.py @@ -1,21 +1,4 @@ -from enum import Enum, auto - -# Define the various groups of attributes -class AttrGroup(Enum): - FITTING = auto() - STRUCTURE = auto() - SHIELD = auto() - ARMOR = auto() - TARGETING = auto() - EWAR_RESISTS = auto() - CAPACITOR = auto() - SHARED_FACILITIES = auto() - FIGHTER_FACILITIES = auto() - ON_DEATH = auto() - JUMP_SYSTEMS = auto() - PROPULSIONS = auto() - FIGHTERS = auto() - +from eos.const import FittingAttrGroup RequiredSkillAttrs = sum((["requiredSkill{}".format(x), "requiredSkill{}Level".format(x)] for x in range(1, 7)), []) @@ -44,7 +27,7 @@ for x in AttrGroups: # Start defining all the known attribute groups AttrGroupDict = { - AttrGroup.FITTING : { + FittingAttrGroup.FITTING : { "label" : "Fitting", "attributes": [ # parent-level attributes @@ -66,7 +49,7 @@ AttrGroupDict = { # "mass", ] }, - AttrGroup.STRUCTURE : { + FittingAttrGroup.STRUCTURE : { "label" : "Structure", "attributes": [ "hp", @@ -96,7 +79,7 @@ AttrGroupDict = { "explosiveDamageResonance" ] }, - AttrGroup.ARMOR : { + FittingAttrGroup.ARMOR : { "label": "Armor", "attributes":[ "armorHP", @@ -108,7 +91,7 @@ AttrGroupDict = { ] }, - AttrGroup.SHIELD : { + FittingAttrGroup.SHIELD : { "label": "Shield", "attributes": [ "shieldCapacity", @@ -121,7 +104,7 @@ AttrGroupDict = { ] }, - AttrGroup.EWAR_RESISTS : { + FittingAttrGroup.EWAR_RESISTS : { "label": "Electronic Warfare", "attributes": [ "ECMResistance", @@ -134,14 +117,14 @@ AttrGroupDict = { "weaponDisruptionResistance", ] }, - AttrGroup.CAPACITOR : { + FittingAttrGroup.CAPACITOR : { "label": "Capacitor", "attributes": [ "capacitorCapacity", "rechargeRate", ] }, - AttrGroup.TARGETING : { + FittingAttrGroup.TARGETING : { "label": "Targeting", "attributes": [ "maxTargetRange", @@ -159,7 +142,7 @@ AttrGroupDict = { "scanLadarStrength", ] }, - AttrGroup.SHARED_FACILITIES : { + FittingAttrGroup.SHARED_FACILITIES : { "label" : "Shared Facilities", "attributes": [ "fleetHangarCapacity", @@ -167,7 +150,7 @@ AttrGroupDict = { "maxJumpClones", ] }, - AttrGroup.FIGHTER_FACILITIES: { + FittingAttrGroup.FIGHTER_FACILITIES: { "label": "Fighter Squadron Facilities", "attributes": [ "fighterCapacity", @@ -180,7 +163,7 @@ AttrGroupDict = { "fighterStandupHeavySlots", ] }, - AttrGroup.ON_DEATH : { + FittingAttrGroup.ON_DEATH : { "label": "On Death", "attributes": [ "onDeathDamageEM", @@ -191,7 +174,7 @@ AttrGroupDict = { "onDeathSignatureRadius", ] }, - AttrGroup.JUMP_SYSTEMS : { + FittingAttrGroup.JUMP_SYSTEMS : { "label": "Jump Drive Systems", "attributes": [ "jumpDriveCapacitorNeed", @@ -205,13 +188,13 @@ AttrGroupDict = { "jumpPortalDuration", ] }, - AttrGroup.PROPULSIONS : { + FittingAttrGroup.PROPULSIONS : { "label": "Propulsion", "attributes": [ "maxVelocity" ] }, - AttrGroup.FIGHTERS : { + FittingAttrGroup.FIGHTERS : { "label": "Fighter", "attributes": [ "mass", @@ -227,25 +210,25 @@ AttrGroupDict = { } Group1 = [ - AttrGroup.FITTING, - AttrGroup.STRUCTURE, - AttrGroup.ARMOR, - AttrGroup.SHIELD, - AttrGroup.EWAR_RESISTS, - AttrGroup.CAPACITOR, - AttrGroup.TARGETING, - AttrGroup.SHARED_FACILITIES, - AttrGroup.FIGHTER_FACILITIES, - AttrGroup.ON_DEATH, - AttrGroup.JUMP_SYSTEMS, - AttrGroup.PROPULSIONS, + FittingAttrGroup.FITTING, + FittingAttrGroup.STRUCTURE, + FittingAttrGroup.ARMOR, + FittingAttrGroup.SHIELD, + FittingAttrGroup.EWAR_RESISTS, + FittingAttrGroup.CAPACITOR, + FittingAttrGroup.TARGETING, + FittingAttrGroup.SHARED_FACILITIES, + FittingAttrGroup.FIGHTER_FACILITIES, + FittingAttrGroup.ON_DEATH, + FittingAttrGroup.JUMP_SYSTEMS, + FittingAttrGroup.PROPULSIONS, ] CategoryGroups = { "Fighter" : [ - AttrGroup.FIGHTERS, - AttrGroup.SHIELD, - AttrGroup.TARGETING, + FittingAttrGroup.FIGHTERS, + FittingAttrGroup.SHIELD, + FittingAttrGroup.TARGETING, ], "Ship" : Group1, "Drone" : Group1, diff --git a/gui/builtinItemStatsViews/itemAttributes.py b/gui/builtinItemStatsViews/itemAttributes.py index 747f25066..49149484d 100644 --- a/gui/builtinItemStatsViews/itemAttributes.py +++ b/gui/builtinItemStatsViews/itemAttributes.py @@ -195,7 +195,7 @@ class ItemParams(wx.Panel): misc_parent = root # We must first deet4ermine if it's categorey already has defined groupings set for it. Otherwise, we default to just using the fitting group - order = CategoryGroups.get(self.item.category.categoryName, [AttrGroup.FITTING]) + order = CategoryGroups.get(self.item.category.categoryName, [FittingAttrGroup.FITTING]) # start building out the tree for data in [AttrGroupDict[o] for o in order]: heading = data.get("label") diff --git a/service/esi.py b/service/esi.py index ce7d9a0cf..c67ee76f8 100644 --- a/service/esi.py +++ b/service/esi.py @@ -9,7 +9,6 @@ import config import webbrowser import eos.db -from eos.enum import Enum from eos.const import EsiLoginMethod from eos.saveddata.ssocharacter import SsoCharacter from service.esiAccess import APIException, EsiSsoMode diff --git a/service/esiAccess.py b/service/esiAccess.py index 0afe2bbc3..8bb4aedcd 100644 --- a/service/esiAccess.py +++ b/service/esiAccess.py @@ -17,7 +17,6 @@ import config import base64 import datetime -from eos.enum import Enum from eos.const import EsiSsoMode, EsiEndpoints from service.settings import EsiSettings, NetworkSettings diff --git a/service/port/efs.py b/service/port/efs.py index 8d253c621..5c0a5219f 100755 --- a/service/port/efs.py +++ b/service/port/efs.py @@ -6,7 +6,6 @@ from numbers import Number from config import version as pyfaVersion from service.fit import Fit from service.market import Market -from eos.enum import Enum from eos.saveddata.module import FittingHardpoint, Module, FittingModuleState from eos.saveddata.drone import Drone from eos.effectHandlerHelpers import HandledList diff --git a/service/port/eft.py b/service/port/eft.py index a16a77a80..9b9e97743 100644 --- a/service/port/eft.py +++ b/service/port/eft.py @@ -19,7 +19,6 @@ import re -from enum import Enum from eos.const import PortEftRigSize from eos.const import PortEftOptions diff --git a/service/port/multibuy.py b/service/port/multibuy.py index 5ea6e7afa..46d7a72e1 100644 --- a/service/port/multibuy.py +++ b/service/port/multibuy.py @@ -18,7 +18,6 @@ # ============================================================================= -from enum import Enum from eos.const import PortMultiBuyOptions From 8b864692fbbd0f5a1b7164e5b2075968c74c3d39 Mon Sep 17 00:00:00 2001 From: Indiction Date: Tue, 12 Mar 2019 23:17:25 +0100 Subject: [PATCH 07/12] Moved non-EOS enum to new service/const.py. Renamed FittingAttrGroup to GuiAttrGroup --- eos/const.py | 74 +------------ .../attributeGrouping.py | 58 +++++----- gui/builtinItemStatsViews/itemAttributes.py | 5 +- service/const.py | 102 ++++++++++++++++++ service/esi.py | 4 +- service/esiAccess.py | 2 +- service/port/eft.py | 3 +- service/port/multibuy.py | 4 +- 8 files changed, 140 insertions(+), 112 deletions(-) create mode 100644 service/const.py diff --git a/eos/const.py b/eos/const.py index dfb1705ce..e0ae7c9ea 100644 --- a/eos/const.py +++ b/eos/const.py @@ -17,7 +17,8 @@ # along with pyfa. If not, see . # ============================================================================= -from enum import Enum,IntEnum,unique,auto +from enum import IntEnum,unique + @unique class FittingSlot(IntEnum): @@ -82,74 +83,3 @@ class FittingHardpoint(IntEnum): MISSILE = 1 TURRET = 2 -@unique -class FittingAttrGroup(IntEnum): - """ - Define the various groups of attributes - """ - FITTING = auto() - STRUCTURE = auto() - SHIELD = auto() - ARMOR = auto() - TARGETING = auto() - EWAR_RESISTS = auto() - CAPACITOR = auto() - SHARED_FACILITIES = auto() - FIGHTER_FACILITIES = auto() - ON_DEATH = auto() - JUMP_SYSTEMS = auto() - PROPULSIONS = auto() - FIGHTERS = auto() - -@unique -class EsiLoginMethod(IntEnum): - """ - Contains the method of ESI login - """ - SERVER = 0 - MANUAL = 1 - -@unique -class EsiSsoMode(IntEnum): - """ - Contains the mode of ESI sso mode - """ - AUTO = 0 - CUSTOM = 1 - -class EsiEndpoints(Enum): - """ - Contains the endpoint paths for the ESI access - """ - CHAR = "/v4/characters/{character_id}/" - CHAR_SKILLS = "/v4/characters/{character_id}/skills/" - CHAR_FITTINGS = "/v1/characters/{character_id}/fittings/" - CHAR_DEL_FIT = "/v1/characters/{character_id}/fittings/{fitting_id}/" - -@unique -class PortMultiBuyOptions(IntEnum): - """ - Contains different types of items to multibuy export - """ - IMPLANTS = 1 - CARGO = 2 - LOADED_CHARGES = 3 - -@unique -class PortEftOptions(IntEnum): - """ - Contains different options for eft-export - """ - IMPLANTS = 1 - MUTATIONS = 2 - LOADED_CHARGES = 3 - -@unique -class PortEftRigSize(IntEnum): - """ - Contains different sizes of ship rigs - """ - SMALL = 1 - MEDIUM = 2 - LARGE = 3 - CAPITAL = 4 diff --git a/gui/builtinItemStatsViews/attributeGrouping.py b/gui/builtinItemStatsViews/attributeGrouping.py index d27b1231d..c93e97010 100644 --- a/gui/builtinItemStatsViews/attributeGrouping.py +++ b/gui/builtinItemStatsViews/attributeGrouping.py @@ -1,4 +1,4 @@ -from eos.const import FittingAttrGroup +from service.const import GuiAttrGroup RequiredSkillAttrs = sum((["requiredSkill{}".format(x), "requiredSkill{}Level".format(x)] for x in range(1, 7)), []) @@ -27,7 +27,7 @@ for x in AttrGroups: # Start defining all the known attribute groups AttrGroupDict = { - FittingAttrGroup.FITTING : { + GuiAttrGroup.FITTING : { "label" : "Fitting", "attributes": [ # parent-level attributes @@ -49,7 +49,7 @@ AttrGroupDict = { # "mass", ] }, - FittingAttrGroup.STRUCTURE : { + GuiAttrGroup.STRUCTURE : { "label" : "Structure", "attributes": [ "hp", @@ -79,7 +79,7 @@ AttrGroupDict = { "explosiveDamageResonance" ] }, - FittingAttrGroup.ARMOR : { + GuiAttrGroup.ARMOR : { "label": "Armor", "attributes":[ "armorHP", @@ -91,7 +91,7 @@ AttrGroupDict = { ] }, - FittingAttrGroup.SHIELD : { + GuiAttrGroup.SHIELD : { "label": "Shield", "attributes": [ "shieldCapacity", @@ -104,7 +104,7 @@ AttrGroupDict = { ] }, - FittingAttrGroup.EWAR_RESISTS : { + GuiAttrGroup.EWAR_RESISTS : { "label": "Electronic Warfare", "attributes": [ "ECMResistance", @@ -117,14 +117,14 @@ AttrGroupDict = { "weaponDisruptionResistance", ] }, - FittingAttrGroup.CAPACITOR : { + GuiAttrGroup.CAPACITOR : { "label": "Capacitor", "attributes": [ "capacitorCapacity", "rechargeRate", ] }, - FittingAttrGroup.TARGETING : { + GuiAttrGroup.TARGETING : { "label": "Targeting", "attributes": [ "maxTargetRange", @@ -142,7 +142,7 @@ AttrGroupDict = { "scanLadarStrength", ] }, - FittingAttrGroup.SHARED_FACILITIES : { + GuiAttrGroup.SHARED_FACILITIES : { "label" : "Shared Facilities", "attributes": [ "fleetHangarCapacity", @@ -150,7 +150,7 @@ AttrGroupDict = { "maxJumpClones", ] }, - FittingAttrGroup.FIGHTER_FACILITIES: { + GuiAttrGroup.FIGHTER_FACILITIES: { "label": "Fighter Squadron Facilities", "attributes": [ "fighterCapacity", @@ -163,7 +163,7 @@ AttrGroupDict = { "fighterStandupHeavySlots", ] }, - FittingAttrGroup.ON_DEATH : { + GuiAttrGroup.ON_DEATH : { "label": "On Death", "attributes": [ "onDeathDamageEM", @@ -174,7 +174,7 @@ AttrGroupDict = { "onDeathSignatureRadius", ] }, - FittingAttrGroup.JUMP_SYSTEMS : { + GuiAttrGroup.JUMP_SYSTEMS : { "label": "Jump Drive Systems", "attributes": [ "jumpDriveCapacitorNeed", @@ -188,13 +188,13 @@ AttrGroupDict = { "jumpPortalDuration", ] }, - FittingAttrGroup.PROPULSIONS : { + GuiAttrGroup.PROPULSIONS : { "label": "Propulsion", "attributes": [ "maxVelocity" ] }, - FittingAttrGroup.FIGHTERS : { + GuiAttrGroup.FIGHTERS : { "label": "Fighter", "attributes": [ "mass", @@ -210,25 +210,25 @@ AttrGroupDict = { } Group1 = [ - FittingAttrGroup.FITTING, - FittingAttrGroup.STRUCTURE, - FittingAttrGroup.ARMOR, - FittingAttrGroup.SHIELD, - FittingAttrGroup.EWAR_RESISTS, - FittingAttrGroup.CAPACITOR, - FittingAttrGroup.TARGETING, - FittingAttrGroup.SHARED_FACILITIES, - FittingAttrGroup.FIGHTER_FACILITIES, - FittingAttrGroup.ON_DEATH, - FittingAttrGroup.JUMP_SYSTEMS, - FittingAttrGroup.PROPULSIONS, + GuiAttrGroup.FITTING, + GuiAttrGroup.STRUCTURE, + GuiAttrGroup.ARMOR, + GuiAttrGroup.SHIELD, + GuiAttrGroup.EWAR_RESISTS, + GuiAttrGroup.CAPACITOR, + GuiAttrGroup.TARGETING, + GuiAttrGroup.SHARED_FACILITIES, + GuiAttrGroup.FIGHTER_FACILITIES, + GuiAttrGroup.ON_DEATH, + GuiAttrGroup.JUMP_SYSTEMS, + GuiAttrGroup.PROPULSIONS, ] CategoryGroups = { "Fighter" : [ - FittingAttrGroup.FIGHTERS, - FittingAttrGroup.SHIELD, - FittingAttrGroup.TARGETING, + GuiAttrGroup.FIGHTERS, + GuiAttrGroup.SHIELD, + GuiAttrGroup.TARGETING, ], "Ship" : Group1, "Drone" : Group1, diff --git a/gui/builtinItemStatsViews/itemAttributes.py b/gui/builtinItemStatsViews/itemAttributes.py index 49149484d..fd1424687 100644 --- a/gui/builtinItemStatsViews/itemAttributes.py +++ b/gui/builtinItemStatsViews/itemAttributes.py @@ -1,15 +1,14 @@ import csv -import config # noinspection PyPackageRequirements import wx import wx.lib.agw.hypertreelist -from gui.builtinItemStatsViews.helpers import AutoListCtrl from gui.bitmap_loader import BitmapLoader from gui.utils.numberFormatter import formatAmount, roundDec from enum import IntEnum from gui.builtinItemStatsViews.attributeGrouping import * +from service.const import GuiAttrGroup class AttributeView(IntEnum): @@ -195,7 +194,7 @@ class ItemParams(wx.Panel): misc_parent = root # We must first deet4ermine if it's categorey already has defined groupings set for it. Otherwise, we default to just using the fitting group - order = CategoryGroups.get(self.item.category.categoryName, [FittingAttrGroup.FITTING]) + order = CategoryGroups.get(self.item.category.categoryName, [GuiAttrGroup.FITTING]) # start building out the tree for data in [AttrGroupDict[o] for o in order]: heading = data.get("label") diff --git a/service/const.py b/service/const.py new file mode 100644 index 000000000..990f71784 --- /dev/null +++ b/service/const.py @@ -0,0 +1,102 @@ +# ============================================================================= +# Copyright (C) 2019 Ryan Holmes +# +# This file is part of pyfa. +# +# pyfa is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# pyfa 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 General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with pyfa. If not, see . +# ============================================================================= + +from enum import Enum, IntEnum, unique, auto + + +@unique +class EsiLoginMethod(IntEnum): + """ + Contains the method of ESI login + """ + SERVER = 0 + MANUAL = 1 + + +@unique +class EsiSsoMode(IntEnum): + """ + Contains the mode of ESI sso mode + """ + AUTO = 0 + CUSTOM = 1 + + +class EsiEndpoints(Enum): + """ + Contains the endpoint paths for the ESI access + """ + CHAR = "/v4/characters/{character_id}/" + CHAR_SKILLS = "/v4/characters/{character_id}/skills/" + CHAR_FITTINGS = "/v1/characters/{character_id}/fittings/" + CHAR_DEL_FIT = "/v1/characters/{character_id}/fittings/{fitting_id}/" + + +@unique +class PortMultiBuyOptions(IntEnum): + """ + Contains different types of items for multibuy export + """ + IMPLANTS = 1 + CARGO = 2 + LOADED_CHARGES = 3 + + +@unique +class PortEftOptions(IntEnum): + """ + Contains different options for eft-export + """ + IMPLANTS = 1 + MUTATIONS = 2 + LOADED_CHARGES = 3 + + +@unique +class PortEftRigSize(IntEnum): + """ + Contains different sizes of ship rigs + This enum is not actively used, but maybe useful someday. + """ + SMALL = 1 + MEDIUM = 2 + LARGE = 3 + CAPITAL = 4 + + +@unique +class GuiAttrGroup(IntEnum): + """ + Define the various groups of attributes. + This enum is used for GUI functions and getting redefined in + /gui/builtinItemStatsViews/attributeGrouping.py + """ + FITTING = auto() + STRUCTURE = auto() + SHIELD = auto() + ARMOR = auto() + TARGETING = auto() + EWAR_RESISTS = auto() + CAPACITOR = auto() + SHARED_FACILITIES = auto() + FIGHTER_FACILITIES = auto() + ON_DEATH = auto() + JUMP_SYSTEMS = auto() + PROPULSIONS = auto() + FIGHTERS = auto() \ No newline at end of file diff --git a/service/esi.py b/service/esi.py index c67ee76f8..88b704664 100644 --- a/service/esi.py +++ b/service/esi.py @@ -9,9 +9,9 @@ import config import webbrowser import eos.db -from eos.const import EsiLoginMethod +from service.const import EsiLoginMethod, EsiSsoMode from eos.saveddata.ssocharacter import SsoCharacter -from service.esiAccess import APIException, EsiSsoMode +from service.esiAccess import APIException import gui.globalEvents as GE from gui.ssoLogin import SsoLogin, SsoLoginServer from service.server import StoppableHTTPServer, AuthHandler diff --git a/service/esiAccess.py b/service/esiAccess.py index 8bb4aedcd..1b7a191c8 100644 --- a/service/esiAccess.py +++ b/service/esiAccess.py @@ -17,7 +17,7 @@ import config import base64 import datetime -from eos.const import EsiSsoMode, EsiEndpoints +from service.const import EsiSsoMode, EsiEndpoints from service.settings import EsiSettings, NetworkSettings from requests import Session diff --git a/service/port/eft.py b/service/port/eft.py index 9b9e97743..66b6aaba9 100644 --- a/service/port/eft.py +++ b/service/port/eft.py @@ -19,8 +19,7 @@ import re -from eos.const import PortEftRigSize -from eos.const import PortEftOptions +from service.const import PortEftOptions, PortEftRigSize from logbook import Logger diff --git a/service/port/multibuy.py b/service/port/multibuy.py index 46d7a72e1..bc63ec6b1 100644 --- a/service/port/multibuy.py +++ b/service/port/multibuy.py @@ -18,9 +18,7 @@ # ============================================================================= -from eos.const import PortMultiBuyOptions - - +from service.const import PortMultiBuyOptions MULTIBUY_OPTIONS = ( (PortMultiBuyOptions.LOADED_CHARGES.value, 'Loaded Charges', 'Export charges loaded into modules', True), From 9a16c579eb8a098274165f22e98e129ecdc58d1f Mon Sep 17 00:00:00 2001 From: Ryan Holmes Date: Thu, 14 Mar 2019 12:30:59 -0400 Subject: [PATCH 08/12] fixing various imports to point to eos.const instead of old locations --- _development/helpers.py | 3 ++- eos/effects/doomsdayaoeneut.py | 2 +- eos/effects/energyneutralizerfalloff.py | 2 +- eos/effects/entityenergyneutralizerfalloff.py | 2 +- eos/effects/structureenergyneutralizerfalloff.py | 2 +- eos/effects/structurewarpscrambleblockmwdwithnpceffect.py | 2 +- eos/effects/warpdisruptsphere.py | 2 +- eos/effects/warpscrambleblockmwdwithnpceffect.py | 2 +- eos/graph/fitDps.py | 2 +- eos/saveddata/fit.py | 3 ++- gui/builtinAdditionPanes/implantView.py | 2 +- gui/builtinContextMenus/moduleAmmoPicker.py | 2 +- gui/builtinStatsViews/resourcesViewFull.py | 2 +- gui/builtinViewColumns/state.py | 3 ++- gui/fitCommands/calc/fitAddModule.py | 3 ++- gui/fitCommands/calc/fitAddProjectedEnv.py | 3 ++- gui/fitCommands/calc/fitAddProjectedModule.py | 3 ++- gui/fitCommands/calc/fitImportMutatedModule.py | 3 ++- gui/fitCommands/calc/fitReplaceModule.py | 3 ++- gui/fitCommands/guiAddImplant.py | 2 +- service/fit.py | 5 +++-- service/fitDeprecated.py | 3 ++- service/port/dna.py | 4 ++-- service/port/efs.py | 3 ++- service/port/eft.py | 4 ++-- service/port/esi.py | 4 ++-- service/port/port.py | 2 +- service/port/xml.py | 4 ++-- 28 files changed, 44 insertions(+), 33 deletions(-) diff --git a/_development/helpers.py b/_development/helpers.py index 53d44201f..3f4635891 100644 --- a/_development/helpers.py +++ b/_development/helpers.py @@ -129,7 +129,8 @@ def Saveddata(): from eos.saveddata.ship import Ship from eos.saveddata.fit import Fit from eos.saveddata.character import Character - from eos.saveddata.module import Module, FittingModuleState + from eos.saveddata.module import Module + from eos.const import FittingModuleState from eos.saveddata.citadel import Citadel from eos.saveddata.booster import Booster diff --git a/eos/effects/doomsdayaoeneut.py b/eos/effects/doomsdayaoeneut.py index d5263e15b..6f9cd2f5e 100644 --- a/eos/effects/doomsdayaoeneut.py +++ b/eos/effects/doomsdayaoeneut.py @@ -3,7 +3,7 @@ # Used by: # Module: Energy Neutralization Burst Projector # Structure Module: Standup Energy Neutralization Burst Projector -from eos.saveddata.module import FittingModuleState +from eos.const import FittingModuleState from eos.modifiedAttributeDict import ModifiedAttributeDict type = "active", "projected" diff --git a/eos/effects/energyneutralizerfalloff.py b/eos/effects/energyneutralizerfalloff.py index 31f94fa5e..2ee279d44 100644 --- a/eos/effects/energyneutralizerfalloff.py +++ b/eos/effects/energyneutralizerfalloff.py @@ -2,7 +2,7 @@ # # Used by: # Modules from group: Energy Neutralizer (54 of 54) -from eos.saveddata.module import FittingModuleState +from eos.const import FittingModuleState from eos.modifiedAttributeDict import ModifiedAttributeDict type = "active", "projected" diff --git a/eos/effects/entityenergyneutralizerfalloff.py b/eos/effects/entityenergyneutralizerfalloff.py index 8edfe8adf..ade55d190 100644 --- a/eos/effects/entityenergyneutralizerfalloff.py +++ b/eos/effects/entityenergyneutralizerfalloff.py @@ -2,7 +2,7 @@ # # Used by: # Drones from group: Energy Neutralizer Drone (3 of 3) -from eos.saveddata.module import FittingModuleState +from eos.const import FittingModuleState from eos.modifiedAttributeDict import ModifiedAttributeDict type = "active", "projected" diff --git a/eos/effects/structureenergyneutralizerfalloff.py b/eos/effects/structureenergyneutralizerfalloff.py index 73d7db41d..284ed616e 100644 --- a/eos/effects/structureenergyneutralizerfalloff.py +++ b/eos/effects/structureenergyneutralizerfalloff.py @@ -2,7 +2,7 @@ # # Used by: # Structure Modules from group: Structure Energy Neutralizer (5 of 5) -from eos.saveddata.module import FittingModuleState +from eos.const import FittingModuleState from eos.modifiedAttributeDict import ModifiedAttributeDict type = "active", "projected" diff --git a/eos/effects/structurewarpscrambleblockmwdwithnpceffect.py b/eos/effects/structurewarpscrambleblockmwdwithnpceffect.py index abe0c562b..4b342e0ec 100644 --- a/eos/effects/structurewarpscrambleblockmwdwithnpceffect.py +++ b/eos/effects/structurewarpscrambleblockmwdwithnpceffect.py @@ -2,7 +2,7 @@ # # Used by: # Structure Modules from group: Structure Warp Scrambler (2 of 2) -from eos.saveddata.module import FittingModuleState +from eos.const import FittingModuleState # Not used by any item runTime = "early" diff --git a/eos/effects/warpdisruptsphere.py b/eos/effects/warpdisruptsphere.py index e131b9d0c..5a5878fd4 100644 --- a/eos/effects/warpdisruptsphere.py +++ b/eos/effects/warpdisruptsphere.py @@ -7,7 +7,7 @@ # # Used by: # Modules from group: Warp Disrupt Field Generator (7 of 7) -from eos.saveddata.module import FittingModuleState +from eos.const import FittingModuleState type = "projected", "active" runTime = "early" diff --git a/eos/effects/warpscrambleblockmwdwithnpceffect.py b/eos/effects/warpscrambleblockmwdwithnpceffect.py index cf47a4ed9..4b3ee34cb 100644 --- a/eos/effects/warpscrambleblockmwdwithnpceffect.py +++ b/eos/effects/warpscrambleblockmwdwithnpceffect.py @@ -2,7 +2,7 @@ # # Used by: # Modules named like: Warp Scrambler (27 of 27) -from eos.saveddata.module import FittingModuleState +from eos.const import FittingModuleState runTime = "early" type = "projected", "active" diff --git a/eos/graph/fitDps.py b/eos/graph/fitDps.py index 65b855dbd..56f0089e1 100644 --- a/eos/graph/fitDps.py +++ b/eos/graph/fitDps.py @@ -20,7 +20,7 @@ from math import log, sin, radians, exp from eos.graph import Graph -from eos.saveddata.module import FittingModuleState, FittingHardpoint +from eos.const import FittingModuleState, FittingHardpoint from logbook import Logger pyfalog = Logger(__name__) diff --git a/eos/saveddata/fit.py b/eos/saveddata/fit.py index 028c20379..ff1ee24e2 100644 --- a/eos/saveddata/fit.py +++ b/eos/saveddata/fit.py @@ -33,7 +33,8 @@ from eos.saveddata.ship import Ship from eos.saveddata.drone import Drone from eos.saveddata.character import Character from eos.saveddata.citadel import Citadel -from eos.saveddata.module import Module, FittingModuleState, FittingHardpoint +from eos.const import FittingModuleState, FittingHardpoint +from eos.saveddata.module import Module from eos.utils.stats import DmgTypes from logbook import Logger diff --git a/gui/builtinAdditionPanes/implantView.py b/gui/builtinAdditionPanes/implantView.py index 0b8521cea..9b7f881f8 100644 --- a/gui/builtinAdditionPanes/implantView.py +++ b/gui/builtinAdditionPanes/implantView.py @@ -26,7 +26,7 @@ from gui.builtinViewColumns.state import State from gui.utils.staticHelpers import DragDropHelper from gui.contextMenu import ContextMenu import gui.globalEvents as GE -from eos.saveddata.fit import ImplantLocation +from eos.const import ImplantLocation from service.fit import Fit from service.market import Market import gui.fitCommands as cmd diff --git a/gui/builtinContextMenus/moduleAmmoPicker.py b/gui/builtinContextMenus/moduleAmmoPicker.py index fec9ab4e0..4b4719ecc 100644 --- a/gui/builtinContextMenus/moduleAmmoPicker.py +++ b/gui/builtinContextMenus/moduleAmmoPicker.py @@ -5,7 +5,7 @@ import wx import gui.fitCommands as cmd import gui.mainFrame -from eos.saveddata.module import FittingHardpoint +from eos.const import FittingHardpoint from gui.bitmap_loader import BitmapLoader from gui.contextMenu import ContextMenu from service.market import Market diff --git a/gui/builtinStatsViews/resourcesViewFull.py b/gui/builtinStatsViews/resourcesViewFull.py index 79bc9533c..2ae4fa9dd 100644 --- a/gui/builtinStatsViews/resourcesViewFull.py +++ b/gui/builtinStatsViews/resourcesViewFull.py @@ -26,7 +26,7 @@ import gui.mainFrame from gui.chrome_tabs import EVT_NOTEBOOK_PAGE_CHANGED from gui.utils import fonts -from eos.saveddata.module import FittingHardpoint +from eos.const import FittingHardpoint from gui.utils.numberFormatter import formatAmount diff --git a/gui/builtinViewColumns/state.py b/gui/builtinViewColumns/state.py index 793fbd57e..7c75baccc 100644 --- a/gui/builtinViewColumns/state.py +++ b/gui/builtinViewColumns/state.py @@ -24,7 +24,8 @@ import wx from eos.saveddata.fit import Fit from eos.saveddata.implant import Implant from eos.saveddata.drone import Drone -from eos.saveddata.module import Module, FittingModuleState as State_, Rack +from eos.saveddata.module import Module, Rack +from eos.const import FittingModuleState as State_ from gui.viewColumn import ViewColumn import gui.mainFrame diff --git a/gui/fitCommands/calc/fitAddModule.py b/gui/fitCommands/calc/fitAddModule.py index 4bdf057c7..75611de28 100644 --- a/gui/fitCommands/calc/fitAddModule.py +++ b/gui/fitCommands/calc/fitAddModule.py @@ -1,5 +1,6 @@ import wx -from eos.saveddata.module import Module, FittingModuleState +from eos.saveddata.module import Module +from eos.const import FittingModuleState import eos.db from logbook import Logger from service.fit import Fit diff --git a/gui/fitCommands/calc/fitAddProjectedEnv.py b/gui/fitCommands/calc/fitAddProjectedEnv.py index 90af881a9..87d1bd890 100644 --- a/gui/fitCommands/calc/fitAddProjectedEnv.py +++ b/gui/fitCommands/calc/fitAddProjectedEnv.py @@ -1,5 +1,6 @@ import wx -from eos.saveddata.module import Module, FittingModuleState +from eos.saveddata.module import Module +from eos.const import FittingModuleState import eos.db from logbook import Logger pyfalog = Logger(__name__) diff --git a/gui/fitCommands/calc/fitAddProjectedModule.py b/gui/fitCommands/calc/fitAddProjectedModule.py index 4531ea8b5..089705ba1 100644 --- a/gui/fitCommands/calc/fitAddProjectedModule.py +++ b/gui/fitCommands/calc/fitAddProjectedModule.py @@ -1,7 +1,8 @@ import wx import eos.db from logbook import Logger -from eos.saveddata.module import Module, FittingModuleState +from eos.saveddata.module import Module +from eos.const import FittingModuleState pyfalog = Logger(__name__) diff --git a/gui/fitCommands/calc/fitImportMutatedModule.py b/gui/fitCommands/calc/fitImportMutatedModule.py index b5e323d0e..bae0ef0d8 100644 --- a/gui/fitCommands/calc/fitImportMutatedModule.py +++ b/gui/fitCommands/calc/fitImportMutatedModule.py @@ -1,5 +1,6 @@ import wx -from eos.saveddata.module import Module, FittingModuleState +from eos.saveddata.module import Module +from eos.const import FittingModuleState import eos.db from eos.db.gamedata.queries import getDynamicItem from logbook import Logger diff --git a/gui/fitCommands/calc/fitReplaceModule.py b/gui/fitCommands/calc/fitReplaceModule.py index 3ccf371e7..b2d36314c 100644 --- a/gui/fitCommands/calc/fitReplaceModule.py +++ b/gui/fitCommands/calc/fitReplaceModule.py @@ -2,7 +2,8 @@ import wx from logbook import Logger import eos.db -from eos.saveddata.module import Module, FittingModuleState +from eos.saveddata.module import Module +from eos.const import FittingModuleState from gui.fitCommands.helpers import ModuleInfoCache pyfalog = Logger(__name__) diff --git a/gui/fitCommands/guiAddImplant.py b/gui/fitCommands/guiAddImplant.py index 79b75f014..52b284071 100644 --- a/gui/fitCommands/guiAddImplant.py +++ b/gui/fitCommands/guiAddImplant.py @@ -3,7 +3,7 @@ from service.fit import Fit import gui.mainFrame from gui import globalEvents as GE -from eos.saveddata.fit import ImplantLocation +from eos.const import ImplantLocation from .calc.fitAddImplant import FitAddImplantCommand from .calc.fitChangeImplantLocation import FitChangeImplantLocation diff --git a/service/fit.py b/service/fit.py index 44686dc00..48085e745 100644 --- a/service/fit.py +++ b/service/fit.py @@ -30,8 +30,9 @@ from eos.saveddata.citadel import Citadel as es_Citadel from eos.saveddata.damagePattern import DamagePattern as es_DamagePattern from eos.saveddata.drone import Drone as es_Drone from eos.saveddata.fighter import Fighter as es_Fighter -from eos.saveddata.fit import Fit as FitType, ImplantLocation -from eos.saveddata.module import Module as es_Module, FittingModuleState +from eos.const import ImplantLocation, FittingModuleState +from eos.saveddata.fit import Fit as FitType +from eos.saveddata.module import Module as es_Module from eos.saveddata.ship import Ship as es_Ship from service.character import Character from service.damagePattern import DamagePattern diff --git a/service/fitDeprecated.py b/service/fitDeprecated.py index 0e1569deb..138da90e6 100644 --- a/service/fitDeprecated.py +++ b/service/fitDeprecated.py @@ -27,7 +27,8 @@ from eos.saveddata.cargo import Cargo as es_Cargo from eos.saveddata.drone import Drone as es_Drone from eos.saveddata.fighter import Fighter as es_Fighter from eos.saveddata.implant import Implant as es_Implant -from eos.saveddata.module import Module as es_Module, FittingModuleState +from eos.saveddata.module import Module as es_Module +from eos.const import FittingModuleState from eos.saveddata.fit import Fit as FitType from utils.deprecated import deprecated diff --git a/service/port/dna.py b/service/port/dna.py index 8c383fb82..27b088e29 100644 --- a/service/port/dna.py +++ b/service/port/dna.py @@ -28,9 +28,9 @@ from eos.saveddata.citadel import Citadel from eos.saveddata.drone import Drone from eos.saveddata.fighter import Fighter from eos.saveddata.fit import Fit -from eos.saveddata.module import Module, FittingModuleState +from eos.saveddata.module import Module from eos.saveddata.ship import Ship -from eos.const import FittingSlot +from eos.const import FittingSlot, FittingModuleState from service.fit import Fit as svcFit from service.market import Market diff --git a/service/port/efs.py b/service/port/efs.py index 5c0a5219f..b42d803f9 100755 --- a/service/port/efs.py +++ b/service/port/efs.py @@ -6,7 +6,8 @@ from numbers import Number from config import version as pyfaVersion from service.fit import Fit from service.market import Market -from eos.saveddata.module import FittingHardpoint, Module, FittingModuleState +from eos.const import FittingModuleState, FittingHardpoint +from eos.saveddata.module import Module from eos.saveddata.drone import Drone from eos.effectHandlerHelpers import HandledList from eos.db import gamedata_session, getCategory, getAttributeInfo, getGroup diff --git a/service/port/eft.py b/service/port/eft.py index 66b6aaba9..b5eba1bc5 100644 --- a/service/port/eft.py +++ b/service/port/eft.py @@ -30,10 +30,10 @@ from eos.saveddata.booster import Booster from eos.saveddata.drone import Drone from eos.saveddata.fighter import Fighter from eos.saveddata.implant import Implant -from eos.saveddata.module import Module, FittingModuleState +from eos.saveddata.module import Module from eos.saveddata.ship import Ship from eos.saveddata.fit import Fit -from eos.const import FittingSlot +from eos.const import FittingSlot, FittingModuleState from service.fit import Fit as svcFit from service.market import Market from service.port.muta import parseMutant, renderMutant diff --git a/service/port/esi.py b/service/port/esi.py index c9c8ed708..80a940c88 100644 --- a/service/port/esi.py +++ b/service/port/esi.py @@ -28,8 +28,8 @@ from eos.saveddata.citadel import Citadel from eos.saveddata.drone import Drone from eos.saveddata.fighter import Fighter from eos.saveddata.fit import Fit -from eos.saveddata.module import Module, FittingModuleState -from eos.const import FittingSlot +from eos.saveddata.module import Module +from eos.const import FittingSlot, FittingModuleState from eos.saveddata.ship import Ship from service.fit import Fit as svcFit from service.market import Market diff --git a/service/port/port.py b/service/port/port.py index 8038cab8e..69c512646 100644 --- a/service/port/port.py +++ b/service/port/port.py @@ -29,7 +29,7 @@ from bs4 import UnicodeDammit from logbook import Logger from eos import db -from eos.saveddata.fit import ImplantLocation +from eos.const import ImplantLocation from service.fit import Fit as svcFit from service.port.dna import exportDna, importDna from service.port.eft import exportEft, importEft, importEftCfg diff --git a/service/port/xml.py b/service/port/xml.py index 7fcb05117..39fce6994 100644 --- a/service/port/xml.py +++ b/service/port/xml.py @@ -28,9 +28,9 @@ from eos.saveddata.citadel import Citadel from eos.saveddata.drone import Drone from eos.saveddata.fighter import Fighter from eos.saveddata.fit import Fit -from eos.saveddata.module import Module, FittingModuleState +from eos.saveddata.module import Module from eos.saveddata.ship import Ship -from eos.const import FittingSlot +from eos.const import FittingSlot, FittingModuleState from service.fit import Fit as svcFit from service.market import Market from utils.strfunctions import sequential_rep, replace_ltgt From 90e275e386dacd547f768001dee595693b501f01 Mon Sep 17 00:00:00 2001 From: Ryan Holmes Date: Thu, 14 Mar 2019 14:25:11 -0400 Subject: [PATCH 09/12] Remove unused import --- eos/saveddata/module.py | 1 - 1 file changed, 1 deletion(-) diff --git a/eos/saveddata/module.py b/eos/saveddata/module.py index 8a842d6c6..8fd3117fc 100644 --- a/eos/saveddata/module.py +++ b/eos/saveddata/module.py @@ -25,7 +25,6 @@ from sqlalchemy.orm import reconstructor, validates import eos.db from eos.const import FittingModuleState, FittingHardpoint, FittingSlot from eos.effectHandlerHelpers import HandledCharge, HandledItem -from enum import Enum from eos.modifiedAttributeDict import ChargeAttrShortcut, ItemAttrShortcut, ModifiedAttributeDict from eos.saveddata.citadel import Citadel from eos.saveddata.mutator import Mutator From 61da8be73253a974b50896e431ab328eba5379a1 Mon Sep 17 00:00:00 2001 From: Ryan Holmes Date: Thu, 14 Mar 2019 14:46:01 -0400 Subject: [PATCH 10/12] Few import fixes and some bug fixes --- gui/builtinAdditionPanes/fighterView.py | 1 - gui/builtinItemStatsViews/itemAttributes.py | 1 + gui/builtinViewColumns/state.py | 7 +++---- gui/builtinViews/fittingView.py | 9 ++++++++- service/port/efs.py | 12 ++++++------ 5 files changed, 18 insertions(+), 12 deletions(-) diff --git a/gui/builtinAdditionPanes/fighterView.py b/gui/builtinAdditionPanes/fighterView.py index 61402eb03..9a2550cd8 100644 --- a/gui/builtinAdditionPanes/fighterView.py +++ b/gui/builtinAdditionPanes/fighterView.py @@ -25,7 +25,6 @@ from gui.builtinMarketBrowser.events import ItemSelected, ITEM_SELECTED import gui.mainFrame import gui.display as d from gui.builtinViewColumns.state import State -#from eos.saveddata.module import FittingSlot from eos.const import FittingSlot from gui.contextMenu import ContextMenu from gui.utils.staticHelpers import DragDropHelper diff --git a/gui/builtinItemStatsViews/itemAttributes.py b/gui/builtinItemStatsViews/itemAttributes.py index fd1424687..7390c20d1 100644 --- a/gui/builtinItemStatsViews/itemAttributes.py +++ b/gui/builtinItemStatsViews/itemAttributes.py @@ -1,4 +1,5 @@ import csv +import config # noinspection PyPackageRequirements import wx diff --git a/gui/builtinViewColumns/state.py b/gui/builtinViewColumns/state.py index 7c75baccc..d62aed631 100644 --- a/gui/builtinViewColumns/state.py +++ b/gui/builtinViewColumns/state.py @@ -50,9 +50,8 @@ class State(ViewColumn): return State_(mod.state).name.title() def getImageId(self, stuff): - generic_active = self.fittingView.imageList.GetImageIndex("state_%s_small" % State_(1).name.lower(), "gui") - generic_inactive = self.fittingView.imageList.GetImageIndex("state_%s_small" % State_(-1).name.lower(), - "gui") + generic_active = self.fittingView.imageList.GetImageIndex("state_%s_small" % State_.ACTIVE.name.lower(), "gui") + generic_inactive = self.fittingView.imageList.GetImageIndex("state_%s_small" % State_.OFFLINE.name.lower(), "gui") if isinstance(stuff, Drone): if stuff.amountActive > 0: @@ -84,7 +83,7 @@ class State(ViewColumn): return generic_inactive elif isinstance(stuff, Implant) and stuff.character: # if we're showing character implants, show an "online" state, which should not be changed - return self.fittingView.imageList.GetImageIndex("state_%s_small" % State_(0).name.lower(), "gui") + return self.fittingView.imageList.GetImageIndex("state_%s_small" % State_.ONLINE.name.lower(), "gui") else: active = getattr(stuff, "active", None) if active is None: diff --git a/gui/builtinViews/fittingView.py b/gui/builtinViews/fittingView.py index 7b5646fa4..97ba7d8f6 100644 --- a/gui/builtinViews/fittingView.py +++ b/gui/builtinViews/fittingView.py @@ -475,7 +475,14 @@ class FittingView(d.Display): sFit = Fit.getInstance() fit = sFit.getFit(self.activeFitID) - slotOrder = [FittingSlot.SUBSYSTEM, FittingSlot.HIGH, FittingSlot.MED, FittingSlot.LOW, FittingSlot.RIG, FittingSlot.SERVICE] + slotOrder = [ + FittingSlot.SUBSYSTEM, + FittingSlot.HIGH, + FittingSlot.MED, + FittingSlot.LOW, + FittingSlot.RIG, + FittingSlot.SERVICE + ] if fit is not None: self.mods = fit.modules[:] diff --git a/service/port/efs.py b/service/port/efs.py index b42d803f9..f4781dfdd 100755 --- a/service/port/efs.py +++ b/service/port/efs.py @@ -6,13 +6,13 @@ from numbers import Number from config import version as pyfaVersion from service.fit import Fit from service.market import Market -from eos.const import FittingModuleState, FittingHardpoint +from eos.const import FittingModuleState, FittingHardpoint, FittingSlot +from service.const import PortEftRigSize from eos.saveddata.module import Module from eos.saveddata.drone import Drone from eos.effectHandlerHelpers import HandledList from eos.db import gamedata_session, getCategory, getAttributeInfo, getGroup from eos.gamedata import Attribute, Effect, Group, Item, ItemEffect -from eos.const import FittingSlot from eos.utils.spoolSupport import SpoolType, SpoolOptions from gui.fitCommands.calc.fitAddModule import FitAddModuleCommand from gui.fitCommands.calc.fitRemoveModule import FitRemoveModuleCommand @@ -51,13 +51,13 @@ class EfsPort: mwd50mn = mapPropData("50MN Microwarpdrive II") mwd500mn = mapPropData("500MN Microwarpdrive II") mwd50000mn = mapPropData("50000MN Microwarpdrive II") - if rigSize == RigSize.SMALL or rigSize is None: + if rigSize == PortEftRigSize.SMALL or rigSize is None: propID = mwd5mn["id"] if shipPower > mwd5mn["powerReq"] else None - elif rigSize == RigSize.MEDIUM: + elif rigSize == PortEftRigSize.MEDIUM: propID = mwd50mn["id"] if shipPower > mwd50mn["powerReq"] else mwd5mn["id"] - elif rigSize == RigSize.LARGE: + elif rigSize == PortEftRigSize.LARGE: propID = mwd500mn["id"] if shipPower > mwd500mn["powerReq"] else mwd50mn["id"] - elif rigSize == RigSize.CAPITAL: + elif rigSize == PortEftRigSize.CAPITAL: propID = mwd50000mn["id"] if shipPower > mwd50000mn["powerReq"] else mwd500mn["id"] if propID is None: From 42383cef03321cc3edbee527769012aeeae3c3a3 Mon Sep 17 00:00:00 2001 From: DarkPhoenix Date: Sat, 16 Mar 2019 13:29:47 +0300 Subject: [PATCH 11/12] Add effect which increases rig strength if system is not hi-sec --- .../structurecombatrigsecuritymodification.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 eos/effects/structurecombatrigsecuritymodification.py diff --git a/eos/effects/structurecombatrigsecuritymodification.py b/eos/effects/structurecombatrigsecuritymodification.py new file mode 100644 index 000000000..a467d6f31 --- /dev/null +++ b/eos/effects/structurecombatrigsecuritymodification.py @@ -0,0 +1,16 @@ +type = "passive" + + +def handler(fit, module, context): + secModifier = module.getModifiedItemAttr("securityModifier") + module.multiplyItemAttr("structureRigDoomsdayDamageLossTargetBonus", secModifier) + module.multiplyItemAttr("structureRigScanResBonus", secModifier) + module.multiplyItemAttr("structureRigPDRangeBonus", secModifier) + module.multiplyItemAttr("structureRigPDCapUseBonus", secModifier) + module.multiplyItemAttr("structureRigMissileExploVeloBonus", secModifier) + module.multiplyItemAttr("structureRigMissileVelocityBonus", secModifier) + module.multiplyItemAttr("structureRigEwarOptimalBonus", secModifier) + module.multiplyItemAttr("structureRigEwarFalloffBonus", secModifier) + module.multiplyItemAttr("structureRigEwarCapUseBonus", secModifier) + module.multiplyItemAttr("structureRigMissileExplosionRadiusBonus", secModifier) + module.multiplyItemAttr("structureRigMaxTargetRangeBonus", secModifier) From c6c364c4514ecad723879d5517bcc4e5eb8074f3 Mon Sep 17 00:00:00 2001 From: DarkPhoenix Date: Sat, 16 Mar 2019 13:55:13 +0300 Subject: [PATCH 12/12] Change runtime of combat rig sec modifier --- eos/effects/structurecombatrigsecuritymodification.py | 1 + 1 file changed, 1 insertion(+) diff --git a/eos/effects/structurecombatrigsecuritymodification.py b/eos/effects/structurecombatrigsecuritymodification.py index a467d6f31..dcbc93d39 100644 --- a/eos/effects/structurecombatrigsecuritymodification.py +++ b/eos/effects/structurecombatrigsecuritymodification.py @@ -1,3 +1,4 @@ +runTime = "early" type = "passive"