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

fleetUtil.py (3212B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\shared\fleet\fleetUtil.py
      2 import eveicon
      3 import evetypes
      4 from carbon.common.script.util.format import FmtDate
      5 import blue
      6 from carbonui.control.contextMenu.menuEntryData import MenuEntryData
      7 from eve.client.script.util.bubble import SlimItemFromCharID
      8 from eveservices.menu import GetMenuService
      9 from menu import MenuList, MenuLabel
     10 from player_messaging.client.ui_message import prompt_player_fsd_dialog
     11 
     12 def ExportLootHistory():
     13     lootHistory = sm.GetService('fleet').GetLootHistory()
     14     rows = []
     15     for kv in lootHistory:
     16         row = [FmtDate(kv.time, 'ss'),
     17          cfg.eveowners.Get(kv.charID).name,
     18          evetypes.GetName(kv.typeID),
     19          kv.quantity,
     20          evetypes.GetGroupName(kv.typeID)]
     21         rows.append(row)
     22 
     23     fileNameExtension = 'Loot'
     24     header = 'Time\tCharacter\tItem Type\tQuantity\tItem Group'
     25     _ExportToDisk(header, rows, fileNameExtension)
     26 
     27 
     28 def _ExportToDisk(header, rows, fileNameExtension):
     29     date = FmtDate(blue.os.GetWallclockTime())
     30     f = blue.classes.CreateInstance('blue.ResFile')
     31     directory = blue.sysinfo.GetUserDocumentsDirectory() + '/EVE/logs/Fleetlogs/'
     32     filename = '%s - %s.txt' % (fileNameExtension, date.replace(':', '.'))
     33     fullPath = directory + filename
     34     if not f.Open(fullPath, 0):
     35         f.Create(fullPath)
     36     f.Write('%s\r\n' % header)
     37     for r in rows:
     38         row = ''
     39         for col in r:
     40             row += '%s\t' % unicode(col).encode('utf-8')
     41 
     42         f.Write('%s\r\n' % row)
     43 
     44     f.Write('\r\n')
     45     f.Close()
     46     prompt_player_fsd_dialog('FleetExportInfo', {'filename': filename,
     47      'folder': directory})
     48 
     49 
     50 def OnDropInMyFleet(dropObj, nodes):
     51     if not sm.GetService('fleet').IsCommanderOrBoss():
     52         return
     53     myNode = nodes[0]
     54     try:
     55         charID = myNode.charID
     56     except:
     57         return
     58 
     59     if not charID:
     60         return
     61     fleetSvc = sm.GetService('fleet')
     62     members = fleetSvc.GetMembers()
     63     if charID in members:
     64         return
     65     fleetSvc.Invite(charID, None, None, None)
     66     prompt_player_fsd_dialog('CharacterAddedAsSquadMember', {'char': charID})
     67 
     68 
     69 def GetFleetMemberMenuOptions(charID):
     70     shipItem = SlimItemFromCharID(charID)
     71     if shipItem is None:
     72         ret = MenuList()
     73     else:
     74         ret = MenuList([ entry for entry in sm.GetService('menu').CelestialMenu(shipItem.itemID) if _IsWantedOption(entry) ])
     75         ret += [None]
     76     ret += GetMenuService().FleetMenu(charID, unparsed=False)
     77     ret += [None]
     78     ret.append(MenuEntryData(MenuLabel('UI/Common/Pilot', {'character': charID}), subMenuData=lambda : GetMenuService().CharacterMenu(charID), texturePath=eveicon.person))
     79     return ret.filter({'UI/Fleet/Fleet', 'UI/Commands/ShowInfo'})
     80 
     81 
     82 def _IsWantedOption(entry):
     83     if not entry:
     84         return False
     85     elif isinstance(entry, MenuEntryData):
     86         return entry.GetLabelPath() in wantedOptions
     87     else:
     88         return isinstance(entry[0], MenuLabel) and entry[0][0] in wantedOptions
     89 
     90 
     91 wantedOptions = {'UI/Inflight/LockTarget',
     92  'UI/Inflight/ApproachObject',
     93  'UI/Inflight/OrbitObject',
     94  'UI/Inflight/Submenus/KeepAtRange',
     95  'UI/Fleet/JumpThroughToSystem'}