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

activityView.py (6325B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\shared\careerPortal\circleView\activityView.py
      2 import carbonui.const as uiconst
      3 import eve.client.script.ui.shared.careerPortal.careerConst as careerConst
      4 import careergoals.client.const as careerGoalsConst
      5 import telemetry
      6 from carbonui.uianimations import animations
      7 from carbonui.util.dpi import ScaleDpi
      8 from eve.client.script.ui.shared.careerPortal import cpSignals
      9 from eve.client.script.ui.shared.careerPortal.circleView.activityNode import ActivityNodeObject, ActivityNode
     10 from eve.client.script.ui.shared.careerPortal.circleView.circleView import CircleView, CircleViewContainer
     11 OUTSIDE_SCALE = (1.3, 1.3)
     12 MAXIMIZED_SCALE = (1.0, 1.0)
     13 MINIMIZED_SCALE = (0.65, 0.65)
     14 OPACITY_BY_STATE = {careerConst.ActivitiesViewState.IN_FOCUS: 1,
     15  careerConst.ActivitiesViewState.ONE_DOWN: 0.5,
     16  careerConst.ActivitiesViewState.HIDDEN: 0.0}
     17 CIRCLE_HOVER_OPACITY = 1.0
     18 NODE_SIZE = 48
     19 
     20 class ActivityView(CircleViewContainer):
     21     default_name = 'ActivityView'
     22     currentState = None
     23 
     24     def CreateCircleView(self, *args, **kwargs):
     25         return ActivityCircleView(parent=self, *args, **kwargs)
     26 
     27     def GetSignals(self):
     28         signals = super(ActivityView, self).GetSignals()
     29         signals.extend([(careerConst.CAREER_WINDOW_STATE_SETTING.on_change, self.OnCareerWindowStateChanged), (cpSignals.on_career_node_hover_on, self.OnCareerNodeHoverOn), (cpSignals.on_career_node_hover_off, self.OnCareerNodeHoverOff)])
     30         return signals
     31 
     32     def OnCareerWindowStateChanged(self, state, animate = True):
     33         if state == careerConst.CareerWindowState.CAREERS_VIEW:
     34             self.AnimateOut()
     35             self.circleView.innerCircles.ScaleUp()
     36         elif state == careerConst.CareerWindowState.ACTIVITIES_VIEW:
     37             self.LoadActivities()
     38             if self.currentState == careerConst.CareerWindowState.GOALS_VIEW:
     39                 self.Maximize()
     40             else:
     41                 self.AnimateIn()
     42         elif state == careerConst.CareerWindowState.GOALS_VIEW:
     43             self.LoadActivities()
     44             self.Minimize()
     45             animations.FadeOut(self.circleView.innerCircles, duration=0.4)
     46             animations.FadeOut(self.circleView.fill, duration=0.4)
     47             animations.FadeIn(self, duration=0.4)
     48         self.currentState = state
     49 
     50     def OnCareerNodeHoverOn(self, *args):
     51         currentState = careerConst.CAREER_WINDOW_STATE_SETTING.get()
     52         if currentState == careerConst.CareerWindowState.ACTIVITIES_VIEW:
     53             self.circleView.innerCircles.ScaleDown()
     54             animations.FadeOut(self.circleView.fill, duration=0.4)
     55             animations.FadeTo(self, startVal=self.opacity, endVal=0.3, duration=0.4)
     56         elif currentState == careerConst.CareerWindowState.GOALS_VIEW:
     57             animations.FadeIn(self.circleView.innerCircles, duration=0.4)
     58             animations.FadeIn(self.circleView.outerCircle, duration=0.4)
     59             animations.FadeIn(self.circleView.fill, endVal=0.5, duration=0.4)
     60 
     61     def OnCareerNodeHoverOff(self, *args):
     62         currentState = careerConst.CAREER_WINDOW_STATE_SETTING.get()
     63         if currentState == careerConst.CareerWindowState.ACTIVITIES_VIEW:
     64             self.circleView.innerCircles.ScaleUp()
     65             animations.FadeTo(self.circleView.fill, startVal=0, endVal=0.4, duration=0.4)
     66             animations.FadeIn(self, duration=0.4)
     67         elif currentState == careerConst.CareerWindowState.GOALS_VIEW:
     68             animations.FadeOut(self.circleView.innerCircles, duration=0.4)
     69             animations.FadeTo(self.circleView.outerCircle, startVal=self.circleView.outerCircle.opacity, endVal=0.25, duration=0.4)
     70             animations.FadeOut(self.circleView.fill, duration=0.4)
     71 
     72     def Minimize(self):
     73         animations.Tr2DScaleTo(self.circleView, startScale=self.circleView.scale, endScale=MINIMIZED_SCALE)
     74         self.circleView.outerCircle.outputMode = uiconst.OUTPUT_COLOR
     75         animations.FadeTo(self.circleView.outerCircle, startVal=1, endVal=0.25, duration=0.5, curveType=uiconst.ANIM_SMOOTH)
     76 
     77     def Maximize(self):
     78         animations.Tr2DScaleTo(self.circleView, startScale=self.circleView.scale, endScale=MAXIMIZED_SCALE)
     79         self.circleView.outerCircle.outputMode = uiconst.OUTPUT_COLOR_AND_GLOW
     80         animations.FadeTo(self.circleView.outerCircle, startVal=0.25, endVal=1, duration=0.5, curveType=uiconst.ANIM_SMOOTH)
     81         animations.FadeTo(self.circleView.fill, startVal=0, endVal=0.25, duration=1.5, timeOffset=0.4, curveType=uiconst.ANIM_OVERSHOT3)
     82 
     83     def AnimateIn(self):
     84         self.Show()
     85         animations.FadeIn(self, duration=1)
     86         animations.Tr2DScaleTo(self.circleView, startScale=(1.3, 1.3), endScale=MAXIMIZED_SCALE)
     87         animations.FadeTo(self.circleView.outerCircle, startVal=0.5, endVal=1, duration=0.5, curveType=uiconst.ANIM_SMOOTH, timeOffset=0.6)
     88         animations.FadeTo(self.circleView.fill, startVal=0, endVal=0.25, duration=1.5, timeOffset=0.4, curveType=uiconst.ANIM_OVERSHOT3)
     89         self.circleView.outerCircle.outputMode = uiconst.OUTPUT_COLOR_AND_GLOW
     90 
     91     def AnimateOut(self):
     92         animations.FadeOut(self, callback=self.Hide)
     93         animations.Tr2DScaleTo(self.circleView, startScale=MAXIMIZED_SCALE, endScale=OUTSIDE_SCALE)
     94 
     95     @telemetry.ZONE_METHOD
     96     def LoadActivities(self):
     97         selectedPath = careerConst.SELECTED_CAREER_PATH_SETTING.get()
     98         activities = careerGoalsConst.CAREER_PATH_GROUPS.get(selectedPath, [])
     99         if not activities:
    100             return
    101         if set(activities.values()) == set(self.nodesByID.keys()):
    102             return
    103         self.circleView.Reset()
    104         self.nodesByID.clear()
    105         windowState = careerConst.CAREER_WINDOW_STATE_SETTING.get()
    106         for idx, activityID in enumerate(activities.itervalues()):
    107             nodeObject = ActivityNodeObject(selectedPath, activityID)
    108             node = ActivityNode(name='activityNode_%s' % activityID, nodeObject=nodeObject, highlight=activityID in careerConst.HIGHLIGHTED_ACTIVITIES[selectedPath], initialState=windowState)
    109             self.circleView.AddNode(node)
    110             self.nodesByID[activityID] = node
    111 
    112         self.circleView.UpdateCircle()
    113 
    114 
    115 class ActivityCircleView(CircleView):
    116 
    117     def GetNodeSize(self):
    118         return ScaleDpi(NODE_SIZE)