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

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