pvptradesvc.py (4048B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\station\pvptrade\pvptradesvc.py 2 from carbon.common.script.sys.service import Service 3 from carbonui.control.window import Window 4 from eve.client.script.ui.station.pvptrade.pvptradewnd import PVPTrade 5 from eveexceptions import UserError 6 from localization import GetByLabel 7 from player_messaging.client.ui_message import prompt_player_fsd_dialog 8 9 class PVPTradeService(Service): 10 __guid__ = 'svc.pvptrade' 11 __notifyevents__ = ['OnTradeInitiate', 12 'OnTradeCancel', 13 'OnTradeOffer', 14 'OnTradeOfferReset', 15 'OnTradeMoneyOffer', 16 'OnTradeComplete', 17 'OnPrimingNeededForTradeItems'] 18 19 def _ShowTradeSessionWindow(self, tradeSession, charID, tradeItems): 20 windowID = self.GetWindowID() 21 tradeContainerID = tradeSession.List().tradeContainerID 22 existingWindow = Window.GetIfOpen(windowID=windowID, windowInstanceID=tradeContainerID) 23 if existingWindow and not existingWindow.destroyed: 24 existingWindow.Maximize() 25 else: 26 self.OnTradeInitiate(charID, tradeSession, tradeItems) 27 28 def StartTradeSession(self, charID, tradeItems = None): 29 tradeSession = sm.RemoteSvc('trademgr').InitiateTrade(charID) 30 self._ShowTradeSessionWindow(tradeSession, charID, tradeItems) 31 32 def GetWindowID(self): 33 return 'tradeWnd' 34 35 def OnTradeInitiate(self, charID, tradeSession, tradeItems = None): 36 self.LogInfo('OnInitiate', charID, tradeSession) 37 windowID = self.GetWindowID() 38 tradeContainerID = tradeSession.List().tradeContainerID 39 existingWindow = Window.GetIfOpen(windowID=windowID, windowInstanceID=tradeContainerID) 40 if existingWindow: 41 return 42 showIfInStack = self.ShouldShowIfInStack(windowID) 43 PVPTrade.Open(windowID=windowID, windowInstanceID=tradeContainerID, tradeSession=tradeSession, tradeItems=tradeItems, showIfInStack=showIfInStack) 44 45 def ShouldShowIfInStack(self, windowID): 46 defaultValue = True 47 otherTradeWnd = Window.GetIfOpen(windowID=windowID) 48 if not otherTradeWnd: 49 return defaultValue 50 stackID = PVPTrade.GetRegisteredOrDefaultStackID(windowID) 51 if not stackID: 52 return defaultValue 53 from carbonui.uicore import uicore 54 stack = uicore.registry.GetWindow(stackID) 55 if not stack: 56 return defaultValue 57 if not isinstance(stack.GetActiveWindow(), PVPTrade): 58 return defaultValue 59 stack.ForceUpdateSelectedTabSetting() 60 return False 61 62 def OnTradeCancel(self, containerID): 63 windowID = self.GetWindowID() 64 w = Window.GetIfOpen(windowID=windowID, windowInstanceID=containerID) 65 if w: 66 w.OnCancel() 67 68 def OnTradeOffer(self, containerID, state): 69 windowID = self.GetWindowID() 70 w = Window.GetIfOpen(windowID=windowID, windowInstanceID=containerID) 71 if w: 72 w.OnStateToggle(state) 73 74 def OnTradeOfferReset(self, containerID, manifestError = None): 75 windowID = self.GetWindowID() 76 w = Window.GetIfOpen(windowID=windowID, windowInstanceID=containerID) 77 if w: 78 w.OnTradeOfferReset() 79 if manifestError: 80 prompt_player_fsd_dialog('CustomNotify', {'notify': GetByLabel('UI/Messages/DirectTradeManifestMismatch')}) 81 else: 82 raise UserError('ItemExchangeFailed') 83 84 def OnTradeMoneyOffer(self, containerID, money): 85 windowID = self.GetWindowID() 86 w = Window.GetIfOpen(windowID=windowID, windowInstanceID=containerID) 87 if w: 88 w.OnMoneyOffer(money) 89 90 def OnTradeComplete(self, containerID, items = None): 91 windowID = self.GetWindowID() 92 w = Window.GetIfOpen(windowID=windowID, windowInstanceID=containerID) 93 if w: 94 w.OnTradeComplete(items) 95 96 def OnPrimingNeededForTradeItems(self, itemIDsToPrime): 97 cfg.evelocations.Prime(itemIDsToPrime)