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

skillPlanUtil.py (4628B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\skillPlan\skillPlanUtil.py
      2 import evetypes
      3 from carbonui.control.dragdrop import dragDropUtil, dragdata
      4 from eve.client.script.ui.skillPlan import skillPlanConst
      5 import inventorycommon.const as invConst
      6 from eve.client.script.ui.skillPlan.skillPlanConst import IS_PREREQ, NO_REQ, REQUIRED_FOR
      7 from skills.skillplan.milestone.milestonesUtil import GetMilestoneSubType
      8 
      9 def IsValidContentsDragData(dragData):
     10     typeID = dragDropUtil.GetTypeID(dragData)
     11     if typeID is None:
     12         return False
     13     return IsTypeValidMilestone(typeID)
     14 
     15 
     16 def IsTypeValidMilestone(typeID):
     17     if typeID is None:
     18         return False
     19     typeCategoryID = evetypes.GetCategoryID(typeID)
     20     if typeCategoryID == invConst.categorySkill:
     21         return True
     22     if typeCategoryID == invConst.categoryAsteroid:
     23         return False
     24     if sm.GetService('skills').GetRequiredSkills(typeID):
     25         return True
     26     return False
     27 
     28 
     29 def GetDragDataTypeIDAndLevel(dragData):
     30     if isinstance(dragData, dragdata.SkillLevelDragData):
     31         typeID = dragData.typeID
     32         level = dragData.level
     33     else:
     34         typeID = dragDropUtil.GetTypeID(dragData)
     35         level = None
     36     if typeID and evetypes.IsSkill(typeID):
     37         level = level or 1
     38     return (typeID, level)
     39 
     40 
     41 def GetMilestoneTexturePath(typeID):
     42     subType = GetMilestoneSubType(typeID)
     43     return skillPlanConst.MILESTONE_ICON_BY_SUBTYPE.get(subType, None)
     44 
     45 
     46 def GetPreReqsAndRequiredForSkillLevel(typeID, level):
     47     prereqs = evetypes.skills.get_dogma_required_skills(typeID)
     48     reqForTypeIDs = GetSkillsRequiring(typeID, level)
     49     return (prereqs, reqForTypeIDs)
     50 
     51 
     52 def GetSkillsRequiring(typeID, level):
     53     typeIndex = evetypes.skills.get_required_skills_index().get(typeID, {})
     54     reqForTypeIDs = set()
     55     typesByMetaGroupID = typeIndex.get(level, {}).get(const.marketCategorySkills, {})
     56     for typeList in typesByMetaGroupID.itervalues():
     57         reqForTypeIDs.update(typeList)
     58 
     59     return reqForTypeIDs
     60 
     61 
     62 def GetRequirementStateForEntry(typeID, level, entry, prereqs, reqForTypeIDs):
     63     if typeID is None or level is None:
     64         return NO_REQ
     65     if entry.typeID in reqForTypeIDs and entry.level == 1:
     66         return REQUIRED_FOR
     67     if entry.typeID == typeID:
     68         if entry.level < level:
     69             return IS_PREREQ
     70         if entry.level > level:
     71             return REQUIRED_FOR
     72         return NO_REQ
     73     reqLevel = prereqs.get(entry.typeID, None)
     74     if reqLevel is not None and entry.level == reqLevel:
     75         return IS_PREREQ
     76     return NO_REQ
     77 
     78 
     79 DEFAULT_PANELID_BY_BUTTONGROUP_ID = {skillPlanConst.BUTTON_GROUP_ID_TOP_LEVEL: skillPlanConst.PANEL_SKILL_PLANS,
     80  skillPlanConst.BUTTON_GROUP_ID_SKILL_PLANS: skillPlanConst.PANEL_CERTIFIED}
     81 
     82 def GetPersistedPanelID(buttonGroupID):
     83     return settings.char.ui.Get(buttonGroupID, DEFAULT_PANELID_BY_BUTTONGROUP_ID.get(buttonGroupID, None))
     84 
     85 
     86 def SetPersistedPanelID(buttonGroupID, panelID):
     87     return settings.char.ui.Set(buttonGroupID, panelID)
     88 
     89 
     90 def IsExternalServicePanelSelected():
     91     return GetPersistedPanelID(skillPlanConst.BUTTON_GROUP_ID_TOP_LEVEL) == skillPlanConst.PANEL_SKILL_PLANS and GetPersistedPanelID(skillPlanConst.BUTTON_GROUP_ID_SKILL_PLANS) == skillPlanConst.PANEL_PERSONAL
     92 
     93 
     94 def LoadGenericTooltip(tooltipPanel, headerText, text):
     95     tooltipPanel.LoadStandardSpacing()
     96     tooltipPanel.columns = 1
     97     tooltipPanel.AddMediumHeader(text=headerText)
     98     tooltipPanel.AddLabelMedium(text=text, wrapWidth=300)
     99 
    100 
    101 def _GetCertifiedSkillPlansPanel():
    102     from eve.client.script.ui.skillPlan.skillPlanDockablePanel import SkillPlanDockablePanel
    103     skill_plans_window = SkillPlanDockablePanel.GetIfOpen()
    104     if skill_plans_window:
    105         skill_plan_panel = getattr(skill_plans_window, 'skillPlanPanel', None)
    106         if skill_plan_panel:
    107             skill_plan_browser = getattr(skill_plan_panel, 'skillPlanBrowser', None)
    108             if skill_plan_browser:
    109                 return getattr(skill_plan_browser, 'certifiedSkillPlans', None)
    110 
    111 
    112 def GetVisibleCareerPathTabGroup():
    113     certified_skill_plans = _GetCertifiedSkillPlansPanel()
    114     if certified_skill_plans:
    115         return certified_skill_plans.GetVisibleCareerPathTabGroup()
    116 
    117 
    118 def GetVisibleFactionTabGroup():
    119     certified_skill_plans = _GetCertifiedSkillPlansPanel()
    120     if certified_skill_plans:
    121         return certified_skill_plans.GetVisibleFactionTabGroup()
    122 
    123 
    124 def HasFactionTabGroup():
    125     certified_skill_plans = _GetCertifiedSkillPlansPanel()
    126     if certified_skill_plans:
    127         return certified_skill_plans.HasFactionTabGroup()