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)