skillPlanProgressGauge.py (3569B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\skillPlan\milestone\skillPlanProgressGauge.py 2 import math 3 from carbonui import uiconst 4 from carbonui.primitives.sprite import Sprite 5 from carbonui.uianimations import animations 6 from eve.client.script.ui import eveColor 7 from eve.client.script.ui.skillPlan.milestone.milestoneConst import START_ANGLE, GAUGE_ANGLE 8 from eve.client.script.ui.skillPlan.milestone.milestoneProgressGauge import MilestoneProgressGauge 9 from eve.client.script.ui.skillPlan.milestone.milestoneUtil import GetMissingSkillsColor 10 11 class SkillPlanProgressGauge(MilestoneProgressGauge): 12 startAngle = START_ANGLE 13 angle = GAUGE_ANGLE 14 gaugeTexturePath = 'res:/UI/Texture/classes/SkillPlan/milestones/gaugeBG.png' 15 16 def ApplyAttributes(self, attributes): 17 super(SkillPlanProgressGauge, self).ApplyAttributes(attributes) 18 self.UpdateSpritePositions() 19 20 def UpdateSpriteColors(self, animate = True): 21 if not self.controller: 22 return 23 trainedRatio = self.controller.GetProgressRatio() 24 inTrainingRatio = self.controller.GetInTrainingRatio() 25 startColor = self._GetStartSpriteColor(trainedRatio) 26 endColor = self._GetEndSpriteColor(inTrainingRatio, trainedRatio) 27 if animate: 28 duration = 1.0 29 animations.SpColorMorphTo(self.startSprite, self.startSprite.GetRGB(), startColor, duration=duration) 30 animations.SpColorMorphTo(self.endSprite, self.endSprite.GetRGB(), endColor, duration=duration) 31 else: 32 self.startSprite.SetRGBA(*startColor) 33 self.endSprite.SetRGBA(*endColor) 34 35 def _GetStartSpriteColor(self, trainedRatio): 36 if trainedRatio > 0.0: 37 color = eveColor.WHITE 38 else: 39 color = GetMissingSkillsColor(self.highlightNotInTraining) 40 return color 41 42 def _GetEndSpriteColor(self, inTrainingRatio, trainedRatio): 43 if trainedRatio >= 1.0: 44 color = eveColor.WHITE 45 elif trainedRatio + inTrainingRatio >= 1.0: 46 color = eveColor.CRYO_BLUE 47 else: 48 color = GetMissingSkillsColor(self.highlightNotInTraining) 49 return color 50 51 def UpdateProgress(self, animate = True): 52 super(SkillPlanProgressGauge, self).UpdateProgress(animate) 53 self.UpdateSpriteColors(animate) 54 55 def UpdateSpritePositions(self): 56 radius = self.radius * 0.94 57 left = radius * math.cos(math.pi - self.startAngle) 58 top = radius * math.sin(math.pi - self.startAngle) 59 self.startSprite.left = -left 60 self.startSprite.top = top 61 self.endSprite.left = left 62 self.endSprite.top = top 63 64 def SetRadius(self, radius): 65 super(SkillPlanProgressGauge, self).SetRadius(radius) 66 self.UpdateSpritePositions() 67 68 def _ApplyNewRadius(self): 69 super(SkillPlanProgressGauge, self)._ApplyNewRadius() 70 self.UpdateSpritePositions() 71 72 def ConstructLayout(self): 73 self.startSprite = Sprite(name='startSprite', parent=self, align=uiconst.CENTER, state=uiconst.UI_DISABLED, pos=(0, 0, 30, 30), texturePath='res:/UI/Texture/classes/SkillPlan/milestones/gaugeStartEnd.png') 74 self.endSprite = Sprite(name='endSprite', parent=self, align=uiconst.CENTER, state=uiconst.UI_DISABLED, pos=(0, 0, 30, 30), texturePath='res:/UI/Texture/classes/SkillPlan/milestones/gaugeStartEnd.png') 75 super(SkillPlanProgressGauge, self).ConstructLayout() 76 77 def GetLineWidth(self, radius): 78 return 0.22 * radius