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)