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

controller.py (4116B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\control\skillBar\controller.py
      2 from clonegrade import CLONE_STATE_ALPHA
      3 from omega.client.clone_grade_svc import get_clone_grade_svc
      4 from skills.client.skillController import SkillController
      5 import signals
      6 
      7 class SkillBarController(object):
      8 
      9     def __init__(self, skillController, requiredLevel = None, overrideLevel = None):
     10         self._skillController = skillController
     11         self._requiredLevel = requiredLevel
     12         self._overrideLevel = overrideLevel
     13         self.onUpdate = signals.Signal(signalName='onUpdate7')
     14 
     15     @property
     16     def typeID(self):
     17         return self._skillController.typeID
     18 
     19     @property
     20     def isRequired(self):
     21         return self._requiredLevel is not None and self._requiredLevel > 0
     22 
     23     @property
     24     def requiredLevel(self):
     25         return self._requiredLevel
     26 
     27     @requiredLevel.setter
     28     def requiredLevel(self, requiredLevel):
     29         changed = requiredLevel != self._requiredLevel
     30         self._requiredLevel = requiredLevel
     31         if changed:
     32             self.onUpdate()
     33 
     34     @property
     35     def level(self):
     36         return self._skillController.GetMyLevel()
     37 
     38     @property
     39     def isInjected(self):
     40         return self._skillController.IsInjected()
     41 
     42     @property
     43     def isRequirementsMet(self):
     44         return self._skillController.IsPrereqsMetIncludingSkillQueue()
     45 
     46     @property
     47     def isTraining(self):
     48         return self._skillController.IsInTraining()
     49 
     50     @property
     51     def isQueued(self):
     52         queue = self._skillController.skill_queue_service.GetQueue()
     53         return any((self.typeID == s.trainingTypeID for s in queue))
     54 
     55     @property
     56     def isRestricted(self):
     57         return get_clone_grade_svc().get_max_skill_level(self.typeID) < 5
     58 
     59     @property
     60     def isPartiallyTrained(self):
     61         skillService = self._skillController.skill_service
     62         currentLevelSP = skillService.SkillPointsCurrentLevel(self.typeID)
     63         myCurrentSP = skillService.MySkillPoints(self.typeID) or 0
     64         return myCurrentSP - currentLevelSP > 0
     65 
     66     @property
     67     def restrictedLevel(self):
     68         return get_clone_grade_svc().get_max_skill_level(self.typeID, CLONE_STATE_ALPHA)
     69 
     70     @property
     71     def points(self):
     72         return self._skillController.skill_service.MySkillPoints(self.typeID)
     73 
     74     def IsLevelQueued(self, level):
     75         if self._overrideLevel is not None:
     76             return level <= self._overrideLevel
     77         queue = self._skillController.skill_queue_service.GetQueue()
     78         q = filter(lambda s: s.trainingTypeID == self.typeID, queue)
     79         return any((level == s.trainingToLevel for s in q))
     80 
     81     def IsLevelTraining(self, level):
     82         if not self.isTraining:
     83             return False
     84         queue = self._skillController.skill_queue_service.GetQueue()
     85         if not queue:
     86             return False
     87         isSameType = queue[0].trainingTypeID == self.typeID
     88         isSameLevel = queue[0].trainingToLevel == level
     89         return isSameType and isSameLevel
     90 
     91     def IsLevelTrainable(self, level):
     92         if level <= self.level:
     93             return False
     94         elif not self.isInjected:
     95             return False
     96         elif not self.isRequirementsMet and self.points == 0:
     97             return False
     98         elif self.isRestricted and self.restrictedLevel < level:
     99             return False
    100         else:
    101             return True
    102 
    103     def IsLevelTrainedByExpertSystem(self, level):
    104         myskills = self._skillController.skill_service.GetSkills()
    105         if self.typeID in myskills:
    106             virtualSkillLevel = myskills[self.typeID].virtualSkillLevel
    107             if virtualSkillLevel is not None and virtualSkillLevel >= level:
    108                 return True
    109         return False
    110 
    111     def GetMenu(self):
    112         return self._skillController.GetMenu()
    113 
    114     def GetDragData(self):
    115         return self._skillController.GetDragData()
    116 
    117 
    118 def CreateSkillBarController(typeID, requiredLevel = None, overrideLevel = None):
    119     return SkillBarController(SkillController(typeID), requiredLevel=requiredLevel, overrideLevel=overrideLevel)