Exemple #1
0
    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
Exemple #2
0
 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
Exemple #3
0
 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
Exemple #4
0
 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
Exemple #5
0
 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
Exemple #6
0
 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
Exemple #7
0
 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