def getText(self, itmContext, selection): sDP = import_DamagePattern.getInstance() sFit = Fit.getInstance() fitID = self.mainFrame.getActiveFit() self.fit = sFit.getFit(fitID) self.patterns = sDP.getDamagePatternList() self.patterns.sort( key=lambda p: (p.name not in ["Uniform", "Selected Ammo"], p.name)) self.patternIds = {} self.subMenus = OrderedDict() self.singles = [] # iterate and separate damage patterns based on "[Parent] Child" for pattern in self.patterns: start, end = pattern.name.find('['), pattern.name.find(']') if start is not -1 and end is not -1: currBase = pattern.name[start + 1:end] # set helper attr setattr(pattern, "_name", pattern.name[end + 1:].strip()) if currBase not in self.subMenus: self.subMenus[currBase] = [] self.subMenus[currBase].append(pattern) else: self.singles.append(pattern) # return list of names, with singles first followed by submenu names self.m = map(lambda p: p.name, self.singles) + self.subMenus.keys() return self.m
def ValuesUpdated(self, event=None): if self.block: return p = self.entityEditor.getActiveEntity() total = sum(map(lambda attr: getattr(self, "%sEdit" % attr).GetValue(), self.DAMAGE_TYPES)) for type_ in self.DAMAGE_TYPES: editObj = getattr(self, "%sEdit" % type_) percObj = getattr(self, "%sPerc" % type_) setattr(p, "%sAmount" % type_, editObj.GetValue()) percObj.SetLabel("%.1f%%" % (float(editObj.GetValue()) * 100 / total if total > 0 else 0)) self.totSizer.Layout() if event is not None: event.Skip() DamagePattern.getInstance().saveChanges(p)
def importPatterns(self, event): text = fromClipboard() if text: sDP = DamagePattern.getInstance() try: sDP.importPatterns(text) self.stNotice.SetLabel("Patterns successfully imported from clipboard") except ImportError as e: self.stNotice.SetLabel(str(e)) except Exception: self.stNotice.SetLabel("Could not import from clipboard: unknown errors") finally: self.entityEditor.refreshEntityList() else: self.stNotice.SetLabel("Could not import from clipboard")
def setAsPattern(self, fitID, ammo): if fitID is None: return sDP = s_DamagePattern.getInstance() dp = sDP.getDamagePattern("Selected Ammo") if dp is None: dp = es_DamagePattern() dp.name = "Selected Ammo" fit = getFit(fitID) for attr in ("em", "thermal", "kinetic", "explosive"): setattr(dp, "%sAmount" % attr, ammo.getAttribute("%sDamage" % attr) or 0) fit.damagePattern = dp self.recalc(fit)
def DoDelete(self, entity): sDP = DamagePattern.getInstance() sDP.deletePattern(entity)
def DoCopy(self, entity, name): sDP = DamagePattern.getInstance() copy = sDP.copyPattern(entity) sDP.renamePattern(copy, name) return copy
def DoRename(self, entity, name): sDP = DamagePattern.getInstance() sDP.renamePattern(entity, name)
def DoNew(self, name): sDP = DamagePattern.getInstance() return sDP.newPattern(name)
def getEntitiesFromContext(self): sDP = DamagePattern.getInstance() choices = sorted(sDP.getDamagePatternList(), key=lambda p: p.name) return [c for c in choices if c.name != "Selected Ammo"]
def exportPatterns(self, event): sDP = DamagePattern.getInstance() toClipboard(sDP.exportPatterns()) self.stNotice.SetLabel("Patterns exported to clipboard")