1
0
mirror of https://github.com/EDCD/EDMarketConnector.git synced 2025-04-14 08:17:13 +03:00

More Inara 3.3 support

Add commanderFrontierID to header.
Send "setCommanderReputationMinorFaction" events.
Send "addCommanderFriend" and "delCommanderFriend" events.
Use array forms of "setCommanderRankPilot", "SetCommanderRankEngineer and
"SetCommanderReputationMajorFaction" events.
This commit is contained in:
Jonathan Harris 2018-11-16 00:13:52 +00:00
parent 1cdf1737c8
commit 31f0139271

View File

@ -34,6 +34,7 @@ this.queue = Queue() # Items to be sent to Inara by worker thread
# Cached Cmdr state
this.events = [] # Unsent events
this.cmdr = None
this.FID = None # Frontier ID
this.multicrew = False # don't send captain's ship info to Inara while on a crew
this.newuser = False # just entered API Key - send state immediately
this.newsession = True # starting a new session - wait for Cargo event
@ -131,6 +132,7 @@ def prefs_changed(cmdr, is_beta):
if cmdr and not is_beta:
this.cmdr = cmdr
this.FID = None
cmdrs = config.get('inara_cmdrs') or []
apikeys = config.get('inara_apikeys') or []
if cmdr in cmdrs:
@ -168,6 +170,7 @@ def journal_entry(cmdr, is_beta, system, station, entry, state):
call()
this.cmdr = cmdr
this.FID = state['FID']
this.multicrew = bool(state['Role'])
if entry['event'] == 'LoadGame' or this.newuser:
@ -214,34 +217,28 @@ def journal_entry(cmdr, is_beta, system, station, entry, state):
this.newsession = False
# Send rank info to Inara on startup
for k,v in state['Rank'].iteritems():
if v is not None:
add_event('setCommanderRankPilot', entry['timestamp'],
OrderedDict([
('rankName', k.lower()),
('rankValue', v[0]),
('rankProgress', v[1] / 100.0),
]))
for k,v in state['Reputation'].iteritems():
if v is not None:
add_event('setCommanderReputationMajorFaction', entry['timestamp'],
OrderedDict([
('majorfactionName', k.lower()),
('majorfactionReputation', v / 100.0),
]))
for k,v in state['Engineers'].iteritems():
if type(v) is tuple:
add_event('setCommanderRankEngineer', entry['timestamp'],
OrderedDict([
('engineerName', k),
('rankValue', v[0]),
]))
else:
add_event('setCommanderRankEngineer', entry['timestamp'],
OrderedDict([
('engineerName', k),
('rankStage', v),
]))
add_event('setCommanderRankPilot', entry['timestamp'],
[
OrderedDict([
('rankName', k.lower()),
('rankValue', v[0]),
('rankProgress', v[1] / 100.0),
]) for k,v in state['Rank'].iteritems() if v is not None
])
add_event('setCommanderReputationMajorFaction', entry['timestamp'],
[
OrderedDict([
('majorfactionName', k.lower()),
('majorfactionReputation', v / 100.0),
]) for k,v in state['Reputation'].iteritems() if v is not None
])
add_event('setCommanderRankEngineer', entry['timestamp'],
[
OrderedDict([
('engineerName', k),
type(v) is tuple and ('rankValue', v[0]) or ('rankStage', v),
]) for k,v in state['Engineers'].iteritems()
])
# Update location
add_event('setCommanderTravelLocation', entry['timestamp'],
@ -281,18 +278,11 @@ def journal_entry(cmdr, is_beta, system, station, entry, state):
('rankProgress', 0),
]))
elif entry['event'] == 'EngineerProgress' and 'Engineer' in entry:
if 'Rank' in entry:
add_event('setCommanderRankEngineer', entry['timestamp'],
OrderedDict([
('engineerName', entry['Engineer']),
('rankValue', entry['Rank']),
]))
else:
add_event('setCommanderRankEngineer', entry['timestamp'],
OrderedDict([
('engineerName', entry['Engineer']),
('rankStage', entry['Progress']),
]))
add_event('setCommanderRankEngineer', entry['timestamp'],
OrderedDict([
('engineerName', entry['Engineer']),
'Rank' in entry and ('rankValue', entry['Rank']) or ('rankStage', entry['Progress']),
]))
# PowerPlay status change
if entry['event'] == 'PowerplayJoin':
@ -374,6 +364,14 @@ def journal_entry(cmdr, is_beta, system, station, entry, state):
('shipGameID', state['ShipID']),
]))
if entry.get('Factions'):
add_event('setCommanderReputationMinorFaction', entry['timestamp'],
[
OrderedDict([
('minorfactionName', f['Name']),
('minorfactionReputation', f['MyReputation']),
]) for f in entry['Factions']
])
# Override standard URL functions
if config.get('system_provider') == 'Inara':
@ -667,6 +665,19 @@ def journal_entry(cmdr, is_beta, system, station, entry, state):
data['isTopRank'] = goal['PlayerInTopRank']
add_event('setCommanderCommunityGoalProgress', entry['timestamp'], data)
# Friends
if entry['event'] == 'Friends':
if entry['Status'] in ['Added', 'Online']:
add_event('addCommanderFriend', entry['timestamp'],
OrderedDict([('commanderName', entry['Name']),
('gamePlatform', 'pc'),
]))
elif entry['Status'] in ['Declined', 'Lost']:
add_event('delCommanderFriend', entry['timestamp'],
OrderedDict([('commanderName', entry['Name']),
('gamePlatform', 'pc'),
]))
this.newuser = False
def cmdr_data(data, is_beta):
@ -757,6 +768,7 @@ def call(callback=None):
('appVersion', appversion),
('APIkey', credentials(this.cmdr)),
('commanderName', this.cmdr.encode('utf-8')),
('commanderFrontierID', this.FID),
])),
('events', list(this.events)), # shallow copy
])