playerOwnedTargetMgr.py (3705B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\parklife\playerOwnedTargetMgr.py 2 import sys 3 import uthread 4 from carbon.common.script.sys.service import Service 5 from eve.client.script.parklife import states as state 6 from carbonui.uicore import uicore 7 from eveexceptions import UserError 8 from player_messaging.client.ui_message import prompt_player_fsd_dialog 9 10 class PlayerOwnedTargetMgr(Service): 11 __guid__ = 'svc.pwntarget' 12 __exportedcalls__ = {'OrderTarget': [], 13 'CancelTargetOrder': []} 14 __notifyevents__ = ['OnStateChange'] 15 __dependencies__ = ['michelle', 'godma'] 16 17 def Run(self, memStream = None): 18 Service.Run(self, memStream) 19 self.Reset() 20 21 def Stop(self, stream): 22 Service.Stop(self) 23 self.Reset() 24 25 def Reset(self): 26 self.needtarget = [] 27 28 def OnStateChange(self, itemID, flag, true, *args): 29 if flag == state.selected and true and self.needtarget: 30 clearCursor = False 31 for each in self.needtarget: 32 if hasattr(each, 'sr') and hasattr(each.sr, 'sourceID'): 33 if not self.IsTargetForStructure(each.sr.sourceID, itemID): 34 uthread.pool('TargetManager::OnStateChange-->LockTarget', self.LockTargetOBO, each.sr.sourceID, itemID, each) 35 clearCursor = True 36 37 if clearCursor: 38 self.HideTargetingCursor() 39 self.needtarget = [] 40 41 def IsTargetForStructure(self, sid, tid): 42 targetID = sm.GetService('pwn').GetCurrentTarget(sid) 43 if targetID == tid: 44 return 1 45 return 0 46 47 def OrderTarget(self, who): 48 if who not in self.needtarget[:]: 49 self.needtarget.append(who) 50 self.ShowTargetingCursor() 51 52 def CancelTargetOrder(self, who = None): 53 if not who and len(self.needtarget): 54 for each in self.needtarget: 55 if each and not each.destroyed: 56 each.waitingForActiveTarget = 0 57 58 self.needtarget = [] 59 elif who in self.needtarget: 60 self.needtarget.remove(who) 61 who.waitingForActiveTarget = 0 62 if not len(self.needtarget): 63 self.HideTargetingCursor() 64 65 def ShowTargetingCursor(self): 66 uicore.layer.inflight.sr.tcursor.display = True 67 68 def HideTargetingCursor(self): 69 uicore.layer.inflight.sr.tcursor.display = False 70 71 def LockTargetOBO(self, sid, tid, who): 72 self.StartLockTarget(sid, tid, who) 73 try: 74 flag, targetList = self.godma.GetDogmaLM().AddTargetOBO(sid, tid) 75 if not flag: 76 self.OnTargetAdded(sid, tid) 77 except UserError as e: 78 self.FailLockTarget(tid, who) 79 if e.msg == 'DeniedShipChanged': 80 sys.exc_clear() 81 return 82 prompt_player_fsd_dialog(e.msg, e.dict) 83 sys.exc_clear() 84 85 self.LogInfo('PlayerOwned targetMgr: Locking Target for ', tid, ' done') 86 87 def UnLockTargetOBO(self, sid, tid): 88 self.godma.GetDogmaLM().RemoveTargetOBO(sid, tid) 89 90 def StartLockTarget(self, sid, tid, who): 91 uthread.new(who.CountDown, tid) 92 93 def FailLockTarget(self, tid, who): 94 if not who or who.destroyed: 95 return 96 if not hasattr(who, 'countDown') or not hasattr(who, 'waitingForActiveTarget'): 97 return 98 who.countDown = False 99 who.waitingForActiveTarget = 0 100 101 def OnTargetAdded(self, sid, tid): 102 sm.ScatterEvent('OnStructureTargetAdded', sid, tid) 103 104 def OnTargetRemoved(self, sid, tid): 105 sm.ScatterEvent('OnStructureTargetAdded', sid, tid)