Add Ammo support for projected effects view

This commit is contained in:
cncfanatics
2010-10-30 11:30:28 +02:00
parent 17a521e73f
commit 1ec7e795df
7 changed files with 105 additions and 12 deletions

View File

@@ -11,10 +11,13 @@ class ModuleAmmoPicker(ContextMenu):
self.mainFrame = gui.mainFrame.MainFrame.getInstance()
def display(self, context, selection):
if self.mainFrame.getActiveFit() is None or context != "module":
if self.mainFrame.getActiveFit() is None or context not in ("module", "projectedModule"):
return False
modules = self.mainFrame.getFittingView().getSelectedMods()
if context == "module":
modules = self.mainFrame.getFittingView().getSelectedMods()
else:
modules = (selection[0],)
validCharges = None
for mod in modules:
currCharges = mod.getValidCharges()
@@ -23,6 +26,7 @@ class ModuleAmmoPicker(ContextMenu):
validCharges = currCharges
self.modules = modules
self.charges = list(validCharges)
self.module = mod
return len(self.charges) > 0
@@ -41,7 +45,7 @@ class ModuleAmmoPicker(ContextMenu):
d = charge.getAttribute("%sDamage" % type)
if d > 0:
damage += d
return (-range - falloff, charge.name.rsplit()[-2:], damage, charge.name)
MISSILE_ORDER = ["em", "thermal", "kinetic", "explosive"]
@@ -74,6 +78,7 @@ class ModuleAmmoPicker(ContextMenu):
m.Enable(id, False)
def getSubMenu(self, context, selection, menu, i):
self.context = context
menu.Bind(wx.EVT_MENU, self.handleAmmoSwitch)
m = wx.Menu()
m.Bind(wx.EVT_MENU, self.handleAmmoSwitch)
@@ -167,8 +172,8 @@ class ModuleAmmoPicker(ContextMenu):
sFit = service.Fit.getInstance()
fitID = self.mainFrame.getActiveFit()
modules = map(lambda mod: mod.position, self.mainFrame.getFittingView().getSelectedMods())
sFit.setAmmo(fitID, charge.ID if charge is not None else None, modules)
sFit.setAmmo(fitID, charge.ID if charge is not None else None, self.modules)
wx.PostEvent(self.mainFrame, gui.fittingView.FitChanged(fitID=fitID))
ModuleAmmoPicker.register()

View File

@@ -1,4 +1,4 @@
__all__ = ["moduleState", "moduleNameOrSlot", "attributeDisplay", "maxRange",
"name", "droneDps", "droneNameAmount", "droneCheckbox", "moduleAmmo",
"capacitorUse", "activityCheckbox", "moduleAmmoIcon", "modulePrice",
"projectedName", "projectedState"]
"projectedName", "projectedState", "projectedAmmoIcon", "projectedAmmo"]

View File

@@ -0,0 +1,43 @@
#===============================================================================
# Copyright (C) 2010 Diego Duclos
#
# This file is part of pyfa.
#
# pyfa is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# pyfa is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with pyfa. If not, see <http://www.gnu.org/licenses/>.
#===============================================================================
from gui.viewColumn import ViewColumn
import gui.builtinViewColumns.moduleAmmo
from eos.types import Module
class ProjectedAmmo(ViewColumn):
name = "Projected Ammo"
def __init__(self, fittingView, params):
ViewColumn.__init__(self, fittingView)
self.columnText = "Ammo"
self.slave = gui.builtinViewColumns.moduleAmmo.ModuleAmmo(fittingView, params)
def getText(self, stuff):
if isinstance(stuff, Module):
return self.slave.getText(stuff)
else:
return ""
def getImageId(self, thing):
if isinstance(thing, Module):
return self.slave.getImageId(thing)
else:
return -1
ProjectedAmmo.register()

View File

@@ -0,0 +1,44 @@
#===============================================================================
# Copyright (C) 2010 Diego Duclos
#
# This file is part of pyfa.
#
# pyfa is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# pyfa is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with pyfa. If not, see <http://www.gnu.org/licenses/>.
#===============================================================================
from gui.viewColumn import ViewColumn
import gui.builtinViewColumns.moduleAmmoIcon
from eos.types import Module
class ProjectedAmmoIcon(ViewColumn):
name = "Projected Ammo Icon"
def __init__(self, fittingView, params):
ViewColumn.__init__(self, fittingView)
self.columnText = ""
self.size = 20
self.slave = gui.builtinViewColumns.moduleAmmoIcon.ModuleAmmoIcon(fittingView, params)
def getText(self, stuff):
if isinstance(stuff, Module):
return self.slave.getText(stuff)
else:
return ""
def getImageId(self, thing):
if isinstance(thing, Module):
return self.slave.getImageId(thing)
else:
return -1
ProjectedAmmoIcon.register()

View File

@@ -122,7 +122,7 @@ class FittingView(d.Display):
modules = []
sel = self.GetFirstSelected()
while sel != -1:
modules.append(self.mods[self.GetItemData(sel)].position)
modules.append(self.mods[self.GetItemData(sel)])
sel = self.GetNextSelected(sel)
cFit.setAmmo(fitID, itemID, modules)

View File

@@ -27,8 +27,10 @@ from gui.contextMenu import ContextMenu
import eos.types
class ProjectedView(d.Display):
DEFAULT_COLS = ["Projected State",
"Projected Name"]
DEFAULT_COLS = ["Projected Ammo Icon",
"Projected State",
"Projected Name",
"Projected Ammo"]
def __init__(self, parent):
d.Display.__init__(self, parent)

View File

@@ -366,10 +366,9 @@ class Fit(object):
fit = eos.db.getFit(fitID)
ammo = eos.db.getItem(ammoID)
for pos in modules:
mod = fit.modules[pos]
for mod in modules:
if mod.isValidCharge(ammo):
fit.modules[pos].charge = ammo
mod.charge = ammo
fit.clear()
fit.calculateModifiedAttributes()