Implemented projected fighters, and various fighter bugfixes / improvements

This commit is contained in:
blitzmann
2016-04-30 19:49:45 -04:00
parent 3a62a6c40d
commit d416124081
17 changed files with 75 additions and 19 deletions

View File

@@ -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)

View File

@@ -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]

View File

@@ -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":

View File

@@ -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")

View File

@@ -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

View File

@@ -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()

View File

@@ -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()

View File

@@ -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()

View File

@@ -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