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