Implemented projected fighters, and various fighter bugfixes / improvements
This commit is contained in:
@@ -11,7 +11,7 @@ class ChangeAmount(ContextMenu):
|
||||
self.mainFrame = gui.mainFrame.MainFrame.getInstance()
|
||||
|
||||
def display(self, srcContext, selection):
|
||||
return srcContext in ("cargoItem","projectedFit","fighterItem")
|
||||
return srcContext in ("cargoItem","projectedFit","fighterItem","projectedFighter")
|
||||
|
||||
def getText(self, itmContext, selection):
|
||||
return "Change {0} Quantity".format(itmContext)
|
||||
|
||||
@@ -9,7 +9,7 @@ class FighterAbility(ContextMenu):
|
||||
self.mainFrame = gui.mainFrame.MainFrame.getInstance()
|
||||
|
||||
def display(self, srcContext, selection):
|
||||
if self.mainFrame.getActiveFit() is None or srcContext != "fighterItem":
|
||||
if self.mainFrame.getActiveFit() is None or srcContext not in ("fighterItem", "projectedFighter"):
|
||||
return False
|
||||
|
||||
self.fighter = selection[0]
|
||||
|
||||
@@ -13,7 +13,8 @@ class ItemRemove(ContextMenu):
|
||||
"droneItem", "implantItem",
|
||||
"boosterItem", "projectedModule",
|
||||
"projectedCharge", "cargoItem",
|
||||
"projectedFit", "projectedDrone")
|
||||
"projectedFit", "projectedDrone",
|
||||
"fighterItem", "projectedFighter")
|
||||
|
||||
def getText(self, itmContext, selection):
|
||||
return "Remove {0}".format(itmContext if itmContext is not None else "Item")
|
||||
@@ -32,6 +33,8 @@ class ItemRemove(ContextMenu):
|
||||
sFit.setAmmo(fitID, None, selection)
|
||||
elif srcContext == "droneItem":
|
||||
sFit.removeDrone(fitID, fit.drones.index(selection[0]))
|
||||
elif srcContext == "fighterItem":
|
||||
sFit.removeFighter(fitID, fit.fighters.index(selection[0]))
|
||||
elif srcContext == "implantItem":
|
||||
sFit.removeImplant(fitID, fit.implants.index(selection[0]))
|
||||
elif srcContext == "boosterItem":
|
||||
|
||||
@@ -17,7 +17,8 @@ class ItemStats(ContextMenu):
|
||||
"implantItem", "boosterItem",
|
||||
"skillItem", "projectedModule",
|
||||
"projectedDrone", "projectedCharge",
|
||||
"itemStats", "fighterItem", "implantItemChar")
|
||||
"itemStats", "fighterItem",
|
||||
"implantItemChar", "projectedFighter")
|
||||
|
||||
def getText(self, itmContext, selection):
|
||||
return "{0} Stats".format(itmContext if itmContext is not None else "Item")
|
||||
|
||||
@@ -13,7 +13,8 @@ class MarketJump(ContextMenu):
|
||||
"implantItem", "boosterItem",
|
||||
"projectedModule", "projectedDrone",
|
||||
"projectedCharge", "cargoItem",
|
||||
"implantItemChar", "fighterItem")
|
||||
"implantItemChar", "fighterItem",
|
||||
"projectedDrone")
|
||||
|
||||
if not srcContext in validContexts or selection is None or len(selection) < 1:
|
||||
return False
|
||||
|
||||
@@ -22,8 +22,8 @@ from gui.viewColumn import ViewColumn
|
||||
import gui.mainFrame
|
||||
|
||||
import wx
|
||||
from eos.types import Drone, Cargo, Fit, Module, Slot, Rack, Implant, Fighter
|
||||
import service
|
||||
from eos.types import Fighter
|
||||
|
||||
|
||||
class Abilities(ViewColumn):
|
||||
name = "Fighter Abilities"
|
||||
@@ -36,6 +36,9 @@ class Abilities(ViewColumn):
|
||||
|
||||
def getText(self, stuff):
|
||||
if isinstance(stuff, Fighter):
|
||||
return ", ".join([x.name for x in stuff.abilities if x.active])
|
||||
active = [x.name for x in stuff.abilities if x.active]
|
||||
if len(active) == 0:
|
||||
return "None"
|
||||
return ", ".join(active)
|
||||
|
||||
Abilities.register()
|
||||
|
||||
@@ -21,6 +21,8 @@ from gui import builtinViewColumns
|
||||
from gui.viewColumn import ViewColumn
|
||||
from gui.bitmapLoader import BitmapLoader
|
||||
import wx
|
||||
from eos.types import Fighter
|
||||
|
||||
|
||||
class Ammo(ViewColumn):
|
||||
name = "Ammo"
|
||||
@@ -31,6 +33,12 @@ class Ammo(ViewColumn):
|
||||
self.bitmap = BitmapLoader.getBitmap("damagePattern_small", "gui")
|
||||
|
||||
def getText(self, stuff):
|
||||
if isinstance(stuff, Fighter):
|
||||
# this is an experiment, not sure I like it. But it saves us from duplicating code.
|
||||
col = self.columns['Fighter Abilities'](self.fittingView, {})
|
||||
text = col.getText(stuff)
|
||||
del col
|
||||
return text
|
||||
if getattr(stuff, "charge", None) is not None:
|
||||
charges = stuff.numCharges
|
||||
if charges > 0:
|
||||
@@ -47,3 +55,4 @@ class Ammo(ViewColumn):
|
||||
return -1
|
||||
|
||||
Ammo.register()
|
||||
|
||||
|
||||
@@ -65,6 +65,9 @@ class ImplantView(wx.Panel):
|
||||
else:
|
||||
self.rbChar.SetValue(True)
|
||||
|
||||
self.rbFit.Enable(fit is not None)
|
||||
self.rbChar.Enable(fit is not None)
|
||||
|
||||
def OnRadioSelect(self, event):
|
||||
fitID = self.mainFrame.getActiveFit()
|
||||
sFit = service.Fit.getInstance()
|
||||
|
||||
@@ -144,6 +144,9 @@ class ProjectedView(d.Display):
|
||||
def moduleSort(self, module):
|
||||
return module.item.name
|
||||
|
||||
def fighterSort(self, fighter):
|
||||
return fighter.item.name
|
||||
|
||||
def droneSort(self, drone):
|
||||
item = drone.item
|
||||
if item.marketGroup is None:
|
||||
@@ -169,14 +172,17 @@ class ProjectedView(d.Display):
|
||||
if fit is not None:
|
||||
self.modules = fit.projectedModules[:]
|
||||
self.drones = fit.projectedDrones[:]
|
||||
self.fighters = fit.projectedFighters[:]
|
||||
self.fits = fit.projectedFits[:]
|
||||
|
||||
self.modules.sort(key=self.moduleSort)
|
||||
self.drones.sort(key=self.droneSort)
|
||||
self.fighters.sort(key=self.fighterSort)
|
||||
self.fits.sort(key=self.fitSort)
|
||||
|
||||
stuff.extend(self.modules)
|
||||
stuff.extend(self.drones)
|
||||
stuff.extend(self.fighters)
|
||||
stuff.extend(self.fits)
|
||||
|
||||
if event.fitID != self.lastFitId:
|
||||
@@ -197,17 +203,20 @@ class ProjectedView(d.Display):
|
||||
def get(self, row):
|
||||
numMods = len(self.modules)
|
||||
numDrones = len(self.drones)
|
||||
numFighters = len(self.fighters)
|
||||
numFits = len(self.fits)
|
||||
|
||||
if (numMods + numDrones + numFits) == 0:
|
||||
if (numMods + numDrones + numFighters + numFits) == 0:
|
||||
return None
|
||||
|
||||
if row < numMods:
|
||||
stuff = self.modules[row]
|
||||
elif row - numMods < numDrones:
|
||||
stuff = self.drones[row - numMods]
|
||||
elif row - numMods - numDrones < numFighters:
|
||||
stuff = self.fighters[row - numMods - numDrones]
|
||||
else:
|
||||
stuff = self.fits[row - numMods - numDrones]
|
||||
stuff = self.fits[row - numMods - numDrones - numFighters]
|
||||
|
||||
return stuff
|
||||
|
||||
@@ -238,6 +247,10 @@ class ProjectedView(d.Display):
|
||||
srcContext = "projectedDrone"
|
||||
itemContext = sMkt.getCategoryByItem(item.item).name
|
||||
context = ((srcContext, itemContext),)
|
||||
elif isinstance(item, eos.types.Fighter):
|
||||
srcContext = "projectedFighter"
|
||||
itemContext = sMkt.getCategoryByItem(item.item).name
|
||||
context = ((srcContext, itemContext),)
|
||||
elif isinstance(item, eos.types.Module):
|
||||
modSrcContext = "projectedModule"
|
||||
modItemContext = sMkt.getCategoryByItem(item.item).name
|
||||
|
||||
Reference in New Issue
Block a user