bloodlineBox.py (5305B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\login\charcreation\empireui\bloodlineBox.py 2 from carbon.common.lib.const import genderFemale 3 from carbonui import const as uiconst 4 from carbonui.primitives.container import Container 5 from carbonui.primitives.sprite import Sprite, StreamingVideoSprite 6 import charactercreator.client.scalingUtils as ccScalingUtils 7 from eve.client.script.ui.login.charcreation.empireui.bloodlineConst import BloodlineResType, GetImage, GetVideo 8 from eve.client.script.ui.login.charcreation.empireui.bloodlineConst import PLATFORM_VERTICAL_OFFSET, PLATFORM_PATH 9 from eve.client.script.ui.login.charcreation.empireui.bloodlineConst import GetPlatformHorizontalOffset 10 from trinity import TR2_SBM_BLEND, TR2_SFX_COPY 11 from uthread2 import StartTasklet 12 RESOURCE_WIDTH = 105 13 VIDEO_HEIGHT = 325 14 IMAGE_HEIGHT = 321 15 PLATFORM_WIDTH = 150 16 PLATFORM_HEIGHT = 30 17 PLATFORM_OPACITY = 1.0 18 19 class BloodlineBox(Container): 20 21 def ApplyAttributes(self, attributes): 22 self.bloodlineID = attributes.Get('bloodlineID', None) 23 self.gender = attributes.Get('gender', None) 24 self.isSelected = attributes.Get('isSelected', None) 25 self.isHovered = False 26 self.onSelection = attributes.Get('onSelection', None) 27 self.onHover = attributes.Get('onHover', None) 28 self.onDehover = attributes.Get('onDehover', None) 29 self.useVideos = attributes.Get('useVideos', True) 30 showSelectedOnLoad = attributes.Get('showSelectedOnLoad', True) 31 self.resAlign = attributes.Get('resAlign', uiconst.TOLEFT_NOPUSH) 32 Container.ApplyAttributes(self, attributes) 33 StartTasklet(self.LoadContent, showSelectedOnLoad) 34 35 def LoadContent(self, showSelectedOnLoad): 36 self.resources = {} 37 for type in [BloodlineResType.SELECTED, BloodlineResType.NOT_SELECTED]: 38 self.resources[type] = self.ConstructResource(type) 39 40 self.ConstructPlatform() 41 if showSelectedOnLoad: 42 self.ShowSelected() 43 else: 44 self.ShowNotSelected() 45 46 def ConstructResource(self, type): 47 if self.useVideos: 48 return self.ConstructVideo(type) 49 return self.ConstructImage(type) 50 51 def ConstructVideo(self, type): 52 scale = ccScalingUtils.GetScaleFactor() 53 path = GetVideo(type, self.bloodlineID, self.gender) 54 video = StreamingVideoSprite(parent=self, name='bloodlineVideo', videoPath=path, videoLoop=True, align=self.resAlign, width=RESOURCE_WIDTH * scale, height=VIDEO_HEIGHT * scale, state=uiconst.UI_DISABLED, spriteEffect=TR2_SFX_COPY, blendMode=TR2_SBM_BLEND, disableAudio=True, muteAudio=True, videoAutoPlay=True, opacity=0.0) 55 return video 56 57 def ConstructImage(self, type): 58 scale = ccScalingUtils.GetScaleFactor() 59 path = GetImage(type, self.bloodlineID, self.gender) 60 image = Sprite(parent=self, name='bloodlineSprite', texturePath=path, align=self.resAlign, width=RESOURCE_WIDTH * scale, height=IMAGE_HEIGHT * scale, state=uiconst.UI_DISABLED, opacity=0.0) 61 return image 62 63 def ConstructPlatform(self): 64 scale = ccScalingUtils.GetScaleFactor() 65 width = PLATFORM_WIDTH * scale 66 height = PLATFORM_HEIGHT * scale 67 containerVerticalOffset = -height / 2 68 top = containerVerticalOffset + PLATFORM_VERTICAL_OFFSET * scale 69 widthOffset = (width - RESOURCE_WIDTH) / 2 70 containerHorizontalOffset = widthOffset if self.gender == genderFemale else -widthOffset 71 left = containerHorizontalOffset + GetPlatformHorizontalOffset(self.bloodlineID, self.gender) * scale 72 platformContainer = Container(parent=self, name='platformContainer', align=self.resAlign, width=width, height=height, state=uiconst.UI_DISABLED) 73 Sprite(parent=platformContainer, name='platformSprite', texturePath=PLATFORM_PATH, align=uiconst.CENTERBOTTOM, width=width, height=height, state=uiconst.UI_DISABLED, opacity=PLATFORM_OPACITY, top=top, left=left) 74 75 def SwitchType(self, typeToShow): 76 for type, res in self.resources.iteritems(): 77 newOpacity = 1.0 if type == typeToShow else 0.0 78 res.opacity = newOpacity 79 80 def ShowSelected(self): 81 self.SwitchType(BloodlineResType.SELECTED) 82 83 def ShowNotSelected(self): 84 self.SwitchType(BloodlineResType.NOT_SELECTED) 85 86 def ShowHover(self): 87 self.SwitchType(BloodlineResType.SELECTED) 88 89 def ShowDehover(self): 90 self.SwitchType(BloodlineResType.NOT_SELECTED) 91 92 def OnMouseEnter(self, *args): 93 self.isHovered = True 94 if not self.isSelected: 95 if self.onHover: 96 self.onHover(self.bloodlineID, self.gender) 97 98 def OnMouseExit(self, *args): 99 self.isHovered = False 100 if not self.isSelected: 101 if self.onDehover: 102 self.onDehover(self.bloodlineID, self.gender) 103 104 def OnClick(self, *args): 105 if not self.isSelected and self.onSelection: 106 self.onSelection(self.bloodlineID, self.gender) 107 108 def Select(self): 109 if not self.isSelected: 110 self.isSelected = True 111 self.ShowSelected() 112 113 def Deselect(self): 114 if self.isSelected: 115 self.isSelected = False 116 self.ShowNotSelected()