Added method to check/get modes, and start GUI integration (simple context menu)
This commit is contained in:
@@ -100,7 +100,10 @@ class Fit(object):
|
||||
self.extraAttributes = ModifiedAttributeDict(self)
|
||||
self.extraAttributes.original = self.EXTRA_ATTRIBUTES
|
||||
self.ship = Ship(db.getItem(self.shipID)) if self.shipID is not None else None
|
||||
self.mode = Mode(db.getItem(self.mode)) if self.mode is not None else None
|
||||
if self.ship is not None and self.mode is not None:
|
||||
self.mode = self.ship.checkMode(Mode(self.mode))
|
||||
else:
|
||||
self.mode = None
|
||||
|
||||
@property
|
||||
def targetResists(self):
|
||||
|
||||
@@ -24,8 +24,6 @@ class Mode(ItemAttrShortcut, HandledItem):
|
||||
|
||||
def __init__(self, item):
|
||||
self.__item = item
|
||||
self.itemID = item.ID if item is not None else None
|
||||
|
||||
self.__itemModifiedAttributes = ModifiedAttributeDict()
|
||||
|
||||
if not isinstance(item, int):
|
||||
@@ -57,10 +55,6 @@ class Mode(ItemAttrShortcut, HandledItem):
|
||||
def fits(self, fit):
|
||||
raise NotImplementedError()
|
||||
|
||||
# @ todo: rework to get valid modes (probably put in fit object, not mode)
|
||||
def getValidModes(self):
|
||||
raise NotImplementedError()
|
||||
|
||||
def clear(self):
|
||||
self.itemModifiedAttributes.clear()
|
||||
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
|
||||
from eos.modifiedAttributeDict import ModifiedAttributeDict, ItemAttrShortcut
|
||||
from eos.effectHandlerHelpers import HandledItem
|
||||
from eos.saveddata.mode import Mode
|
||||
|
||||
class Ship(ItemAttrShortcut, HandledItem):
|
||||
def __init__(self, item):
|
||||
@@ -65,6 +66,41 @@ class Ship(ItemAttrShortcut, HandledItem):
|
||||
if effect.runTime == runTime and effect.isType("passive"):
|
||||
effect.handler(fit, self, ("ship",))
|
||||
|
||||
def checkMode(self, mode):
|
||||
"""
|
||||
Checks if provided mode is valid.
|
||||
|
||||
If ship has modes, and current mode is not valid, return forced mode
|
||||
else if mode is valid, return Mode
|
||||
else if ship does not have modes, return None
|
||||
"""
|
||||
modes = self.getValidModes()
|
||||
if modes != None:
|
||||
if mode == None or mode not in modes:
|
||||
# We have a tact dessy, but mode is None or not valid. Force new mode
|
||||
return modes[0]
|
||||
elif mode in modes:
|
||||
# We have a valid mode
|
||||
return mode
|
||||
return None
|
||||
|
||||
def getValidModes(self):
|
||||
"""Gets valid modes for ship, returns None if not a t3 dessy"""
|
||||
# @todo: is there a better way to determine this that isn't hardcoded groupIDs?
|
||||
if self.item.groupID != 1305:
|
||||
return None
|
||||
|
||||
modeGroupID = 1306
|
||||
import eos.db
|
||||
|
||||
modes = []
|
||||
g = eos.db.getGroup(modeGroupID, eager=("items.icon", "items.attributes"))
|
||||
for item in g.items:
|
||||
if item.raceID == self.item.raceID:
|
||||
modes.append(Mode(item))
|
||||
|
||||
return modes
|
||||
|
||||
def __deepcopy__(self, memo):
|
||||
copy = Ship(self.item)
|
||||
return copy
|
||||
|
||||
Reference in New Issue
Block a user