eveMisc.py (5497B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\util\eveMisc.py 2 import sys 3 import uthread 4 from carbonui import uiconst 5 from eve.common.lib import appConst as const 6 from eve.common.script.util.eveFormat import FmtISK 7 from eveexceptions import UserError 8 from player_messaging.client.ui_message import prompt_player_fsd_dialog 9 10 def LaunchFromShip(items, whoseBehalfID = None, ignoreWarning = False, maxQty = None): 11 oldItems = [] 12 drones = False 13 for item in items: 14 if getattr(item, 'categoryID', 0) == const.categoryDrone: 15 drones = True 16 qty = getattr(item, 'quantity', 0) 17 if qty < 0: 18 oldItems.insert(0, (item.itemID, 1)) 19 elif qty > 0: 20 if maxQty is not None: 21 qty = min(qty, maxQty) 22 oldItems.append((item.itemID, qty)) 23 24 try: 25 if drones: 26 ret = sm.StartService('gameui').GetShipAccess().LaunchDrones(oldItems, whoseBehalfID, ignoreWarning) 27 else: 28 ret = sm.StartService('gameui').GetShipAccess().Drop(oldItems, whoseBehalfID, ignoreWarning) 29 except UserError as e: 30 if e.msg in ('LaunchCPWarning', 'LaunchUpgradePlatformWarning'): 31 reply = prompt_player_fsd_dialog(e.msg, e.dict, uiconst.YESNO) 32 if reply == uiconst.ID_YES: 33 LaunchFromShip(items, whoseBehalfID, ignoreWarning=True) 34 sys.exc_clear() 35 return 36 raise e 37 38 newIDs = {} 39 errorByLabel = {} 40 for itemID, seq in ret.iteritems(): 41 newIDs[itemID] = [] 42 for each in seq: 43 if type(each) is tuple: 44 errorByLabel[each[0]] = each 45 else: 46 newIDs[itemID].append(each) 47 48 sm.ScatterEvent('OnItemLaunch', newIDs) 49 50 def raise_(e): 51 raise e 52 53 for error in errorByLabel.itervalues(): 54 uthread.new(raise_, UserError(*error)) 55 56 57 def CSPAChargedActionForMany(message, obj, function, *args): 58 try: 59 func = getattr(obj, function) 60 return func(*args) 61 except UserError as e: 62 if e.msg == 'ContactCostNotApprovedForMany': 63 listOfMessage = e.dict['costNotApprovedFor'] 64 totalCost = 0 65 totalApprovedCost = 0 66 listingOutPlayers = [] 67 for each in listOfMessage: 68 totalCost += each['totalCost'] 69 totalApprovedCost += each['approvedCost'] 70 charID = each['charID'] 71 listingOutPlayers.append('%s : %s' % (cfg.eveowners.Get(charID).name, FmtISK(each['totalCost']))) 72 73 namelist = '<br>'.join(listingOutPlayers) 74 if prompt_player_fsd_dialog(message, {'amountISK': FmtISK(totalCost), 75 'namelist': namelist}, uiconst.YESNO) != uiconst.ID_YES: 76 return None 77 kwArgs = {'approvedCost': totalCost} 78 return getattr(obj, function)(*args, **kwArgs) 79 raise 80 81 82 def CSPAChargedAction(message, obj, function, *args): 83 try: 84 return getattr(obj, function)(*args) 85 except UserError as e: 86 if e.msg == 'ContactCostNotApproved': 87 info = e.args[1] 88 if prompt_player_fsd_dialog(message, {'amount': info['totalCost'], 89 'amountISK': info['totalCostISK']}, uiconst.YESNO) != uiconst.ID_YES: 90 return None 91 kwArgs = {'approvedCost': info['totalCost']} 92 return getattr(obj, function)(*args, **kwArgs) 93 raise 94 95 96 def GetRemoveServiceConfirmationQuestion(serviceTypeID): 97 confirmQuestionsByModuleID = {const.typeStandupMarketHub: 'AskRemoveMarketStructureService', 98 const.typeStandupCloningCenter: 'AskRemoveCloneStructureService', 99 const.typeStandupManufacturingPlant: 'AskRemoveIndustryStructureService', 100 const.typeStandupCapitalShipYard: 'AskRemoveIndustryStructureService', 101 const.typeStandupSuperCapitalShipYard: 'AskRemoveIndustryStructureService', 102 const.typeStandupResearchLab: 'AskRemoveIndustryStructureService', 103 const.typeStandupHyasyodaResearchLab: 'AskRemoveIndustryStructureService', 104 const.typeStandupInventionLab: 'AskRemoveIndustryStructureService'} 105 questionPath = confirmQuestionsByModuleID.get(serviceTypeID, 'AskRemoveStructureService') 106 params = _GetExtraParams(serviceTypeID) 107 return (questionPath, params) 108 109 110 def GetOfflineServiceConfirmationQuestion(serviceTypeID): 111 confirmQuestionsByModuleID = {const.typeStandupMarketHub: 'AskOfflineMarketStructureService', 112 const.typeStandupCloningCenter: 'AskOfflineCloneStructureService', 113 const.typeStandupManufacturingPlant: 'AskOfflineIndustryStructureService', 114 const.typeStandupCapitalShipYard: 'AskOfflineIndustryStructureService', 115 const.typeStandupSuperCapitalShipYard: 'AskOfflineIndustryStructureService', 116 const.typeStandupResearchLab: 'AskOfflineIndustryStructureService', 117 const.typeStandupHyasyodaResearchLab: 'AskOfflineIndustryStructureService', 118 const.typeStandupInventionLab: 'AskOfflineIndustryStructureService'} 119 questionPath = confirmQuestionsByModuleID.get(serviceTypeID, 'AskOfflineStructureService') 120 params = _GetExtraParams(serviceTypeID) 121 return (questionPath, params) 122 123 124 def _GetExtraParams(serviceTypeID): 125 params = {} 126 if serviceTypeID == const.typeStandupCloningCenter: 127 numClones = sm.GetService('clonejump').GetNumClonesInPilotsStructure() 128 if numClones is not None: 129 params['numClones'] = numClones 130 return params