def getT2MwdSpeed(fit, sFit): fitID = fit.ID propID = None shipHasMedSlots = fit.ship.getModifiedItemAttr("medSlots") > 0 shipPower = fit.ship.getModifiedItemAttr("powerOutput") # Monitors have a 99% reduction to prop mod power requirements if fit.ship.typeName == "Monitor": shipPower *= 100 rigSize = fit.ship.getModifiedItemAttr("rigSize") if not shipHasMedSlots: return None filterVal = Item.groupID == getGroup("Propulsion Module").ID propMods = gamedata_session.query(Item).options().filter( filterVal).all() mapPropData = lambda propName: \ next(map(lambda propMod: {"id": propMod.typeID, "powerReq": propMod.attributes["power"].value}, (filter(lambda mod: mod.typeName == propName, propMods)))) mwd5mn = mapPropData("5MN Microwarpdrive II") mwd50mn = mapPropData("50MN Microwarpdrive II") mwd500mn = mapPropData("500MN Microwarpdrive II") mwd50000mn = mapPropData("50000MN Microwarpdrive II") if rigSize == PortEftRigSize.SMALL or rigSize is None: propID = mwd5mn["id"] if shipPower > mwd5mn["powerReq"] else None elif rigSize == PortEftRigSize.MEDIUM: propID = mwd50mn[ "id"] if shipPower > mwd50mn["powerReq"] else mwd5mn["id"] elif rigSize == PortEftRigSize.LARGE: propID = mwd500mn[ "id"] if shipPower > mwd500mn["powerReq"] else mwd50mn["id"] elif rigSize == PortEftRigSize.CAPITAL: propID = mwd50000mn[ "id"] if shipPower > mwd50000mn["powerReq"] else mwd500mn["id"] if propID is None: return None cmd = CalcAddLocalModuleCommand(fitID, ModuleInfo(itemID=propID)) cmd.Do() if cmd.needsGuiRecalc: sFit.recalc(fit) fit = eos.db.getFit(fitID) mwdPropSpeed = fit.maxSpeed mwdPosition = list( filter(lambda mod: mod.item and mod.item.ID == propID, fit.modules))[0].position cmd = CalcRemoveLocalModulesCommand(fitID, [mwdPosition]) cmd.Do() if cmd.needsGuiRecalc: sFit.recalc(fit) fit = eos.db.getFit(fitID) return mwdPropSpeed
def Do(self): sFit = Fit.getInstance() fit = sFit.getFit(self.fitID) mod = fit.modules[self.position] self.savedItemID = mod.itemID info = ModuleInfo.fromModule(mod) added_modules = 0 while True: cmd = CalcAddLocalModuleCommand(fitID=self.fitID, newModInfo=info) if not self.internalHistory.submit(cmd): break added_modules += 1 if cmd.needsGuiRecalc: eos.db.flush() sFit.recalc(self.fitID) self.savedRemovedDummies = sFit.fill(self.fitID) eos.db.commit() success = added_modules > 0 wx.PostEvent( gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID, ), action='modadd', typeID=self.savedItemID) if success else GE.FitChanged(fitIDs=(self.fitID, ))) return success
def Do(self): cmd = CalcAddLocalModuleCommand(fitID=self.fitID, newModInfo=self.newModInfo) success = self.internalHistory.submit(cmd) Fit.getInstance().recalc(self.fitID) wx.PostEvent( gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitID=self.fitID, action='modadd', typeID=self.newModInfo.itemID)) return success
def Do(self): cmd = CalcAddLocalModuleCommand( fitID=self.fitID, newModInfo=ModuleInfo(itemID=self.itemID)) success = self.internalHistory.submit(cmd) sFit = Fit.getInstance() sFit.recalc(self.fitID) self.savedRemovedDummies = sFit.fill(self.fitID) wx.PostEvent( gui.mainFrame.MainFrame.getInstance(), GE.FitChanged( fitID=self.fitID, action='modadd', typeID=self.itemID) if success else GE.FitChanged(fitID=self.fitID)) return success
def Do(self): cmd = CalcAddLocalModuleCommand(fitID=self.fitID, newModInfo=self.newModInfo) success = self.internalHistory.submit(cmd) sFit = Fit.getInstance() if cmd.needsGuiRecalc: eos.db.flush() sFit.recalc(self.fitID) self.savedRemovedDummies = sFit.fill(self.fitID) eos.db.commit() wx.PostEvent( gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID, ), action='modadd', typeID=self.newModInfo.itemID)) return success
def Do(self): added_modules = 0 while True: cmd = CalcAddLocalModuleCommand( fitID=self.fitID, newModInfo=ModuleInfo(itemID=self.itemID), commit=False) if not self.internalHistory.submit(cmd): break added_modules += 1 eos.db.commit() Fit.getInstance().recalc(self.fitID) success = added_modules > 0 wx.PostEvent( gui.mainFrame.MainFrame.getInstance(), GE.FitChanged( fitID=self.fitID, action='modadd', typeID=self.itemID) if success else GE.FitChanged(fitID=self.fitID)) return success
def Do(self): info = ModuleInfo(itemID=self.itemID) added_modules = 0 while True: cmd = CalcAddLocalModuleCommand(fitID=self.fitID, newModInfo=info) if not self.internalHistory.submit(cmd): break added_modules += 1 Market.getInstance().storeRecentlyUsed(self.itemID) sFit = Fit.getInstance() # Only last command decides if we need to recalc here or not if cmd.needsGuiRecalc: eos.db.flush() sFit.recalc(self.fitID) self.savedRemovedDummies = sFit.fill(self.fitID) eos.db.commit() success = added_modules > 0 wx.PostEvent( gui.mainFrame.MainFrame.getInstance(), GE.FitChanged( fitIDs=(self.fitID, ), action='modadd', typeID=self.itemID) if success else GE.FitChanged(fitIDs=(self.fitID, ))) return success