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

factionBanner.py (4911B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\shared\factionalWarfare\enlistmentFlow\factionBanner.py
      2 import uthread2
      3 from carbonui import TextAlign
      4 from carbonui.text.styles import TextHeadline, TextBody, TextDetail
      5 from carbonui.text.custom import TextCustom
      6 from carbonui.primitives.container import Container
      7 from carbonui.primitives.containerAutoSize import ContainerAutoSize
      8 from carbonui.primitives.frame import Frame
      9 import carbonui.const as uiconst
     10 from carbonui.primitives.sprite import Sprite
     11 from eve.client.script.ui.shared.factionalWarfare.enlistmentFlow.enlistCont import EnlistCont
     12 from eve.client.script.ui.shared.factionalWarfare.enlistmentFlow.enlistmentConst import BANNER_TEXTURE_BY_FACTION_ID
     13 from eve.client.script.ui.shared.factionalWarfare.enlistmentFlow.enlistmentUtil import GetFactionColor, GetFactionIcon, GetFactionIconSmall
     14 from eve.client.script.ui.shared.factionalWarfare.enlistmentFlow.warzoneGaugeCont import WarzoneGaugeCont
     15 from eve.common.script.util.facwarCommon import GetCombatEnemyFactions, IsOccupierFWFaction
     16 from fwwarzone.client.dashboard.gauges.warzoneStatusGauge import WarzoneStatusGauge
     17 from localization import GetByLabel
     18 import eve.common.lib.appConst as appConst
     19 BANNER_WARZONE_GAUGE_SIZE = 51
     20 
     21 class FactionBanner(Container):
     22     default_width = 370
     23 
     24     def ApplyAttributes(self, attributes):
     25         super(FactionBanner, self).ApplyAttributes(attributes)
     26         self.factionID = None
     27         self.ContructUI()
     28 
     29     def ContructUI(self):
     30         self.ConstructIcon()
     31         self.ConstructWarZone()
     32         self.ConstructFactionName()
     33         self.ConstructCTA()
     34         self.ConstructFrameSprite()
     35 
     36     def ConstructFrameSprite(self):
     37         self.frameSprite = Sprite(name='frameSprite', parent=self, pos=(0, 0, 370, 720), align=uiconst.CENTERTOP)
     38 
     39     def ConstructIcon(self):
     40         iconCont = Container(name='iconCont', parent=self, align=uiconst.TOTOP, height=152, top=90)
     41         self.factionIcon = Sprite(name='factionIcon', parent=iconCont, align=uiconst.CENTER, pos=(0, 0, 80, 80))
     42 
     43     def ConstructWarZone(self):
     44         self.warzoneCont = Container(name='warzoneCont', parent=self, align=uiconst.TOTOP, height=120, top=32)
     45         radius = BANNER_WARZONE_GAUGE_SIZE
     46         self.warzoneGaugeCont = WarzoneGaugeCont(parent=self.warzoneCont, pos=(0,
     47          0,
     48          2 * radius,
     49          2 * radius), gaugeRadius=radius, idx=0, iconSize=48)
     50 
     51     def ConstructFactionName(self):
     52         factionNameCont = ContainerAutoSize(parent=self, align=uiconst.TOTOP, alignMode=uiconst.TOTOP)
     53         self.factionNameLabel = TextHeadline(parent=factionNameCont, align=uiconst.TOTOP, text='', textAlign=TextAlign.CENTER, padTop=24)
     54         cont = Container(name='cont', parent=factionNameCont, align=uiconst.TOTOP, height=30, padTop=10)
     55         textWithIconsCont = ContainerAutoSize(name='textWithIconsCont', height=30, parent=cont, align=uiconst.CENTER, alignMode=uiconst.TOLEFT)
     56         TextDetail(parent=textWithIconsCont, align=uiconst.TOLEFT, text=GetByLabel('UI/FactionWarfare/frontlinesDashboard/atWarWith'))
     57         self.enemySpriteCont = ContainerAutoSize(name='enemySpriteCont', parent=textWithIconsCont, align=uiconst.TOLEFT, left=5)
     58 
     59     def LoadFactionID(self, factionID):
     60         if not factionID:
     61             return
     62         self.enemySpriteCont.Flush()
     63         self.factionID = factionID
     64         factionColor = GetFactionColor(factionID)
     65         self.frameSprite.texturePath = BANNER_TEXTURE_BY_FACTION_ID.get(factionID, '')
     66         texturePath = GetFactionIcon(factionID)
     67         self.factionIcon.texturePath = texturePath
     68         self.factionNameLabel.text = cfg.eveowners.Get(factionID).name
     69         self.factionNameLabel.SetRGBA(*factionColor)
     70         self.warzoneGaugeCont.ShowFaction(None)
     71         enemyFactionIDs = GetCombatEnemyFactions(factionID)
     72         for enemyFactionID in enemyFactionIDs:
     73             texturePath = GetFactionIconSmall(enemyFactionID)
     74             self.enemySprite = Sprite(parent=Container(parent=self.enemySpriteCont, align=uiconst.TOLEFT, width=24, height=24), pos=(0, -5, 24, 24), state=uiconst.UI_NORMAL, texturePath=texturePath, hint=cfg.eveowners.Get(enemyFactionID).name)
     75             self.enemySprite.GetMenu = lambda ef = enemyFactionID: sm.GetService('menu').GetMenuForOwner(ef)
     76             self.enemySprite.OnClick = lambda ef = enemyFactionID: sm.GetService('info').ShowInfo(appConst.typeFaction, ef)
     77 
     78         uthread2.StartTasklet(self.LoadGaugeAndBtns_thread, factionID)
     79 
     80     def LoadGaugeAndBtns_thread(self, factionID):
     81         self.warzoneGaugeCont.ShowFaction(factionID)
     82         self.LoadEnlist(factionID)
     83 
     84     def ConstructCTA(self):
     85         self.ctaCont = Container(name='ctaCont', parent=self)
     86         self.enlistCont = EnlistCont(parent=self.ctaCont)
     87 
     88     def LoadEnlist(self, factionID):
     89         self.enlistCont.LoadEnlist(factionID)