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

benefit_details_page.py (4539B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\omega\upsell\pages\benefit_details_page.py
      2 import carbonui
      3 import carbonui.text.styles
      4 import eveicon
      5 import uthread2
      6 from carbonui import Align, TextColor, Density, ButtonVariant, ButtonStyle, AxisAlignment
      7 from carbonui.button.group import ButtonGroup
      8 from carbonui.control.button import Button
      9 from carbonui.control.scrollContainer import ScrollContainer
     10 from carbonui.primitives.container import Container
     11 from carbonui.primitives.containerAutoSize import ContainerAutoSize
     12 from carbonui.uianimations import animations
     13 from eve.client.script.ui import eveColor
     14 from eve.client.script.ui.omega.upsell import omegaUpsellConst, omegaUpsellSignals
     15 from eve.client.script.ui.omega.upsell.components.benefit_browser import BenefitBrowser
     16 from localization import GetByMessageID, GetByLabel
     17 from omega.client.clone_grade_svc import get_clone_grade_svc
     18 from store.client.offers.offer_provider_svc import get_offer_provider_svc
     19 from publicGateway.publicGatewaySvc import get_public_gateway_service
     20 from eve.client.script.ui.omega.upsell.analytics.event_messenger import EventMessenger
     21 
     22 class BenefitDetailsPage(Container):
     23 
     24     def __init__(self, omega_benefit_type, **kw):
     25         super(BenefitDetailsPage, self).__init__(**kw)
     26         self.event_messenger = EventMessenger(get_public_gateway_service())
     27         self.construct_layout()
     28         uthread2.start_tasklet(self.update, omega_benefit_type)
     29 
     30     def construct_layout(self):
     31         self.benefit_browser = BenefitBrowser(parent=self, align=Align.TOBOTTOM, padBottom=32)
     32         self.content = Container(name='content', parent=self, align=Align.HORIZONTALLY_CENTERED, width=0.8, minWidth=omegaUpsellConst.MIN_WIDTH)
     33         self.benefit_browser.on_benefit_selected.connect(self.on_benefit_browser)
     34         self.construct_right_cont()
     35 
     36     def update(self, omega_benefit_type):
     37         omega_benefit = get_clone_grade_svc().get_omega_benefit(omega_benefit_type)
     38         omegaUpsellSignals.set_hero_image(omega_benefit.hero_image_icon_path)
     39         self.header.text = GetByMessageID(omega_benefit.title_message_id)
     40         self.description.text = GetByMessageID(omega_benefit.description_message_id)
     41         self.benefit_browser.set_selected(omega_benefit_type)
     42         animations.FadeTo(self.content, 0.0, 1.0, duration=0.8)
     43         self.update_scroll_height()
     44         self.event_messenger.benefit_viewed(omega_benefit_type)
     45 
     46     def update_scroll_height(self, *args):
     47         w, h = self.right_cont.GetAbsoluteSize()
     48         self.scroll_cont.height = min(self.description.height, h * 0.5)
     49 
     50     def on_benefit_browser(self, omega_benefit_type):
     51         self.update(omega_benefit_type)
     52 
     53     def construct_right_cont(self):
     54         self.right_cont = Container(name='right_cont', parent=self.content, align=Align.TORIGHT_PROP, width=0.33, minWidth=400)
     55         self.right_cont.on_size_changed.connect(self.update_scroll_height)
     56         self.right_inner_cont = ContainerAutoSize(name='right_inner_cont', parent=self.right_cont, align=Align.VERTICALLY_CENTERED)
     57         self.right_inner_cont.on_size_changed.connect(self.update_scroll_height)
     58         self.header = carbonui.text.styles.TextHeadline(name='header', parent=self.right_inner_cont, align=Align.TOTOP, color=eveColor.WHITE)
     59         self.scroll_cont = ScrollContainer(parent=self.right_inner_cont, align=Align.TOTOP, padTop=16)
     60         self.description = carbonui.text.styles.TextHeader(name='description', parent=self.scroll_cont, align=Align.TOTOP, color=TextColor.NORMAL)
     61         self.construct_button_group()
     62 
     63     def construct_button_group(self):
     64         button_group = ButtonGroup(name='button_group', parent=self.right_inner_cont, align=Align.TOTOP, button_alignment=AxisAlignment.START, density=Density.EXPANDED, padTop=32)
     65         Button(name='upgrade_button', parent=button_group, label=GetByLabel('UI/OmegaUpsell/Upgrade'), texturePath=eveicon.omega, variant=ButtonVariant.PRIMARY, style=ButtonStyle.MONETIZATION, func=self.on_upgrade_button)
     66         Button(name='more_offers_button', parent=button_group, label=GetByLabel('UI/OmegaUpsell/MoreOffers'), variant=ButtonVariant.GHOST, style=ButtonStyle.MONETIZATION, func=self.on_more_offers_button)
     67 
     68     def on_upgrade_button(self, *args):
     69         offer_id = get_offer_provider_svc().get_default_omega_starter_pack_offer_id()
     70         omegaUpsellSignals.upgrade_to_offer(offer_id)
     71 
     72     def on_more_offers_button(self, *args):
     73         omegaUpsellSignals.on_more_offers_button()