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

transmissionMgr.py (6505B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\parklife\transmissionMgr.py
      2 import sys
      3 import carbonui.const as uiconst
      4 import evelink
      5 import localization
      6 import log
      7 from carbon.common.script.sys import service
      8 from carbonui.control.scrollContainer import ScrollContainer
      9 from carbonui.control.window import Window
     10 from carbonui.primitives.container import Container
     11 from carbonui.uicore import uicore
     12 from eve.client.script.ui.control import eveEditPlainText, eveLabel
     13 from eve.client.script.ui.control.themeColored import SpriteThemeColored
     14 from eve.client.script.ui.shared.agencyNew.contentGroups import contentGroupConst
     15 from eve.client.script.ui.station.agents.agentTransmissionWindow import AgentTransmissionWindow
     16 from fsdBuiltData.common.iconIDs import GetIconFile
     17 
     18 class TransmissionSvc(service.Service):
     19     __guid__ = 'svc.transmission'
     20     __notifyevents__ = ['OnIncomingTransmission', 'OnIncomingAgentMessage']
     21 
     22     def Run(self, ms):
     23         service.Service.Run(self, ms)
     24         self.delayedTransmission = None
     25 
     26     def Stop(self, stream):
     27         service.Service.Stop(self)
     28         self.Cleanup()
     29 
     30     def Cleanup(self):
     31         for each in uicore.layer.main.children[:]:
     32             if each.name == 'telecom':
     33                 each.Close()
     34 
     35     def OnIncomingTransmission(self, transmission, isAgentMission = 0, *args):
     36         if transmission.header is not None:
     37             if isinstance(transmission.header, (int, long)):
     38                 transmission.header = localization.GetByMessageID(transmission.header)
     39         if isinstance(transmission.text, (int, long)):
     40             transmission.text = localization.GetByMessageID(transmission.text)
     41         if transmission.header.startswith('[d]'):
     42             transmission.header = transmission.header[3:]
     43             self.delayedTransmission = transmission
     44         else:
     45             self.ShowTransmission(transmission)
     46 
     47     def ShowTransmission(self, transmission):
     48         wnd = Telecom.Open(transmission=transmission)
     49         if wnd:
     50             wnd.ShowMessage(transmission.header, transmission.text, transmission.icon)
     51 
     52     def CloseTransmission(self, *args):
     53         self.Cleanup()
     54 
     55     def StopWarpIndication(self):
     56         if self.delayedTransmission:
     57             self.ShowTransmission(self.delayedTransmission)
     58             self.delayedTransmission = None
     59 
     60     def OnIncomingAgentMessage(self, agentID, message):
     61         self.ShowAgentAlert(agentID, message)
     62 
     63     def ShowAgentAlert(self, agentID, message):
     64         windowID = 'agentalert_%s' % agentID
     65         wnd = AgentTransmissionWindow.GetIfOpen(windowID=windowID)
     66         if wnd and not wnd.destroyed:
     67             wnd.LoadWnd(agentID, message)
     68         else:
     69             AgentTransmissionWindow.Open(windowID=windowID, agentID=agentID, message=message)
     70 
     71 
     72 class Telecom(Window):
     73     __guid__ = 'form.Telecom'
     74     default_windowID = 'telecom'
     75     default_scope = uiconst.SCOPE_INFLIGHT
     76     default_width = 400
     77     default_height = 400
     78     default_minSize = (360, 240)
     79 
     80     def ApplyAttributes(self, attributes):
     81         super(Telecom, self).ApplyAttributes(attributes)
     82         self.isDockWnd = 0
     83         transmission = attributes.transmission
     84         caption = getattr(transmission, 'caption', None) or localization.GetByLabel('UI/Generic/Information')
     85         hasDungeonWarp = getattr(transmission, 'hasDungeonWarp', False)
     86         try:
     87             self.isEscalation = transmission.rec.rec.pathStep
     88         except AttributeError:
     89             self.isEscalation = False
     90 
     91         self.sr.header = eveLabel.EveCaptionMedium(parent=self.content, align=uiconst.TOTOP)
     92         scrollCont = ScrollContainer(parent=self.content, padTop=8)
     93         self.label = eveLabel.EveLabelMedium(parent=scrollCont, align=uiconst.TOTOP)
     94         self.SetCaption(caption)
     95         if not hasDungeonWarp:
     96             self.DefineButtons(uiconst.OK, okLabel=localization.GetByLabel('UI/Generic/Close'), okFunc=self.Close)
     97         else:
     98             self.sr.instanceID = getattr(transmission.rec.rec, 'instanceID', 0)
     99             self.sr.solarSystemID = getattr(transmission.rec.rec, 'solarSystemID', 0)
    100             if self.sr.solarSystemID == session.solarsystemid:
    101                 okLabel = localization.GetByLabel('UI/Commands/WarpTo')
    102                 okFunc = self.WarpToEPLocation
    103             else:
    104                 inFleet = bool(session.fleetid)
    105                 isLeader = sm.GetService('menu').ImFleetLeaderOrCommander()
    106                 if inFleet and isLeader:
    107                     okLabel = localization.GetByLabel('UI/Fleet/FleetBroadcast/Commands/BroadcastTravelTo')
    108                     okFunc = self.SetFleetDestination
    109                 else:
    110                     okLabel = localization.GetByLabel('UI/Inflight/SetDestination')
    111                     okFunc = self.SetDestination
    112             if self.sr.instanceID and self.sr.solarSystemID:
    113                 self.DefineButtons(uiconst.OKCANCEL, okLabel=okLabel, okFunc=okFunc, cancelLabel=localization.GetByLabel('UI/Generic/Close'), cancelFunc=self.Close)
    114             else:
    115                 self.DefineButtons(uiconst.OK, okLabel=localization.GetByLabel('UI/Generic/Close'), okFunc=self.Close)
    116 
    117     def SetDestination(self, *args):
    118         sm.StartService('starmap').SetWaypoint(self.sr.solarSystemID, clearOtherWaypoints=True)
    119         self.Close()
    120 
    121     def SetFleetDestination(self, *args):
    122         sol = self.sr.solarSystemID
    123         sm.StartService('fleet').SendBroadcast_TravelTo(sol)
    124         self.SetDestination()
    125 
    126     def WarpToEPLocation(self, *args):
    127         if self.sr.instanceID is not None:
    128             sm.GetService('michelle').CmdWarpToStuff('epinstance', self.sr.instanceID)
    129         self.Close()
    130 
    131     def ShowMessage(self, header, text, icon):
    132         self.sr.header.text = header
    133         if icon:
    134             try:
    135                 icon = GetIconFile(int(icon.split(' ', 1)[0]))
    136                 self.icon = icon
    137             except:
    138                 self.icon = 'res:/ui/Texture/WindowIcons/satellite.png'
    139                 log.LogWarn('Failed adding ', icon, ' as icon in transmission window')
    140                 sys.exc_clear()
    141 
    142         else:
    143             self.icon = 'res:/ui/Texture/WindowIcons/satellite.png'
    144         if self.isEscalation:
    145             text = u'{text}\n{link}'.format(text=text, link=evelink.local_service_link('AgencyOpenAndShow', localization.GetByLabel('UI/Agency/OpenAgencyForDetails'), contentGroupID=contentGroupConst.contentGroupEscalations))
    146         self.label.SetText(text)