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

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()