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'}