Convert module charge handling to command pattern (adding charges and removing charges)

This commit is contained in:
blitzmann
2018-07-21 18:04:07 -04:00
parent ec3cd75f4c
commit 5d0342ee2d
6 changed files with 38 additions and 12 deletions

View File

@@ -39,7 +39,7 @@ class ItemRemove(ContextMenu):
self.mainFrame.command.Submit(cmd.FitModuleRemoveCommand(fitID, modules))
return # the command takes care of the PostEvent
elif srcContext in ("fittingCharge", "projectedCharge"):
sFit.setAmmo(fitID, None, selection)
self.mainFrame.command.Submit(cmd.FitModuleAddChargeCommand(fitID, None, selection))
elif srcContext == "droneItem":
sFit.removeDrone(fitID, fit.drones.index(selection[0]))
elif srcContext == "fighterItem":

View File

@@ -11,7 +11,7 @@ import gui.globalEvents as GE
from gui.contextMenu import ContextMenu
from gui.bitmap_loader import BitmapLoader
from service.settings import ContextMenuSettings
import gui.fitCommands as cmd
class ModuleAmmoPicker(ContextMenu):
DAMAGE_TYPES = ("em", "explosive", "kinetic", "thermal")
@@ -228,11 +228,8 @@ class ModuleAmmoPicker(ContextMenu):
event.Skip()
return
sFit = Fit.getInstance()
fitID = self.mainFrame.getActiveFit()
sFit.setAmmo(fitID, charge.ID if charge is not None else None, self.modules)
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
self.mainFrame.command.Submit(cmd.FitModuleAddChargeCommand(fitID, charge.ID if charge is not None else None, self.modules))
ModuleAmmoPicker.register()

View File

@@ -7,7 +7,7 @@ from gui.builtinContextMenus.moduleAmmoPicker import ModuleAmmoPicker
from eos.db.saveddata.queries import getFit as db_getFit
from service.fit import Fit
from service.settings import ContextMenuSettings
import gui.fitCommands as cmd
class ModuleGlobalAmmoPicker(ModuleAmmoPicker):
def __init__(self):
@@ -40,8 +40,7 @@ class ModuleGlobalAmmoPicker(ModuleAmmoPicker):
if mod.itemID == selectedModule.itemID:
allModules.append(mod)
sFit.setAmmo(fitID, charge.ID if charge is not None else None, allModules)
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
self.mainFrame.command.Submit(cmd.FitModuleAddChargeCommand(fitID, charge.ID if charge is not None else None, allModules))
def display(self, srcContext, selection):
if not self.settings.get('moduleGlobalAmmoPicker'):

View File

@@ -379,8 +379,7 @@ class FittingView(d.Display):
sel = self.GetNextSelected(sel)
if len(modules) > 0:
sFit.setAmmo(fitID, itemID, modules)
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
self.mainFrame.command.Submit(cmd.FitModuleAddChargeCommand(fitID, itemID, modules))
else:
self.mainFrame.command.Submit(cmd.FitModuleAddCommand(fitID, itemID))

View File

@@ -1,3 +1,4 @@
from .moduleStateChange import FitModuleStateChangeCommand
from .moduleAdd import FitModuleAddCommand
from .moduleRemove import FitModuleRemoveCommand
from .moduleRemove import FitModuleRemoveCommand
from .moduleAddCharge import FitModuleAddChargeCommand

View File

@@ -0,0 +1,30 @@
import wx
from service.fit import Fit
import gui.mainFrame
from gui import globalEvents as GE
class FitModuleAddChargeCommand(wx.Command):
def __init__(self, fitID, itemID, modules):
wx.Command.__init__(self, True, "Module Charge Add")
# todo: evaluate mutaplasmid modules
self.mainFrame = gui.mainFrame.MainFrame.getInstance()
self.sFit = Fit.getInstance()
self.fitID = fitID
self.itemID = itemID
self.positions = {mod.modPosition: mod.chargeID for mod in modules}
def Do(self):
fit = self.sFit.getFit(self.fitID)
self.sFit.setAmmo(self.fitID, self.itemID, [fit.modules[i] for i in self.positions.keys()])
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=self.fitID))
return True
def Undo(self):
fit = self.sFit.getFit(self.fitID)
for position, chargeID in self.positions.items():
self.sFit.setAmmo(self.fitID, chargeID, [fit.modules[position]], False)
self.sFit.recalc(self.fitID)
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=self.fitID))
return True