Add even more condensed tooltip version (not used yet)

This commit is contained in:
DarkPhoenix
2020-01-24 17:56:07 +03:00
parent 492207700b
commit 38c8be995b
2 changed files with 37 additions and 4 deletions

View File

@@ -232,6 +232,8 @@ class CharacterSelection(wx.Panel):
sCharacter = Character.getInstance()
self.reqs = sCharacter.checkRequirements(fit)
sCharacter.skillReqsDict = {'charname': fit.character.name, 'skills': []}
if len(self.reqs) == 0:
self.needsSkills = False
@@ -303,7 +305,6 @@ class CharacterSelection(wx.Panel):
if tabulationLevel == 0:
for item, subReqs in reqs.items():
skillsMap = self._buildSkillsTooltipCondensed(subReqs, item.name, 1, skillsMap)
sorted(skillsMap, key=skillsMap.get)
else:
for name, info in reqs.items():
level, ID, more = info
@@ -323,3 +324,25 @@ class CharacterSelection(wx.Panel):
skillsMap = self._buildSkillsTooltipCondensed(more, currItem, tabulationLevel + 1, skillsMap)
return skillsMap
def _buildSkillsTooltipSuperCondensed(self, reqs, currItem="", tabulationLevel=0, skillsMap=None):
allReqs = {}
implicitReqs = {}
def traverseReqs(itemReqs, topLevel=True):
for skillName, (skillLevel, skillTypeID, subReqs) in itemReqs.items():
if (skillTypeID, skillName) not in allReqs or allReqs[(skillTypeID, skillName)] < skillLevel:
allReqs[(skillTypeID, skillName)] = skillLevel
if not topLevel and (skillTypeID not in implicitReqs or implicitReqs[skillTypeID] < skillLevel):
implicitReqs[skillTypeID] = skillLevel
traverseReqs(subReqs, topLevel=False)
for item, itemReqs in reqs.items():
traverseReqs(itemReqs)
newReqs = {}
for (skillTypeID, skillName), skillLevel in allReqs.items():
if skillTypeID not in implicitReqs or implicitReqs[skillTypeID] < skillLevel:
newReqs[skillName] = skillLevel, skillTypeID
return newReqs

View File

@@ -442,13 +442,13 @@ class Character:
if subThing is not None:
if isinstance(thing, es_Fighter) and attr == "charge":
continue
self._checkRequirements(fit, fit.character, subThing, subReqs)
self._checkRequirements(fit.character, subThing, subReqs)
if subReqs:
reqs[subThing] = subReqs
return reqs
def _checkRequirements(self, fit, char, subThing, reqs):
def _checkRequirements(self, char, subThing, reqs):
for req, level in subThing.requiredSkills.items():
name = req.name
ID = req.ID
@@ -456,10 +456,20 @@ class Character:
currLevel, subs = info if info is not None else 0, {}
if level > currLevel and (char is None or char.getSkill(req).level < level):
reqs[name] = (level, ID, subs)
self._checkRequirements(fit, char, req, subs)
self._checkRequirements(char, req, subs)
return reqs
def getShit(self, reqs, condensed=None):
if condensed is None:
condensed = {}
for name, (level, ID, subs) in reqs:
if name not in condensed or condensed[name] < level:
condensed[name] = level
class UpdateAPIThread(threading.Thread):
def __init__(self, charID, callback):