goalView.py (4822B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\shared\careerPortal\circleView\goalView.py 2 import carbonui.const as uiconst 3 import eve.client.script.ui.shared.careerPortal.careerConst as careerConst 4 import uthread2 5 from carbonui.uianimations import animations 6 from carbonui.util.dpi import ScaleDpi 7 from careergoals.client.career_goal_svc import get_career_goals_svc 8 from eve.client.script.ui.shared.careerPortal import cpSignals 9 from eve.client.script.ui.shared.careerPortal.careerControllerUI import get_career_portal_controller_svc 10 from eve.client.script.ui.shared.careerPortal.circleView.circleView import CircleView, CircleViewContainer 11 from eve.client.script.ui.shared.careerPortal.circleView.goalNode import GoalNode 12 BTN_CONT_HEIGHT = 30 13 EXTRA_TEXT_PADDING = 6 14 WRAP_BUFFER = EXTRA_TEXT_PADDING + 6 15 PROP_SIZE_BY_STATE = {careerConst.GoalsViewState.IN_FOCUS: 0.7, 16 careerConst.GoalsViewState.HIDDEN: 1.0} 17 OPACITY_BY_STATE = {careerConst.GoalsViewState.IN_FOCUS: 1, 18 careerConst.GoalsViewState.HIDDEN: 0.0} 19 NODE_SIZE = 48 20 21 class GoalView(CircleViewContainer): 22 23 def ApplyAttributes(self, attributes): 24 self.currentState = None 25 super(GoalView, self).ApplyAttributes(attributes) 26 27 def CreateCircleView(self, *args, **kwargs): 28 return GoalCircleView(parent=self, *args, **kwargs) 29 30 def GetSignals(self): 31 signals = super(GoalView, self).GetSignals() 32 signals.extend([(cpSignals.on_activity_circle_one_down_hover_on, self.OnActivityCircleHoverOn), 33 (cpSignals.on_activity_circle_one_down_hover_off, self.OnActivityCircleHoverOff), 34 (cpSignals.on_clicked_outside, self.OnClickedOutside), 35 (cpSignals.on_career_node_hover_on, self.OnCareerNodeHoverOn), 36 (cpSignals.on_career_node_hover_off, self.OnCareerNodeHoverOff)]) 37 return signals 38 39 def OnCareerNodeHoverOn(self, *args): 40 currentState = careerConst.CAREER_WINDOW_STATE_SETTING.get() 41 if currentState != careerConst.CareerWindowState.GOALS_VIEW: 42 return 43 self.circleView.innerCircles.ScaleDown() 44 animations.FadeOut(self.circleView.fill, duration=0.4) 45 animations.FadeTo(self, startVal=self.opacity, endVal=0.3, duration=0.4) 46 47 def OnCareerNodeHoverOff(self, *args): 48 currentState = careerConst.CAREER_WINDOW_STATE_SETTING.get() 49 if currentState != careerConst.CareerWindowState.GOALS_VIEW: 50 return 51 self.circleView.innerCircles.ScaleUp() 52 animations.FadeIn(self.circleView.fill, endVal=0.5, duration=0.4) 53 animations.FadeIn(self, duration=0.4) 54 55 def OnCareerWindowStateChanged(self, state, animate = True): 56 if state in [careerConst.CareerWindowState.CAREERS_VIEW, careerConst.CareerWindowState.ACTIVITIES_VIEW]: 57 self.AnimateOut() 58 elif state == careerConst.CareerWindowState.GOALS_VIEW: 59 self.LoadGoals() 60 self.AnimateIn() 61 62 def LoadGoals(self): 63 selectedPath = careerConst.SELECTED_CAREER_PATH_SETTING.get() 64 selectedActivity = careerConst.SELECTED_ACTIVITY_SETTING.get() 65 goals = get_career_goals_svc().get_goal_data_controller().get_goals_in_group(selectedPath, selectedActivity) 66 self.circleView.Reset() 67 for i, goal in enumerate(goals): 68 node = GoalNode(goal=goal) 69 self.circleView.AddNode(node) 70 71 self.circleView.UpdateCircle() 72 73 def AnimateIn(self): 74 self.Show() 75 animations.FadeIn(self, duration=1) 76 animations.Tr2DScaleTo(self.circleView, startScale=(1.4, 1.4), endScale=(1.0, 1.0)) 77 animations.FadeTo(self.circleView.fill, startVal=0, endVal=0.5, duration=1.5, timeOffset=0.4, curveType=uiconst.ANIM_OVERSHOT3) 78 79 def AnimateOut(self): 80 if self.opacity <= 0: 81 self.Hide() 82 return 83 animations.FadeOut(self, callback=self.Hide) 84 animations.Tr2DScaleTo(self.circleView, startScale=(1.0, 1.0), endScale=(1.4, 1.4)) 85 86 def OnActivityCircleHoverOn(self): 87 self.circleView.SetArcOpacity(1.0, careerConst.HOVER_ANIMATION_DURATION) 88 89 def OnActivityCircleHoverOff(self): 90 self.circleView.SetArcOpacity(self.circleView.default_arc_opacity, careerConst.HOVER_ANIMATION_DURATION) 91 92 def OnClickedOutside(self): 93 if self.currentState == careerConst.GoalsViewState.IN_FOCUS: 94 get_career_portal_controller_svc().select_goal(None) 95 96 97 class GoalCircleView(CircleView): 98 flairCircle = None 99 100 def UpdateCircle(self): 101 super(GoalCircleView, self).UpdateCircle() 102 103 def GetNodeSize(self): 104 return ScaleDpi(NODE_SIZE) 105 106 def ConstructOuterCircle(self, radius): 107 super(GoalCircleView, self).ConstructOuterCircle(radius) 108 self.outerCircle.outputMode = uiconst.OUTPUT_COLOR_AND_GLOW