def __init__(self, app): self.app = app self.createUI() self.fleetCommandDlg = FleetCommandDlg(self.app) self.fleetSpecsDlg = FleetSpecsDlg(self.app) self.fleetSplitDlg = FleetSplitDlg(self.app) self.renameFleetDlg = RenameFleetDlg(self.app) self.fleetScoutBloomDlg = FleetScoutBloomDlg(self.app) self.confirmDlg = ConfirmDlg(app)
class FleetDlg: def __init__(self, app): self.app = app self.createUI() self.fleetCommandDlg = FleetCommandDlg(self.app) self.fleetSpecsDlg = FleetSpecsDlg(self.app) self.fleetSplitDlg = FleetSplitDlg(self.app) self.renameFleetDlg = RenameFleetDlg(self.app) self.fleetScoutBloomDlg = FleetScoutBloomDlg(self.app) self.confirmDlg = ConfirmDlg(app) def display(self, objID): fleet = client.get(objID) if not hasattr(fleet, "ships"): return self.fleetID = objID self.showFleet() # show window if not self.win.visible: self.win.show() # register for updates if self not in gdata.updateDlgs: gdata.updateDlgs.append(self) def hide(self): self.win.setStatus(_("Ready.")) self.win.hide() # unregister updates if self in gdata.updateDlgs: gdata.updateDlgs.remove(self) def update(self): if self.win.visible: self.showFleet() def showFleet(self): fleet = client.get(self.fleetID, noUpdate=1) if hasattr(fleet, 'customname') and fleet.customname: self.win.title = _('Fleet: %s') % fleet.customname else: self.win.title = _('Fleet: %s') % getattr(fleet, 'name', res.getUnknownName()) # fill listbox items = [] # serial ships if hasattr(fleet, 'ships'): for designID, hp, shield, exp in fleet.ships: tech = client.getPlayer().shipDesigns[designID] if shield > 0: hpInfo = _("%d + %d") % (hp, shield) hpSort = hp + 1000 * shield else: hpInfo = _("%d") % hp hpSort = hp item = ui.Item(tech.name, tHP=hpInfo, tHP_raw=hpSort, tExp=exp, tClass=_(gdata.shipClasses[tech.combatClass]), designID=designID, tLevel=Rules.shipExpToLevel.get( int(exp / tech.baseExp), Rules.shipDefLevel), tSpec=[designID, hp, shield, exp], tSpeed=_("%.2f") % tech.speed) items.append(item) self.win.vShips.items = items self.win.vShips.itemsChanged() self.win.vShips.selectItem(self.win.vShips.items[0]) self.showShip(self.win.vShips.items[0].designID, self.win.vShips.items[0].tExp) # fleet info self.win.vFCoordinates.text = '[%.1f, %.1f]' % (fleet.x, fleet.y) if fleet.orbiting != OID_NONE: self.win.vFOrbiting.text = getattr( client.get(fleet.orbiting, noUpdate=1), 'name', res.getUnknownName()) else: self.win.vFOrbiting.text = _('N/A') if hasattr(fleet, "speedBoost") and hasattr(fleet, "maxSpeed"): text = _("%.2f") % (fleet.maxSpeed * fleet.speedBoost) info = _("Base speed %.2f, speed boost %.2f") % (fleet.maxSpeed, fleet.speedBoost) else: text = _("?") info = None self.win.vFMaxSpeed.text = text self.win.vFMaxSpeed.tooltip = info self.win.vFMaxSpeed.statustip = info self.win.vFSignature.text = getattr(fleet, 'signature', '?') # commands items = [] index = 0 if hasattr(fleet, 'actions'): for action, target, data in fleet.actions: info = "-" if target != OID_NONE: targetName = getattr(client.get(target, noUpdate=1), 'name', res.getUnknownName()) else: targetName = '-' if index == fleet.actionIndex: current = '>' else: current = '' # additional info if action == FLACTION_DECLAREWAR: info = getattr(client.get(data, noUpdate=1), 'name', res.getUnknownName()) elif action == FLACTION_DEPLOY: info = client.getPlayer().shipDesigns[data].name elif action == FLACTION_REPEATFROM: info = _("Command #%d") % (data + 1) elif action == FLACTION_WAIT: info = _("%d / %d") % (fleet.actionWaitCounter, data) # create item item = ui.Item(gdata.fleetActions[action], targetName=targetName, data=info, tIndex=index + 1, current=current) items.append(item) index += 1 self.win.vCommands.items = items self.win.vCommands.selection = [] self.win.vCommands.itemsChanged() self.win.vCommandUp.enabled = 0 self.win.vCommandDown.enabled = 0 self.win.vCommandDel.enabled = 0 self.win.vCommandSetActive.enabled = 0 def showShip(self, techID, exp): tech = client.getPlayer().shipDesigns[techID] level = Rules.shipExpToLevel.get(int(exp / tech.baseExp), Rules.shipDefLevel) self.win.vShipModel.text = tech.name self.win.vShipClass.text = _(gdata.shipClasses[tech.combatClass]) self.win.vShipAtt.text = int(tech.combatAtt * Rules.shipLevelEff[level]) self.win.vShipDef.text = _("%d / %d") % ( int(tech.combatDef * Rules.shipLevelEff[level]), int(tech.missileDef * Rules.shipLevelEff[level]), ) self.win.vShipMaxSpeed.text = _("%.2f") % tech.speed self.win.vShipScannerPwr.text = tech.scannerPwr self.win.vShipSupport.text = _("%d + %d") % ( tech.operEn, int(tech.buildProd * Rules.operProdRatio)) info = _("Support: %d energy and %d contruction points per turn.") % ( tech.operEn, int(tech.buildProd * Rules.operProdRatio)) self.win.vShipSupport.statustip = info self.win.vShipSupport.tooltip = info self.win.vShipStorages.text = _("%d") % tech.storEn self.win.vShipSignature.text = tech.signature if tech.shieldHP > 0: self.win.vShipMaxHP.text = _("%d + %d") % ( tech.maxHP, tech.shieldHP, ) else: self.win.vShipMaxHP.text = _("%d") % (tech.maxHP, ) # show equipment items = [] for techID in tech.eqIDs: eq = client.getTechInfo(techID) short = sequip.getShortDescr(techID) long = sequip.getLongDescr(techID) item = ui.Item(_("%d x %s") % (tech.eqIDs[techID], eq.name), tData=short, tooltip=long, statustip=long) items.append(item) self.win.vShipEquipment.items = items self.win.vShipEquipment.itemsChanged() def onFleetSpecs(self, widget, action, data): self.fleetSpecsDlg.displayFleet(self.fleetID) def onShipSelected(self, widget, action, data): self.showShip(data.designID, data.tExp) def onSelectCommand(self, widget, action, data): index = self.win.vCommands.items.index(self.win.vCommands.selection[0]) self.win.vCommandUp.enabled = index > 0 self.win.vCommandDown.enabled = index < len( self.win.vCommands.items) - 1 self.win.vCommandDel.enabled = 1 self.win.vCommandSetActive.enabled = 1 def onNewCommand(self, widget, action, data): sel = self.win.vCommands.selection if not sel: self.fleetCommandDlg.display(self, FleetCommandDlg.NEW_COMMAND) else: self.fleetCommandDlg.display( self, self.win.vCommands.items.index(sel[0]) + 1) def onDeleteCommand(self, widget, action, data, all=0): sel = self.win.vCommands.selection if not sel: self.win.setStatus(_('Select command to delete.')) return item = sel[0] try: self.win.setStatus(_('Executing DELETE COMMAND command...')) fleet = client.get(self.fleetID, noUpdate=1) fleet.actions, fleet.actionIndex = client.cmdProxy.deleteAction( self.fleetID, item.tIndex - 1) self.win.vCommands.selection = [] if not all: # 0 from UI; 1 from "DeleteAll" function self.win.setStatus(_('Command has been executed.')) if item.text == gdata.fleetActions[FLACTION_WAIT]: fleet = client.get(self.fleetID, forceUpdate=1) self.update() gdata.mainGameDlg.update() return 0 except ige.GameException, e: self.win.setStatus(_(e.args[0])) return 1
class FleetDlg: def __init__(self, app): self.app = app self.createUI() self.fleetCommandDlg = FleetCommandDlg(self.app) self.fleetSpecsDlg = FleetSpecsDlg(self.app) self.fleetSplitDlg = FleetSplitDlg(self.app) self.renameFleetDlg = RenameFleetDlg(self.app) self.fleetScoutBloomDlg = FleetScoutBloomDlg(self.app) self.locateDlg = LocateDlg(self.app) self.confirmDlg = ConfirmDlg(app) def display(self, objID): fleet = client.get(objID) if not hasattr(fleet, "ships"): return self.fleetID = objID self.showFleet() # show window if not self.win.visible: self.win.show() # register for updates if self not in gdata.updateDlgs: gdata.updateDlgs.append(self) def hide(self): self.win.setStatus(_("Ready.")) self.win.hide() # unregister updates if self in gdata.updateDlgs: gdata.updateDlgs.remove(self) def update(self): if self.win.visible: self.showFleet() def showFleet(self): fleet = client.get(self.fleetID, noUpdate = 1) if hasattr(fleet,'customname') and fleet.customname: self.win.title = _('Fleet: %s') % fleet.customname else: self.win.title = _('Fleet: %s') % getattr(fleet, 'name', res.getUnknownName()) # fill listbox items = [] # serial ships if hasattr(fleet, 'ships'): for designID, hp, shield, exp in fleet.ships: tech = client.getPlayer().shipDesigns[designID] if shield > 0: hpInfo = _("%d + %d") % (hp, shield) hpSort = hp + 1000 * shield else: hpInfo = _("%d") % hp hpSort = hp item = ui.Item(tech.name, tHP = hpInfo, tHP_raw = hpSort, tExp = exp, tClass = _(gdata.shipClasses[tech.combatClass]), designID = designID, tLevel = Rules.shipExpToLevel.get(int(exp / tech.baseExp), Rules.shipDefLevel), tSpec = [designID, hp, shield, exp], tSpeed = _("%.2f") % tech.speed ) items.append(item) self.win.vShips.items = items self.win.vShips.itemsChanged() self.win.vShips.selectItem(self.win.vShips.items[0]) self.showShip(self.win.vShips.items[0].designID, self.win.vShips.items[0].tExp) # fleet info self.win.vFCoordinates.text = '[%.1f, %.1f]' % (fleet.x, fleet.y) if fleet.orbiting != Const.OID_NONE: self.win.vFOrbiting.text = getattr(client.get(fleet.orbiting, noUpdate = 1), 'name', res.getUnknownName()) else: self.win.vFOrbiting.text = _('N/A') if hasattr(fleet, "speedBoost") and hasattr(fleet, "maxSpeed"): text = _("%.2f") % (fleet.maxSpeed * fleet.speedBoost) info = _("Base speed %.2f, speed boost %.2f") % ( fleet.maxSpeed, fleet.speedBoost ) else: text = _("?") info = None self.win.vFMaxSpeed.text = text self.win.vFMaxSpeed.tooltipTitle = _("Details") self.win.vFMaxSpeed.tooltip = info self.win.vFMaxSpeed.statustip = info self.win.vFSignature.text = getattr(fleet, 'signature', '?') # commands items = [] index = 0 if hasattr(fleet, 'actions'): for action, target, data in fleet.actions: info = "-" if target != Const.OID_NONE: targetName = getattr(client.get(target, noUpdate = 1), 'name', res.getUnknownName()) else: targetName = '-' if index == fleet.actionIndex: current = '>' else: current = '' # additional info if action == Const.FLACTION_DECLAREWAR: info = getattr(client.get(data, noUpdate = 1), 'name', res.getUnknownName()) elif action == Const.FLACTION_DEPLOY: info = client.getPlayer().shipDesigns[data].name elif action == Const.FLACTION_REPEATFROM: info = _("Command #%d") % (data + 1) elif action == Const.FLACTION_WAIT: info = _("%d / %d") % (fleet.actionWaitCounter, data) # create item item = ui.Item(gdata.fleetActions[action], targetName = targetName, data = info, tIndex = index + 1, current = current) items.append(item) index += 1 self.win.vCommands.items = items self.win.vCommands.selection = [] self.win.vCommands.itemsChanged() self.win.vCommandUp.enabled = 0 self.win.vCommandDown.enabled = 0 self.win.vCommandDel.enabled = 0 self.win.vCommandSetActive.enabled = 0 def showShip(self, techID, exp): tech = client.getPlayer().shipDesigns[techID] level = Rules.shipExpToLevel.get(int(exp / tech.baseExp), Rules.shipDefLevel) self.win.vShipModel.text = tech.name self.win.vShipClass.text = _(gdata.shipClasses[tech.combatClass]) self.win.vShipAtt.text = int(tech.combatAtt * Rules.shipLevelEff[level]) self.win.vShipDef.text = _("%d / %d") % ( int(tech.combatDef * Rules.shipLevelEff[level]), int(tech.missileDef * Rules.shipLevelEff[level]), ) self.win.vShipMaxSpeed.text = _("%.2f") % tech.speed self.win.vShipScannerPwr.text = tech.scannerPwr self.win.vShipSupport.text = _("%d + %d") % (tech.operEn, int(tech.buildProd * Rules.operProdRatio)) info = _("Support: %d energy and %d contruction points per turn.") % (tech.operEn, int(tech.buildProd * Rules.operProdRatio)) self.win.vShipSupport.statustip = info self.win.vShipSupport.tooltip = info self.win.vShipStorages.text = _("%d") % tech.storEn self.win.vShipSignature.text = tech.signature if tech.shieldHP > 0: self.win.vShipMaxHP.text = _("%d + %d") % ( tech.maxHP, tech.shieldHP, ) else: self.win.vShipMaxHP.text = _("%d") % ( tech.maxHP, ) # show equipment items = [] for techID in tech.eqIDs: eq = client.getTechInfo(techID) short = sequip.getShortDescr(techID) long = sequip.getLongDescr(techID) item = ui.Item(_("%d x %s") % (tech.eqIDs[techID], eq.name), tData = short, tooltip = long, statustip = long) items.append(item) self.win.vShipEquipment.items = items self.win.vShipEquipment.itemsChanged() def onFleetSpecs(self, widget, action, data): self.fleetSpecsDlg.displayFleet(self.fleetID) def onShipSelected(self, widget, action, data): self.showShip(data.designID, data.tExp) def onSelectCommand(self, widget, action, data): index = self.win.vCommands.items.index(self.win.vCommands.selection[0]) self.win.vCommandUp.enabled = index > 0 self.win.vCommandDown.enabled = index < len(self.win.vCommands.items) - 1 self.win.vCommandDel.enabled = 1 self.win.vCommandSetActive.enabled = 1 def onNewCommand(self, widget, action, data): sel = self.win.vCommands.selection if not sel: self.fleetCommandDlg.display(self, FleetCommandDlg.NEW_COMMAND) else: self.fleetCommandDlg.display(self, self.win.vCommands.items.index(sel[0]) + 1) def onDeleteCommand(self, widget, action, data, update=True): sel = self.win.vCommands.selection if not sel: self.win.setStatus(_('Select command to delete.')) return item = sel[0] try: self.win.setStatus(_('Executing DELETE COMMAND command...')) fleet = client.get(self.fleetID, noUpdate = 1) fleet.actions, fleet.actionIndex = client.cmdProxy.deleteAction(self.fleetID, item.tIndex - 1) self.win.vCommands.selection = [] if update: self.win.setStatus(_('Command has been executed.')) if item.text == gdata.fleetActions[Const.FLACTION_WAIT]: fleet = client.get(self.fleetID,forceUpdate=1) self.update() gdata.mainGameDlg.update() return 0 except ige.GameException, e: self.win.setStatus(_(e.args[0])) return 1