mirror of
https://github.com/EDCD/EDMarketConnector.git
synced 2025-04-14 00:07:14 +03:00
Handle new ship ident, name and paintjob info from journal
This commit is contained in:
parent
9c6b9e71f7
commit
a1b163da96
@ -518,7 +518,10 @@ class AppWindow:
|
||||
]
|
||||
if monitor.state['PaintJob'] is None:
|
||||
# Companion API server can lag, so prefer Journal. But paintjob only reported in Journal on change.
|
||||
monitor.state['ShipID'] = data['ship']['id']
|
||||
if monitor.state['ShipID'] != data['ship']['id']:
|
||||
monitor.state['ShipID'] = data['ship']['id']
|
||||
monitor.state['ShipIdent'] = None
|
||||
monitor.state['ShipName'] = None
|
||||
monitor.state['ShipType'] = data['ship']['name'].lower()
|
||||
monitor.state['PaintJob'] = data['ship']['modules']['PaintJob'] and data['ship']['modules']['PaintJob']['module']['name'].lower() or ''
|
||||
props.append(('paintJob', monitor.state['PaintJob']))
|
||||
@ -609,9 +612,16 @@ class AppWindow:
|
||||
self.edsm.setranks(monitor.state['Rank'])
|
||||
|
||||
# Send ship info to EDSM on startup or change
|
||||
if entry['event'] in ['StartUp', 'LoadGame', 'ShipyardNew', 'ShipyardSwap'] and monitor.state['ShipID']:
|
||||
if entry['event'] in ['StartUp', 'Loadout', 'LoadGame', 'SetUserShipName'] and monitor.cmdr and monitor.state['ShipID']:
|
||||
self.edsm.setshipid(monitor.state['ShipID'])
|
||||
self.edsm.updateship(monitor.state['ShipID'], monitor.state['ShipType'], monitor.state['PaintJob'] is not None and [('paintJob', monitor.state['PaintJob'])] or [])
|
||||
props = []
|
||||
if monitor.state['ShipIdent'] is not None:
|
||||
props.append(('shipIdent', monitor.state['ShipIdent']))
|
||||
if monitor.state['ShipName'] is not None:
|
||||
props.append(('shipName', monitor.state['ShipName']))
|
||||
if monitor.state['PaintJob'] is not None:
|
||||
props.append(('paintJob', monitor.state['PaintJob']))
|
||||
self.edsm.updateship(monitor.state['ShipID'], monitor.state['ShipType'], props)
|
||||
elif entry['event'] in ['ShipyardBuy', 'ShipyardSell']:
|
||||
self.edsm.sellship(entry.get('SellShipID'))
|
||||
|
||||
|
23
monitor.py
23
monitor.py
@ -98,6 +98,8 @@ class EDLogs(FileSystemEventHandler):
|
||||
'PaintJob' : None,
|
||||
'Rank' : { 'Combat': None, 'Trade': None, 'Explore': None, 'Empire': None, 'Federation': None, 'CQC': None },
|
||||
'ShipID' : None,
|
||||
'ShipIdent' : None,
|
||||
'ShipName' : None,
|
||||
'ShipType' : None,
|
||||
}
|
||||
|
||||
@ -263,6 +265,8 @@ class EDLogs(FileSystemEventHandler):
|
||||
'Rank' : { 'Combat': None, 'Trade': None, 'Explore': None, 'Empire': None, 'Federation': None, 'CQC': None },
|
||||
'ShipID' : entry.get('ShipID') if entry.get('Ship') not in ['TestBuggy', 'Empire_Fighter', 'Federation_Fighter', 'Independent_Fighter'] else None # None in CQC or if game starts in SRV/fighter
|
||||
}
|
||||
self.state['ShipIdent'] = self.state['ShipID'] and entry.get('ShipIdent')
|
||||
self.state['ShipName'] = self.state['ShipID'] and entry.get('ShipName')
|
||||
self.state['ShipType'] = self.state['ShipID'] and entry.get('Ship').lower()
|
||||
self.body = None
|
||||
self.system = None
|
||||
@ -271,14 +275,33 @@ class EDLogs(FileSystemEventHandler):
|
||||
elif entry['event'] == 'NewCommander':
|
||||
self.cmdr = entry['Name']
|
||||
self.group = None
|
||||
elif entry['event'] == 'SetUserShipName':
|
||||
self.state['ShipID'] = entry['ShipID']
|
||||
self.state['ShipIdent'] = entry.get('UserShipId')
|
||||
self.state['ShipName'] = entry.get('UserShipName')
|
||||
self.state['ShipType'] = entry['Ship'].lower()
|
||||
elif entry['event'] == 'ShipyardNew':
|
||||
self.state['ShipID'] = entry['NewShipID']
|
||||
self.state['ShipIdent'] = None
|
||||
self.state['ShipName'] = None
|
||||
self.state['ShipType'] = entry['ShipType'].lower()
|
||||
self.state['PaintJob'] = None
|
||||
elif entry['event'] == 'ShipyardSwap':
|
||||
self.state['ShipID'] = entry['ShipID']
|
||||
self.state['ShipIdent'] = None
|
||||
self.state['ShipName'] = None
|
||||
self.state['ShipType'] = entry['ShipType'].lower()
|
||||
self.state['PaintJob'] = None
|
||||
elif entry['event'] == 'Loadout': # Note: Precedes LoadGame, but also sent after changing ship
|
||||
self.state['ShipID'] = entry['ShipID']
|
||||
self.state['ShipIdent'] = entry['ShipIdent']
|
||||
self.state['ShipName'] = entry['ShipName']
|
||||
self.state['ShipType'] = entry['Ship'].lower()
|
||||
# Ignore other Modules since they're missing Engineer modification details
|
||||
self.state['PaintJob'] = ''
|
||||
for module in entry['Modules']:
|
||||
if module.get('Slot') == 'PaintJob' and module.get('Item'):
|
||||
self.state['PaintJob'] = module['Item'].lower()
|
||||
elif entry['event'] in ['ModuleBuy', 'ModuleSell'] and entry['Slot'] == 'PaintJob':
|
||||
symbol = re.match('\$(.+)_name;', entry.get('BuyItem', ''))
|
||||
self.state['PaintJob'] = symbol and symbol.group(1).lower() or entry.get('BuyItem', '')
|
||||
|
Loading…
x
Reference in New Issue
Block a user