NovaBryan/EVE_Dump
Log | Files | 📦 下载最新源码 (.zip) | Refs | README

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