1
0
mirror of https://github.com/EDCD/EDMarketConnector.git synced 2025-06-08 19:32:15 +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 # Cached Cmdr state
this.events = [] # Unsent events this.events = [] # Unsent events
this.cmdr = None 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.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.newuser = False # just entered API Key - send state immediately
this.newsession = True # starting a new session - wait for Cargo event 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: if cmdr and not is_beta:
this.cmdr = cmdr this.cmdr = cmdr
this.FID = None
cmdrs = config.get('inara_cmdrs') or [] cmdrs = config.get('inara_cmdrs') or []
apikeys = config.get('inara_apikeys') or [] apikeys = config.get('inara_apikeys') or []
if cmdr in cmdrs: if cmdr in cmdrs:
@ -168,6 +170,7 @@ def journal_entry(cmdr, is_beta, system, station, entry, state):
call() call()
this.cmdr = cmdr this.cmdr = cmdr
this.FID = state['FID']
this.multicrew = bool(state['Role']) this.multicrew = bool(state['Role'])
if entry['event'] == 'LoadGame' or this.newuser: if entry['event'] == 'LoadGame' or this.newuser:
@ -214,34 +217,28 @@ def journal_entry(cmdr, is_beta, system, station, entry, state):
this.newsession = False this.newsession = False
# Send rank info to Inara on startup # Send rank info to Inara on startup
for k,v in state['Rank'].iteritems():
if v is not None:
add_event('setCommanderRankPilot', entry['timestamp'], add_event('setCommanderRankPilot', entry['timestamp'],
[
OrderedDict([ OrderedDict([
('rankName', k.lower()), ('rankName', k.lower()),
('rankValue', v[0]), ('rankValue', v[0]),
('rankProgress', v[1] / 100.0), ('rankProgress', v[1] / 100.0),
])) ]) for k,v in state['Rank'].iteritems() if v is not None
for k,v in state['Reputation'].iteritems(): ])
if v is not None:
add_event('setCommanderReputationMajorFaction', entry['timestamp'], add_event('setCommanderReputationMajorFaction', entry['timestamp'],
[
OrderedDict([ OrderedDict([
('majorfactionName', k.lower()), ('majorfactionName', k.lower()),
('majorfactionReputation', v / 100.0), ('majorfactionReputation', v / 100.0),
])) ]) for k,v in state['Reputation'].iteritems() if v is not None
for k,v in state['Engineers'].iteritems(): ])
if type(v) is tuple:
add_event('setCommanderRankEngineer', entry['timestamp'], add_event('setCommanderRankEngineer', entry['timestamp'],
[
OrderedDict([ OrderedDict([
('engineerName', k), ('engineerName', k),
('rankValue', v[0]), type(v) is tuple and ('rankValue', v[0]) or ('rankStage', v),
])) ]) for k,v in state['Engineers'].iteritems()
else: ])
add_event('setCommanderRankEngineer', entry['timestamp'],
OrderedDict([
('engineerName', k),
('rankStage', v),
]))
# Update location # Update location
add_event('setCommanderTravelLocation', entry['timestamp'], add_event('setCommanderTravelLocation', entry['timestamp'],
@ -281,17 +278,10 @@ def journal_entry(cmdr, is_beta, system, station, entry, state):
('rankProgress', 0), ('rankProgress', 0),
])) ]))
elif entry['event'] == 'EngineerProgress' and 'Engineer' in entry: elif entry['event'] == 'EngineerProgress' and 'Engineer' in entry:
if 'Rank' in entry:
add_event('setCommanderRankEngineer', entry['timestamp'], add_event('setCommanderRankEngineer', entry['timestamp'],
OrderedDict([ OrderedDict([
('engineerName', entry['Engineer']), ('engineerName', entry['Engineer']),
('rankValue', entry['Rank']), 'Rank' in entry and ('rankValue', entry['Rank']) or ('rankStage', entry['Progress']),
]))
else:
add_event('setCommanderRankEngineer', entry['timestamp'],
OrderedDict([
('engineerName', entry['Engineer']),
('rankStage', entry['Progress']),
])) ]))
# PowerPlay status change # PowerPlay status change
@ -374,6 +364,14 @@ def journal_entry(cmdr, is_beta, system, station, entry, state):
('shipGameID', state['ShipID']), ('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 # Override standard URL functions
if config.get('system_provider') == 'Inara': if config.get('system_provider') == 'Inara':
@ -667,6 +665,19 @@ def journal_entry(cmdr, is_beta, system, station, entry, state):
data['isTopRank'] = goal['PlayerInTopRank'] data['isTopRank'] = goal['PlayerInTopRank']
add_event('setCommanderCommunityGoalProgress', entry['timestamp'], data) 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 this.newuser = False
def cmdr_data(data, is_beta): def cmdr_data(data, is_beta):
@ -757,6 +768,7 @@ def call(callback=None):
('appVersion', appversion), ('appVersion', appversion),
('APIkey', credentials(this.cmdr)), ('APIkey', credentials(this.cmdr)),
('commanderName', this.cmdr.encode('utf-8')), ('commanderName', this.cmdr.encode('utf-8')),
('commanderFrontierID', this.FID),
])), ])),
('events', list(this.events)), # shallow copy ('events', list(this.events)), # shallow copy
]) ])