incursionJournal.py (8818B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\shared\incursionJournal.py 2 import localization 3 from carbon.common.script.util.format import FmtAmt 4 from carbonui import uiconst 5 from carbonui.control.scrollentries import SE_BaseClassCore 6 from carbonui.primitives.container import Container 7 from eve.client.script.ui.control import eveIcon, eveLabel 8 from carbonui.control.button import Button 9 from eve.client.script.ui.control.themeColored import LineThemeColored 10 from eve.client.script.ui.shared.mapView.mapViewUtil import OpenMap 11 from eve.client.script.ui.shared.infoPanels.infoPanelIncursions import IncursionFinalEncounterIcon, SystemInfluenceBar 12 from eve.client.script.ui.shared.maps.mapcommon import STARMODE_INCURSION, STARMODE_FRIENDS_CORP 13 from talecommon.influence import CalculateDecayedInfluence 14 MIDDLECONTAINER_WIDTH = 200 15 MARGIN = 8 16 17 class IncursionTab: 18 GlobalReport, Encounters, LPLog = range(3) 19 20 21 class GlobalIncursionReportEntry(SE_BaseClassCore): 22 __guid__ = 'listentry.GlobalIncursionReportEntry' 23 MARGIN = 8 24 TEXT_OFFSET = 84 25 BUTTON_OFFSET = 295 26 27 def ApplyAttributes(self, attributes): 28 SE_BaseClassCore.ApplyAttributes(self, attributes) 29 self.iconsize = iconsize = 44 30 LineThemeColored(parent=self, align=uiconst.TOBOTTOM) 31 self.factionParent = Container(name='factionParent', parent=self, align=uiconst.TOLEFT, pos=(0, 0, 64, 64), padding=MARGIN) 32 middleCont = Container(parent=self, name='middleContainer', width=MIDDLECONTAINER_WIDTH, align=uiconst.TOLEFT, padTop=MARGIN, clipChildren=True) 33 self.constellationLabel = BigReportLabel(name='constellationName', parent=middleCont, fontsize=20, align=uiconst.TOTOP, state=uiconst.UI_NORMAL) 34 self.statusText = SmallReportLabel(parent=middleCont, align=uiconst.TOTOP, uppercase=True) 35 SmallReportLabel(name='systemInfluence', parent=middleCont, align=uiconst.TOTOP, text=localization.GetByLabel('UI/Incursion/Common/HUDInfluenceTitle')) 36 self.statusBar = SystemInfluenceBar(parent=middleCont, pos=(0, 0, 200, 10), align=uiconst.TOTOP, padding=(0, 4, 0, 4)) 37 self.stagingText = SmallReportLabel(parent=middleCont, align=uiconst.TOTOP, state=uiconst.UI_NORMAL) 38 self.finalEncounterIcon = IncursionFinalEncounterIcon(parent=middleCont, left=3, top=3, align=uiconst.TOPRIGHT, idx=0) 39 self.corpMapButton = Button(parent=self, texturePath='res:/ui/Texture/WindowIcons/corpmap.png', left=self.BUTTON_OFFSET, top=MARGIN, iconSize=iconsize, align=uiconst.BOTTOMLEFT, hint=localization.GetByLabel('UI/Incursion/Journal/ShowActiveCorpMembersInMap')) 40 self.mapButton = Button(parent=self, texturePath='res:/ui/Texture/WindowIcons/map.png', left=self.BUTTON_OFFSET + 50, top=MARGIN, iconSize=iconsize, align=uiconst.BOTTOMLEFT, hint=localization.GetByLabel('UI/Incursion/Journal/ShowOnStarMap')) 41 self.autopilotButton = Button(parent=self, texturePath='res:/ui/Texture/WindowIcons/ships.png', left=self.BUTTON_OFFSET + 100, top=MARGIN, iconSize=iconsize, align=uiconst.BOTTOMLEFT, hint=localization.GetByLabel('UI/Incursion/Journal/StagingAsAutopilotDestination')) 42 self.lpButton = Button(parent=self, texturePath='res:/ui/Texture/WindowIcons/lpstore.png', left=self.BUTTON_OFFSET, top=MARGIN, iconSize=iconsize, align=uiconst.TOPLEFT, hint=localization.GetByLabel('UI/Incursion/Journal/ViewLoyaltyPointLog')) 43 self.loyaltyPoints = ReportNumber(name='loyaltyPoints', parent=self, pos=(self.BUTTON_OFFSET + 50, 44 MARGIN, 45 105, 46 iconsize), number=0, hint=localization.GetByLabel('UI/Incursion/Journal/LoyaltyPointsWin'), padding=(4, 4, 4, 4)) 47 48 def Load(self, data): 49 iconsize = 48 50 self.factionParent.Flush() 51 if hasattr(data, 'aggressorFactionID') and data.aggressorFactionID: 52 factionID = data.aggressorFactionID 53 owner = cfg.eveowners.Get(factionID) 54 eveIcon.GetLogoIcon(parent=self.factionParent, align=uiconst.RELATIVE, size=64, itemID=factionID, ignoreSize=True, hint=localization.GetByLabel('UI/Incursion/Journal/FactionStagingRuler', faction=owner.ownerName)) 55 rowHeader = localization.GetByLabel('UI/Incursion/Journal/ReportRowHeader', constellation=data.constellationID, constellationInfo=('showinfo', const.typeConstellation, data.constellationID)) 56 self.constellationLabel.SetText(rowHeader) 57 incursionStateMessages = [localization.GetByLabel('UI/Incursion/Journal/Withdrawing'), localization.GetByLabel('UI/Incursion/Journal/Mobilizing'), localization.GetByLabel('UI/Incursion/Journal/Established')] 58 self.statusText.SetText(incursionStateMessages[data.state]) 59 if data.jumps is not None: 60 distanceAwayText = localization.GetByLabel('UI/Incursion/Journal/ReportRowNumJumps', jumps=data.jumps) 61 else: 62 distanceAwayText = localization.GetByLabel('UI/Incursion/Journal/ReportRowSystemUnreachable') 63 bodyText = localization.GetByLabel('UI/Incursion/Journal/ReportRowBody', color='<color=' + sm.GetService('map').GetSystemColorString(data.stagingSolarSystemID) + '>', security=data.security, securityColor=sm.GetService('map').GetSystemColorString(data.stagingSolarSystemID), system=data.stagingSolarSystemID, systemInfo=('showinfo', const.typeSolarSystem, data.stagingSolarSystemID), distanceAway=distanceAwayText) 64 self.stagingText.SetText(bodyText) 65 self.statusBar.SetInfluence(CalculateDecayedInfluence(data.influenceData), None, animate=False) 66 self.finalEncounterIcon.SetFinalEncounterSpawned(data.hasFinalEncounter) 67 self.corpMapButton.func = lambda *args: OpenMap(interestID=data.constellationID, starColorMode=STARMODE_FRIENDS_CORP) 68 self.mapButton.func = lambda *args: OpenMap(interestID=data.constellationID, starColorMode=STARMODE_INCURSION) 69 self.autopilotButton.func = lambda *args: sm.GetService('starmap').SetWaypoint(data.stagingSolarSystemID, clearOtherWaypoints=True) 70 self.lpButton.func = lambda *args: sm.GetService('journal').ShowIncursionTab(flag=IncursionTab.LPLog, taleID=data.taleID, constellationID=data.constellationID) 71 self.loyaltyPoints.number.SetText(localization.GetByLabel('UI/Incursion/Journal/NumberLoyaltyPointsAcronym', points=FmtAmt(data.loyaltyPoints))) 72 73 def GetDynamicHeight(node, width): 74 rowHeader = localization.GetByLabel('UI/Incursion/Journal/ReportRowHeader', constellation=node.constellationID, constellationInfo=('showinfo', const.typeConstellation, node.constellationID)) 75 headerWidth, headerHeight = BigReportLabel.MeasureTextSize(rowHeader, fontsize=20, width=MIDDLECONTAINER_WIDTH) 76 incursionStateMessages = [localization.GetByLabel('UI/Incursion/Journal/Withdrawing'), localization.GetByLabel('UI/Incursion/Journal/Mobilizing'), localization.GetByLabel('UI/Incursion/Journal/Established')] 77 statusWidth, statusHeight = SmallReportLabel.MeasureTextSize(incursionStateMessages[node.state], width=MIDDLECONTAINER_WIDTH) 78 influenceWidth, influenceHeight = SmallReportLabel.MeasureTextSize(localization.GetByLabel('UI/Incursion/Common/HUDInfluenceTitle'), width=MIDDLECONTAINER_WIDTH) 79 statusBar = 18 80 if node.jumps is not None: 81 distanceAwayText = localization.GetByLabel('UI/Incursion/Journal/ReportRowNumJumps', jumps=node.jumps) 82 else: 83 distanceAwayText = localization.GetByLabel('UI/Incursion/Journal/ReportRowSystemUnreachable') 84 bodyText = localization.GetByLabel('UI/Incursion/Journal/ReportRowBody', color='<color=' + sm.GetService('map').GetSystemColorString(node.stagingSolarSystemID) + '>', security=node.security, securityColor=sm.GetService('map').GetSystemColorString(node.stagingSolarSystemID), system=node.stagingSolarSystemID, systemInfo=('showinfo', const.typeSolarSystem, node.stagingSolarSystemID), distanceAway=distanceAwayText) 85 bodyWidth, bodyHeight = SmallReportLabel.MeasureTextSize(bodyText, width=MIDDLECONTAINER_WIDTH) 86 return max(114, headerHeight + statusHeight + influenceHeight + statusBar + bodyHeight + MARGIN * 2) 87 88 89 class ReportNumber(Container): 90 default_align = uiconst.RELATIVE 91 default_clipChildren = True 92 93 def ApplyAttributes(self, attributes): 94 Container.ApplyAttributes(self, attributes) 95 number = attributes.Get('number', 0) 96 self.number = BigReportLabel(name='bignumber', parent=self, align=uiconst.CENTERRIGHT, text=str(number), fontsize=18, hint=attributes.Get('hint', None)) 97 98 99 class SmallReportLabel(eveLabel.Label): 100 default_align = uiconst.RELATIVE 101 default_fontsize = 13 102 103 104 class BigReportLabel(eveLabel.Label): 105 default_fontsize = 20 106 default_letterspace = 0 107 default_align = uiconst.RELATIVE 108 default_maxLines = None