commands for add / remove projected fighters

This commit is contained in:
Ryan Holmes
2018-08-10 13:29:26 -04:00
parent bd975becf1
commit 391c3a32a6
4 changed files with 96 additions and 4 deletions

View File

@@ -0,0 +1,47 @@
import wx
from service.fit import Fit
import gui.mainFrame
from gui import globalEvents as GE
#from .helpers import ModuleInfoCache
from eos.saveddata.module import Module, State
import eos.db
from logbook import Logger
from eos.saveddata.fighter import Fighter
from eos.saveddata.drone import Drone
pyfalog = Logger(__name__)
class FitAddProjectedFighterCommand(wx.Command):
""""
from sFit.project
"""
def __init__(self, fitID, itemID):
wx.Command.__init__(self, True)
self.fitID = fitID
self.itemID = itemID
self.new_index = None
def Do(self):
pyfalog.debug("Projecting fit ({0}) onto: {1}", self.fitID, self.itemID)
fit = eos.db.getFit(self.fitID)
item = eos.db.getItem(self.itemID, eager=("attributes", "group.category"))
try:
fighter = Fighter(item)
except ValueError:
return False
fit.projectedFighters.append(fighter)
# sometimes fighters aren't added because they aren't valid projectionable ones. todo: move that logic into here
if fighter in fit.projectedFighters:
eos.db.commit()
self.new_index = fit.projectedFighters.index(fighter)
return True
return False
def Undo(self):
from gui.fitCommands.calc.fitRemoveProjectedFighter import FitRemoveProjectedFighterCommand # avoids circular import
cmd = FitRemoveProjectedFighterCommand(self.fitID, self.new_index)
cmd.Do()
return True

View File

@@ -0,0 +1,44 @@
import wx
from service.fit import Fit
import gui.mainFrame
from gui import globalEvents as GE
#from .helpers import ModuleInfoCache
from eos.saveddata.module import Module, State
import eos.db
from logbook import Logger
from eos.saveddata.module import Module
from eos.saveddata.drone import Drone
from eos.saveddata.fighter import Fighter
from .fitRemoveProjectedModule import FitRemoveProjectedModuleCommand
pyfalog = Logger(__name__)
# this has the same exact definition that regular rpojected modules, besides the undo
class FitRemoveProjectedFighterCommand(FitRemoveProjectedModuleCommand):
""""
from sFit.project
"""
def __init__(self, fitID, position):
wx.Command.__init__(self, True)
self.fitID = fitID
self.position = position
self.removed_item = None
def Do(self):
pyfalog.debug("Removing ({0}) onto: {1}", self.fitID, self.position)
fit = eos.db.getFit(self.fitID)
fighter = fit.projectedFighters[self.position]
fit.projectedFighters.remove(fighter)
self.removed_item = fighter.itemID
eos.db.commit()
return True
def Undo(self):
from gui.fitCommands.calc.fitAddProjectedFighter import FitAddProjectedFighterCommand
cmd = FitAddProjectedFighterCommand(self.fitID, self.removed_item)
cmd.Do()
return True

View File

@@ -7,6 +7,7 @@ from eos.saveddata.module import Module
from .calc.fitAddProjectedModule import FitAddProjectedModuleCommand
from .calc.fitAddProjectedEnv import FitAddProjectedEnvCommand
from .calc.fitAddProjectedFit import FitAddProjectedFitCommand
from .calc.fitAddProjectedFighter import FitAddProjectedFighterCommand
from logbook import Logger
import eos.db
pyfalog = Logger(__name__)
@@ -44,13 +45,10 @@ class GuiAddProjectedCommand(wx.Command):
#
# drone.amount += 1
elif item.category.name == "Fighter":
pyfalog.warn("FIGHTER PROJECTION NOT IMPLEMENTED")
# fighter = Fighter(item)
# fit.projectedFighters.append(fighter)
result = self.internal_history.Submit(FitAddProjectedFighterCommand(self.fitID, self.id))
elif item.group.name in Module.SYSTEM_GROUPS:
result = self.internal_history.Submit(FitAddProjectedEnvCommand(self.fitID, self.id))
else:
# attempt a regular module projection
result = self.internal_history.Submit(FitAddProjectedModuleCommand(self.fitID, self.id))
elif self.type == 'fit':
result = self.internal_history.Submit(FitAddProjectedFitCommand(self.fitID, self.id))

View File

@@ -7,6 +7,7 @@ from eos.saveddata.module import Module
from .calc.fitRemoveProjectedModule import FitRemoveProjectedModuleCommand
from .calc.fitRemoveProjectedEnv import FitRemoveProjectedEnvCommand
from .calc.fitRemoveProjectedFit import FitRemoveProjectedFitCommand
from .calc.fitRemoveProjectedFighter import FitRemoveProjectedFighterCommand
from logbook import Logger
import eos.db
pyfalog = Logger(__name__)
@@ -54,6 +55,8 @@ class GuiRemoveProjectedCommand(wx.Command):
result = self.internal_history.Submit(FitRemoveProjectedEnvCommand(self.fitID, self.data))
elif self.type == 'fit':
result = self.internal_history.Submit(FitRemoveProjectedFitCommand(self.fitID, self.data))
elif self.type == 'fighter':
result = self.internal_history.Submit(FitRemoveProjectedFighterCommand(self.fitID, self.data))
# if item.category.name == "Drone":
# pyfalog.warn("DRONE REMOVE PROJECTION NOT IMPLEMENTED")