skillTreeDataProvider.py (2256B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\skillTree\skillTreeDataProvider.py 2 from collections import defaultdict 3 import evetypes 4 import inventorycommon.const as invconst 5 from eve.client.script.ui.skillTree.skillTreeNode import SkillTreeController 6 from evetypes.skills import get_dogma_required_skills 7 8 class SkillTreeDataProvider(object): 9 10 def __init__(self): 11 self.skillByTypeID = {} 12 self.skillsByGroupID = defaultdict(list) 13 self._ConstructNodes() 14 self._InitializeData() 15 16 def _ConstructNodes(self): 17 type_ids = evetypes.GetTypeIDsByCategory(invconst.categorySkill) 18 for type_id in type_ids: 19 if not evetypes.IsPublished(type_id): 20 continue 21 skillTreeController = SkillTreeController(type_id) 22 self.skillByTypeID[type_id] = skillTreeController 23 24 def _InitializeData(self): 25 for node in self.skillByTypeID.values(): 26 self._AddNodeToParent(node) 27 self.skillsByGroupID[node.GetGroupID()].append(node) 28 29 def _AddNodeToParent(self, skill_node): 30 requiredSkillsByLevel = get_dogma_required_skills(skill_node.GetTypeID()) 31 for parentTypeID, level in requiredSkillsByLevel.iteritems(): 32 parent = self.skillByTypeID[parentTypeID] 33 skill_node.AddParent(parent, level) 34 35 def GetNode(self, type_id): 36 return self.skillByTypeID.get(type_id, None) 37 38 def GetSkillGroups(self): 39 return self.skillsByGroupID.keys() 40 41 def GetSkillsByGroupID(self, skill_group_id): 42 return self.skillsByGroupID[skill_group_id] 43 44 def GetAllSkills(self): 45 return self.skillByTypeID.values() 46 47 def GetSkillsByDepth(self): 48 skillsByDepth = defaultdict(set) 49 for skill in self.GetAllSkills(): 50 skillsByDepth[skill.GetDepth()].add(skill) 51 52 return skillsByDepth 53 54 def GetRootSkills(self): 55 return self.GetSkillsByDepth()[0] 56 57 58 _skillTreeDataProvider = None 59 60 def GetSkillTreeDataProvider(): 61 global _skillTreeDataProvider 62 _skillTreeDataProvider = None 63 if _skillTreeDataProvider is None: 64 _skillTreeDataProvider = SkillTreeDataProvider() 65 return _skillTreeDataProvider