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

epicArcNodeContainer.py (3213B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\shared\epicArcs\epicArcNodeContainer.py
      2 from carbonui import uiconst
      3 from carbonui.primitives.container import Container
      4 from carbonui.primitives.gridcontainer import GridContainer
      5 from carbonui.primitives.stretchspritehorizontal import StretchSpriteHorizontal
      6 from carbonui.uianimations import animations
      7 from eve.client.script.ui.shared.epicArcs.chapterLockCont import ChapterLockCont
      8 from eve.client.script.ui.shared.epicArcs.epicArcMissionCont import EpicArcMissionCont
      9 from eve.client.script.ui.shared.epicArcs.epicArcUIUtil import GetLineColor
     10 ICONSIZE_LARGE = 40
     11 ICONSIZE_SMALL = 34
     12 
     13 class EpicArcNodeContainer(Container):
     14     default_name = 'EpicArcNodeContainer'
     15     default_height = 40
     16 
     17     def ApplyAttributes(self, attributes):
     18         Container.ApplyAttributes(self, attributes)
     19         self.epicArc = attributes.epicArc
     20         self.chapterLockCont = ChapterLockCont(parent=self, align=uiconst.TORIGHT)
     21         self.iconCont = Container(name='iconCont', parent=self, align=uiconst.TOALL, state=uiconst.UI_NORMAL)
     22         self.lineGridCont = GridContainer(name='lineGridCont', parent=self, align=uiconst.TOALL, state=uiconst.UI_NORMAL, lines=1, padLeft=ICONSIZE_LARGE / 2, padRight=ICONSIZE_LARGE / 2)
     23 
     24     def ConstructNodes(self, chapterID, animate = False):
     25         if animate:
     26             animations.FadeOut(self, duration=0.2, sleep=True)
     27         missionNodes = self.epicArc.GetChapterMissions(chapterID)
     28         numIcons = self.ConstructMissionNodes(missionNodes)
     29         self.ConstructMissionConnectorLines(missionNodes, numIcons)
     30         lastNode = missionNodes[-1]
     31         self.chapterLockCont.SetNode(lastNode)
     32         if animate:
     33             animations.FadeIn(self, duration=0.3)
     34 
     35     def ConstructMissionConnectorLines(self, missionNodes, numIcons):
     36         self.lineGridCont.Flush()
     37         for i in xrange(len(missionNodes) - 1):
     38             padLeft = self.GetIconSize(missionNodes[i]) / 2 - 2
     39             padRight = self.GetIconSize(missionNodes[i + 1]) / 2 - 2
     40             if i < numIcons - 1:
     41                 StretchSpriteHorizontal(parent=self.lineGridCont, align=uiconst.TOALL, texturePath='res:/UI/Texture/Classes/EpicArcBar/line.png', padding=(padLeft,
     42                  17,
     43                  padRight,
     44                  18), leftEdgeSize=4, rightEdgeSize=4, color=GetLineColor(missionNodes[i].IsComplete()))
     45 
     46     def ConstructMissionNodes(self, missionNodes):
     47         self.iconCont.Flush()
     48         numIcons = len(missionNodes)
     49         self.iconCont.columns = numIcons
     50         for i, missionNode in enumerate(missionNodes):
     51             iconSize = self.GetIconSize(missionNode)
     52             left = float(i) / (numIcons - 1)
     53             if left == 1:
     54                 left -= 0.0001
     55             EpicArcMissionCont(parent=self.iconCont, missionNode=missionNode, align=uiconst.TOPLEFT_PROP, left=left, top=0.5, width=ICONSIZE_LARGE, height=ICONSIZE_LARGE, iconSize=iconSize)
     56 
     57         return numIcons
     58 
     59     def GetIconSize(self, missionNode):
     60         if missionNode.IsActive() or missionNode.IsLastInChapter():
     61             return ICONSIZE_LARGE
     62         else:
     63             return ICONSIZE_SMALL