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

rewardItem.py (8983B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\shared\loginRewards\rewardItem.py
      2 import trinity
      3 from carbon.common.script.util.format import FmtAmt
      4 from carbonui import uiconst, fontconst
      5 from carbonui.primitives.container import Container
      6 from carbonui.primitives.containerAutoSize import ContainerAutoSize
      7 from carbonui.primitives.frame import Frame
      8 from carbonui.primitives.sprite import Sprite
      9 from carbonui.uianimations import animations
     10 from clonegrade import COLOR_OMEGA_GOLD
     11 from eve.client.script.ui.control.eveIcon import Icon
     12 from eve.client.script.ui.control.eveLabel import Label
     13 from eve.client.script.ui.shared.loginRewards.itemTierCont import ItemTierCont
     14 from eve.client.script.ui.shared.loginRewards.rewardUiConst import GREEN_CHECKMARK
     15 from localization import GetByLabel
     16 from loginrewards.common.const import CLAIM_STATE_CLAIMED, TIER1
     17 from loginrewards.common.rewardUtils import GetTierColor, ShouldShowQty
     18 COLOR_ITEM_CLAIMED_BG = (0.5, 0.5, 0.5, 0.15)
     19 COLOR_ITEM_NOT_CLAIMED_BG = (1.0, 1.0, 1.0, 0.1)
     20 COLOR_ITEM_TODAY_BG = (1.0, 1.0, 1.0, 0.05)
     21 OVERLAY_ICON_SIZE = 96
     22 
     23 class RewardItem(Container):
     24     default_name = 'rewardItem'
     25 
     26     def ApplyAttributes(self, attributes):
     27         self.panelController = attributes.panelController
     28         pConst = self.panelController.GetPanelConstants()
     29         self.default_width = pConst.DAY_WIDTH
     30         self.default_height = pConst.DAY_HEIGHT
     31         self.selectedFill = None
     32         Container.ApplyAttributes(self, attributes)
     33         self.rewardInfo = attributes.rewardInfo
     34         self.tierLineCont = ItemTierCont(parent=self, top=pConst.DAY_HEIGHT / 4)
     35         self.bgFrame = Frame(name='smallRewardBracket_bg', bgParent=self, texturePath='res:/UI/Texture/classes/LoginCampaign/smallRewardBracket_bg.png', cornerSize=16)
     36         self.selectedFrame = Frame(bgParent=self, name='rewardFrame', texturePath='res:/UI/Texture/classes/LoginCampaign/smallRewardBracket_stroke.png', cornerSize=16)
     37         self.selectedFrame.fullOpacity = self.selectedFrame.opacity
     38         self.selectedFrame.opacity = 0.0
     39         self.bgFrame.display = False
     40         self.claimedIcon = Sprite(name='claimedIcon', parent=self, align=uiconst.CENTER, pos=(0, 0, 64, 64), texturePath='res:/ui/Texture/classes/LoginCampaign/claimedCheckNew.png', hint=GetByLabel('UI/LoginRewards/HasBeenClaimed'), color=GREEN_CHECKMARK)
     41         self.iconCont = Container(name='iconCont', parent=self, align=uiconst.CENTER, pos=(0,
     42          0,
     43          pConst.ICON_SIZE,
     44          pConst.ICON_SIZE), state=uiconst.UI_DISABLED)
     45         self.overlaySprite = Sprite(name='overlaySprite', parent=self.iconCont, align=uiconst.CENTER, pos=(0,
     46          0,
     47          OVERLAY_ICON_SIZE,
     48          OVERLAY_ICON_SIZE))
     49         self.qtypar = ContainerAutoSize(parent=self.iconCont, name='qtypar', align=uiconst.BOTTOMRIGHT, bgColor=(0, 0, 0, 0.9))
     50         self.quantityLabel = Label(parent=self.qtypar, maxLines=1, bold=True, fontsize=fontconst.EVE_SMALL_FONTSIZE, opacity=1.0, padding=(4, 1, 4, 0))
     51         self.itemIcon = Icon(parent=self.iconCont, align=uiconst.CENTER, pos=(0,
     52          0,
     53          pConst.ICON_SIZE,
     54          pConst.ICON_SIZE))
     55         self.LoadRewardInfo(self.rewardInfo)
     56 
     57     def ConstructSelectedFill(self):
     58         if self.selectedFill is None:
     59             self.selectedFill = Frame(name='selectedFill', bgParent=self, texturePath='res:/UI/Texture/classes/LoginCampaign/smallRewardBracket_bg.png', cornerSize=16, color=COLOR_ITEM_TODAY_BG)
     60             self.selectedFill.fullOpacity = self.selectedFill.opacity
     61 
     62     def LoadRewardInfo(self, rewardInfo):
     63         if not rewardInfo:
     64             return
     65         self.bgFrame.display = True
     66         qty = rewardInfo.qty
     67         tier = rewardInfo.tier
     68         typeID = rewardInfo.typeID
     69         texturePath = rewardInfo.texturePath
     70         overlayTexturePath = rewardInfo.overlayTexturePath
     71         if tier:
     72             color = GetTierColor(tier)
     73             if tier == TIER1:
     74                 self.tierLineCont.display = False
     75             else:
     76                 self.tierLineCont.display = True
     77                 self.tierLineCont.SetColor(color)
     78             self.selectedFrame.color = color
     79         else:
     80             self.tierLineCont.display = False
     81         self.ModifyLayout(rewardInfo)
     82         if texturePath:
     83             self.itemIcon.LoadIcon(texturePath)
     84         else:
     85             self.itemIcon.LoadIconByTypeID(typeID=typeID, isCopy=True)
     86         if overlayTexturePath:
     87             self.overlaySprite.LoadTexture(overlayTexturePath)
     88             self.overlaySprite.display = True
     89         else:
     90             self.overlaySprite.display = False
     91         self.qtypar.display = False
     92         if ShouldShowQty(rewardInfo):
     93             self.qtypar.display = True
     94             self.quantityLabel.text = FmtAmt(qty)
     95 
     96     def ModifyLayout(self, rewardInfo):
     97         isClaimed = rewardInfo.claimState == CLAIM_STATE_CLAIMED
     98         self.ModifyClaimedState(isClaimed)
     99 
    100     def ModifyClaimedState(self, isClaimed):
    101         pConst = self.panelController.GetPanelConstants()
    102         showAsClaimed = isClaimed and pConst.SHOW_CLAIMED
    103         if showAsClaimed:
    104             self.claimedIcon.display = True
    105             self.bgFrame.SetRGBA(*COLOR_ITEM_CLAIMED_BG)
    106         else:
    107             self.claimedIcon.display = False
    108             self.bgFrame.SetRGBA(*COLOR_ITEM_NOT_CLAIMED_BG)
    109         self.ModifyFadedState(showAsClaimed)
    110 
    111     def ModifyFadedState(self, isFaded):
    112         if isFaded:
    113             self.tierLineCont.SetTierLineOpacity(0.2)
    114             self.iconCont.opacity = 0.5 if self.itemIcon.spriteEffect == trinity.TR2_SFX_SOFTLIGHT else 0.25
    115         else:
    116             self.tierLineCont.SetTierLineOpacity(1.0)
    117             self.iconCont.opacity = 1.0
    118 
    119     def SetSelectedState(self, isOn, animateTime = 0):
    120         self.ConstructSelectedFill()
    121         if self.selectedFill:
    122             endValue = self.selectedFill.fullOpacity if isOn else 0.0
    123             if animateTime:
    124                 animations.FadeIn(self.selectedFill, endVal=endValue, duration=animateTime)
    125                 animations.FadeIn(self.selectedFrame, endVal=endValue, duration=animateTime)
    126             else:
    127                 self.selectedFill.opacity = endValue
    128                 self.selectedFrame.opacity = endValue
    129         if self.selectedFrame:
    130             self.tierLineCont.display = self.rewardInfo.tier != TIER1 or isOn
    131             endValue = self.selectedFrame.fullOpacity if isOn else 0.0
    132             if animateTime:
    133                 animations.FadeIn(self.selectedFrame, endVal=endValue, duration=animateTime)
    134             else:
    135                 self.selectedFrame.opacity = endValue
    136 
    137     def UpdateEntryState(self, entryIdx, selectedIdx, updateKeyVal):
    138         claimedDays = updateKeyVal.claimedDays
    139         isClaimed = entryIdx in claimedDays
    140         self.ModifyClaimedState(isClaimed)
    141 
    142 
    143 class TwoTrackRewardItem(RewardItem):
    144 
    145     def ModifyLayout(self, rewardInfo):
    146         return RewardItem.ModifyLayout(self, rewardInfo)
    147 
    148     def UpdateEntryState(self, entryIdx, selectedIdx, updateKeyVal):
    149         RewardItem.UpdateEntryState(self, entryIdx, selectedIdx, updateKeyVal)
    150         claimedDays = updateKeyVal.claimedDays
    151         isClaimed = entryIdx in claimedDays
    152         if isClaimed:
    153             return
    154         availableRewardsDays = updateKeyVal.availableRewardsDays
    155         itemCanStillBeClaimed = entryIdx in availableRewardsDays
    156         if not itemCanStillBeClaimed and entryIdx > selectedIdx:
    157             SetSaturation(self.iconCont, self.itemIcon, 0.0)
    158         if self.IsOmegaRestricted():
    159             self.ModifyFadedState(True)
    160 
    161     def IsOmegaRestricted(self):
    162         return False
    163 
    164 
    165 class OmegaRewardItem(TwoTrackRewardItem):
    166 
    167     def ModifyLayout(self, rewardInfo):
    168         isClaimed = rewardInfo.claimState == CLAIM_STATE_CLAIMED
    169         self.SetOmegaState(isClaimed)
    170         return TwoTrackRewardItem.ModifyLayout(self, rewardInfo)
    171 
    172     def LoadRewardInfo(self, rewardInfo):
    173         if not rewardInfo:
    174             return
    175         TwoTrackRewardItem.LoadRewardInfo(self, rewardInfo)
    176         isClaimed = rewardInfo.claimState == CLAIM_STATE_CLAIMED
    177         self.SetOmegaState(isClaimed)
    178 
    179     def SetOmegaState(self, isClaimed):
    180         if isClaimed:
    181             return
    182         if self.panelController.IsOmega():
    183             newFrameColor = COLOR_OMEGA_GOLD[:3] + (0.45,)
    184             self.bgFrame.SetRGBA(*newFrameColor)
    185         else:
    186             self.bgFrame.SetRGBA(*COLOR_ITEM_NOT_CLAIMED_BG)
    187 
    188     def IsOmegaRestricted(self):
    189         return not self.panelController.IsOmega()
    190 
    191     def ModifyClaimedState(self, isClaimed):
    192         TwoTrackRewardItem.ModifyClaimedState(self, isClaimed)
    193         self.SetOmegaState(isClaimed)
    194 
    195 
    196 def SetSaturation(cont, sprite, saturation = 1.0):
    197     if saturation < 1.0:
    198         sprite.spriteEffect = trinity.TR2_SFX_SOFTLIGHT
    199         cont.opacity = 0.5
    200     else:
    201         sprite.spriteEffect = trinity.TR2_SFX_COPY
    202     sprite.saturation = saturation