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

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