Merge branch 'feature/grant-needed-skills' into dev
This commit is contained in:
@@ -450,7 +450,7 @@ class Item(EqBase):
|
||||
return self.__price
|
||||
|
||||
def __repr__(self):
|
||||
return "Item(ID={}, name={}) at {}".format(
|
||||
return u"Item(ID={}, name={}) at {}".format(
|
||||
self.ID, self.name, hex(id(self))
|
||||
)
|
||||
|
||||
|
||||
@@ -780,7 +780,7 @@ class Module(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut):
|
||||
|
||||
def __repr__(self):
|
||||
if self.item:
|
||||
return "Module(ID={}, name={}) at {}".format(
|
||||
return u"Module(ID={}, name={}) at {}".format(
|
||||
self.item.ID, self.item.name, hex(id(self))
|
||||
)
|
||||
else:
|
||||
|
||||
@@ -51,6 +51,7 @@ class CharacterSelection(wx.Panel):
|
||||
self.redSkills = BitmapLoader.getBitmap("skillRed_big", "gui")
|
||||
self.greenSkills = BitmapLoader.getBitmap("skillGreen_big", "gui")
|
||||
self.refresh = BitmapLoader.getBitmap("refresh", "gui")
|
||||
self.needsSkills = False
|
||||
|
||||
self.btnRefresh = wx.BitmapButton(self, wx.ID_ANY, self.refresh)
|
||||
size = self.btnRefresh.GetSize()
|
||||
@@ -68,6 +69,8 @@ class CharacterSelection(wx.Panel):
|
||||
self.skillReqsStaticBitmap.SetBitmap(self.cleanSkills)
|
||||
mainSizer.Add(self.skillReqsStaticBitmap, 0, wx.ALIGN_CENTER_VERTICAL | wx.RIGHT | wx.LEFT, 3)
|
||||
|
||||
self.skillReqsStaticBitmap.Bind(wx.EVT_RIGHT_UP, self.OnContextMenu)
|
||||
|
||||
self.Bind(wx.EVT_CHOICE, self.charChanged)
|
||||
self.mainFrame.Bind(GE.CHAR_LIST_UPDATED, self.refreshCharacterList)
|
||||
self.mainFrame.Bind(GE.FIT_CHANGED, self.fitChanged)
|
||||
@@ -76,6 +79,42 @@ class CharacterSelection(wx.Panel):
|
||||
|
||||
self.charChoice.Enable(False)
|
||||
|
||||
def OnContextMenu(self, event):
|
||||
sFit = Fit.getInstance()
|
||||
fit = sFit.getFit(self.mainFrame.getActiveFit())
|
||||
|
||||
if not fit or not self.needsSkills:
|
||||
return
|
||||
|
||||
pos = wx.GetMousePosition()
|
||||
pos = self.ScreenToClient(pos)
|
||||
|
||||
menu = wx.Menu()
|
||||
|
||||
grantItem = menu.Append(wx.ID_ANY, "Grant Missing Skills")
|
||||
self.Bind(wx.EVT_MENU, self.grantMissingSkills, grantItem)
|
||||
|
||||
self.PopupMenu(menu, pos)
|
||||
|
||||
event.Skip()
|
||||
|
||||
def grantMissingSkills(self, evt):
|
||||
charID = self.getActiveCharacter()
|
||||
sChar = Character.getInstance()
|
||||
|
||||
skillsMap = {}
|
||||
for item, stuff in self.reqs.iteritems():
|
||||
for things in stuff.values():
|
||||
if things[1] not in skillsMap:
|
||||
skillsMap[things[1]] = things[0]
|
||||
elif things[0] > skillsMap[things[1]]:
|
||||
skillsMap[things[1]] = things[0]
|
||||
|
||||
for skillID, level in skillsMap.iteritems():
|
||||
sChar.changeLevel(charID, skillID, level, ifHigher=True)
|
||||
|
||||
self.refreshCharacterList()
|
||||
|
||||
def getActiveCharacter(self):
|
||||
selection = self.charChoice.GetCurrentSelection()
|
||||
return self.charChoice.GetClientData(selection) if selection is not -1 else None
|
||||
@@ -176,20 +215,23 @@ class CharacterSelection(wx.Panel):
|
||||
self.skillReqsStaticBitmap.SetToolTipString("No active fit")
|
||||
else:
|
||||
sCharacter = Character.getInstance()
|
||||
reqs = sCharacter.checkRequirements(fit)
|
||||
self.reqs = sCharacter.checkRequirements(fit)
|
||||
|
||||
sCharacter.skillReqsDict = {'charname': fit.character.name, 'skills': []}
|
||||
if len(reqs) == 0:
|
||||
if len(self.reqs) == 0:
|
||||
self.needsSkills = False
|
||||
tip = "All skill prerequisites have been met"
|
||||
self.skillReqsStaticBitmap.SetBitmap(self.greenSkills)
|
||||
else:
|
||||
self.needsSkills = True
|
||||
tip = "Skills required:\n"
|
||||
condensed = sFit.serviceFittingOptions["compactSkills"]
|
||||
if condensed:
|
||||
dict_ = self._buildSkillsTooltipCondensed(reqs, skillsMap={})
|
||||
dict_ = self._buildSkillsTooltipCondensed(self.reqs, skillsMap={})
|
||||
for key in sorted(dict_):
|
||||
tip += "%s: %d\n" % (key, dict_[key])
|
||||
else:
|
||||
tip += self._buildSkillsTooltip(reqs)
|
||||
tip += self._buildSkillsTooltip(self.reqs)
|
||||
self.skillReqsStaticBitmap.SetBitmap(self.redSkills)
|
||||
self.skillReqsStaticBitmap.SetToolTipString(tip.strip())
|
||||
|
||||
|
||||
@@ -372,9 +372,13 @@ class Character(object):
|
||||
eos.db.commit()
|
||||
|
||||
@staticmethod
|
||||
def changeLevel(charID, skillID, level, persist=False):
|
||||
def changeLevel(charID, skillID, level, persist=False, ifHigher=False):
|
||||
char = eos.db.getCharacter(charID)
|
||||
skill = char.getSkill(skillID)
|
||||
|
||||
if ifHigher and level < skill.level:
|
||||
return
|
||||
|
||||
if isinstance(level, basestring) or level > 5 or level < 0:
|
||||
skill.level = None
|
||||
else:
|
||||
|
||||
Reference in New Issue
Block a user