mirror of
https://github.com/EDCD/EDMarketConnector.git
synced 2025-06-03 09:01:13 +03:00
monitor/tracking: Shift .coordinates to state['StarPos']
* Some additional commenting for future clarity. * Remove the old eddn.py tracking.
This commit is contained in:
parent
232e91ebfc
commit
e6abc137ce
79
monitor.py
79
monitor.py
@ -117,7 +117,6 @@ class EDLogs(FileSystemEventHandler): # type: ignore # See below
|
|||||||
self.group: str | None = None
|
self.group: str | None = None
|
||||||
self.cmdr: str | None = None
|
self.cmdr: str | None = None
|
||||||
self.system: str | None = None
|
self.system: str | None = None
|
||||||
self.coordinates: Tuple[float, float, float] | None = None
|
|
||||||
self.systempopulation: int | None = None
|
self.systempopulation: int | None = None
|
||||||
self.station: str | None = None
|
self.station: str | None = None
|
||||||
self.station_marketid: int | None = None
|
self.station_marketid: int | None = None
|
||||||
@ -306,7 +305,7 @@ class EDLogs(FileSystemEventHandler): # type: ignore # See below
|
|||||||
self.cmdr = None
|
self.cmdr = None
|
||||||
self.system = None
|
self.system = None
|
||||||
self.state['SystemAddress'] = None
|
self.state['SystemAddress'] = None
|
||||||
self.coordinates = None
|
self.state['StarPos'] = None
|
||||||
self.state['Body'] = None
|
self.state['Body'] = None
|
||||||
self.state['BodyID'] = None
|
self.state['BodyID'] = None
|
||||||
self.state['BodyType'] = None
|
self.state['BodyType'] = None
|
||||||
@ -529,7 +528,7 @@ class EDLogs(FileSystemEventHandler): # type: ignore # See below
|
|||||||
'timestamp': strftime('%Y-%m-%dT%H:%M:%SZ', gmtime()),
|
'timestamp': strftime('%Y-%m-%dT%H:%M:%SZ', gmtime()),
|
||||||
'event': 'StartUp',
|
'event': 'StartUp',
|
||||||
'StarSystem': self.system,
|
'StarSystem': self.system,
|
||||||
'StarPos': self.coordinates,
|
'StarPos': self.state['StarPos'],
|
||||||
'SystemAddress': self.state['SystemAddress'],
|
'SystemAddress': self.state['SystemAddress'],
|
||||||
'Population': self.systempopulation,
|
'Population': self.systempopulation,
|
||||||
}
|
}
|
||||||
@ -581,7 +580,7 @@ class EDLogs(FileSystemEventHandler): # type: ignore # See below
|
|||||||
self.group = None
|
self.group = None
|
||||||
self.system = None
|
self.system = None
|
||||||
self.state['SystemAddress'] = None
|
self.state['SystemAddress'] = None
|
||||||
self.state['StarPos'] = self.coordinates = None
|
self.state['StarPos'] = None
|
||||||
self.state['Body'] = None
|
self.state['Body'] = None
|
||||||
self.state['BodyID'] = None
|
self.state['BodyID'] = None
|
||||||
self.station = None
|
self.station = None
|
||||||
@ -618,7 +617,7 @@ class EDLogs(FileSystemEventHandler): # type: ignore # See below
|
|||||||
self.group = entry.get('Group')
|
self.group = entry.get('Group')
|
||||||
self.system = None
|
self.system = None
|
||||||
self.state['SystemAddress'] = None
|
self.state['SystemAddress'] = None
|
||||||
self.state['StarPos'] = self.coordinates = None
|
self.state['StarPos'] = None
|
||||||
self.state['Body'] = None
|
self.state['Body'] = None
|
||||||
self.state['BodyID'] = None
|
self.state['BodyID'] = None
|
||||||
self.state['BodyType'] = None
|
self.state['BodyType'] = None
|
||||||
@ -839,21 +838,18 @@ class EDLogs(FileSystemEventHandler): # type: ignore # See below
|
|||||||
|
|
||||||
elif event_type == 'docked':
|
elif event_type == 'docked':
|
||||||
self.state['IsDocked'] = True
|
self.state['IsDocked'] = True
|
||||||
self.station = entry.get('StationName') # May be None
|
self.station = entry.get('StationName') # It may be None
|
||||||
self.station_marketid = entry.get('MarketID') # May be None
|
self.station_marketid = entry.get('MarketID') # It may be None
|
||||||
self.stationtype = entry.get('StationType') # May be None
|
self.stationtype = entry.get('StationType') # It may be None
|
||||||
self.stationservices = entry.get('StationServices') # None under E:D < 2.4
|
self.stationservices = entry.get('StationServices') # None under E:D < 2.4
|
||||||
|
|
||||||
# No need to set self.state['Taxi'] or Dropship here, if its those, the next event is a Disembark anyway
|
# No need to set self.state['Taxi'] or Dropship here, if it's
|
||||||
|
# those, the next event is a Disembark anyway
|
||||||
|
|
||||||
elif event_type in ('location', 'fsdjump', 'carrierjump'):
|
elif event_type in ('location', 'fsdjump', 'carrierjump'):
|
||||||
# alpha4 - any changes ?
|
###############################################################
|
||||||
# Location:
|
# Track: Body
|
||||||
# New in Odyssey:
|
###############################################################
|
||||||
# • Taxi: bool
|
|
||||||
# • Multicrew: bool
|
|
||||||
# • InSRV: bool
|
|
||||||
# • OnFoot: bool
|
|
||||||
if event_type in ('location', 'carrierjump'):
|
if event_type in ('location', 'carrierjump'):
|
||||||
# We're not guaranteeing this is a planet, rather than a
|
# We're not guaranteeing this is a planet, rather than a
|
||||||
# station.
|
# station.
|
||||||
@ -861,21 +857,32 @@ class EDLogs(FileSystemEventHandler): # type: ignore # See below
|
|||||||
self.state['BodyID'] = entry.get('BodyID')
|
self.state['BodyID'] = entry.get('BodyID')
|
||||||
self.state['BodyType'] = entry.get('BodyType')
|
self.state['BodyType'] = entry.get('BodyType')
|
||||||
|
|
||||||
if event_type == 'location':
|
|
||||||
logger.trace_if('journal.locations', '"Location" event')
|
|
||||||
self.state['IsDocked'] = entry.get('Docked', False)
|
|
||||||
|
|
||||||
elif event_type == 'fsdjump':
|
elif event_type == 'fsdjump':
|
||||||
self.state['Body'] = None
|
self.state['Body'] = None
|
||||||
self.state['BodyID'] = None
|
self.state['BodyID'] = None
|
||||||
self.state['BodyType'] = None
|
self.state['BodyType'] = None
|
||||||
|
###############################################################
|
||||||
|
|
||||||
|
###############################################################
|
||||||
|
# Track: IsDocked
|
||||||
|
###############################################################
|
||||||
|
if event_type == 'location':
|
||||||
|
logger.trace_if('journal.locations', '"Location" event')
|
||||||
|
self.state['IsDocked'] = entry.get('Docked', False)
|
||||||
|
###############################################################
|
||||||
|
|
||||||
|
###############################################################
|
||||||
|
# Track: Current System
|
||||||
|
###############################################################
|
||||||
if 'StarPos' in entry:
|
if 'StarPos' in entry:
|
||||||
# Plugins need this as well, so copy in state
|
# Plugins need this as well, so copy in state
|
||||||
self.state['StarPos'] = self.coordinates = tuple(entry['StarPos']) # type: ignore
|
self.state['StarPos'] = tuple(entry['StarPos']) # type: ignore
|
||||||
|
|
||||||
|
else:
|
||||||
|
logger.warning(f"'{event_type}' event without 'StarPos' !!!:\n{entry}\n")
|
||||||
|
|
||||||
if 'SystemAddress' not in entry:
|
if 'SystemAddress' not in entry:
|
||||||
logger.warning(f'"location" event without SystemAddress !!!:\n{entry}\n')
|
logger.warning(f"{event_type} event without SystemAddress !!!:\n{entry}\n")
|
||||||
|
|
||||||
# But we'll still *use* the value, because if a 'location' event doesn't
|
# But we'll still *use* the value, because if a 'location' event doesn't
|
||||||
# have this we've still moved and now don't know where and MUST NOT
|
# have this we've still moved and now don't know where and MUST NOT
|
||||||
@ -890,8 +897,12 @@ class EDLogs(FileSystemEventHandler): # type: ignore # See below
|
|||||||
|
|
||||||
else:
|
else:
|
||||||
self.system = entry['StarSystem']
|
self.system = entry['StarSystem']
|
||||||
|
###############################################################
|
||||||
|
|
||||||
self.station = entry.get('StationName') # May be None
|
###############################################################
|
||||||
|
# Track: Current station, if applicable
|
||||||
|
###############################################################
|
||||||
|
self.station = entry.get('StationName') # It may be None
|
||||||
# If on foot in-station 'Docked' is false, but we have a
|
# If on foot in-station 'Docked' is false, but we have a
|
||||||
# 'BodyType' of 'Station', and the 'Body' is the station name
|
# 'BodyType' of 'Station', and the 'Body' is the station name
|
||||||
# NB: No MarketID
|
# NB: No MarketID
|
||||||
@ -901,10 +912,15 @@ class EDLogs(FileSystemEventHandler): # type: ignore # See below
|
|||||||
self.station_marketid = entry.get('MarketID') # May be None
|
self.station_marketid = entry.get('MarketID') # May be None
|
||||||
self.stationtype = entry.get('StationType') # May be None
|
self.stationtype = entry.get('StationType') # May be None
|
||||||
self.stationservices = entry.get('StationServices') # None in Odyssey for on-foot 'Location'
|
self.stationservices = entry.get('StationServices') # None in Odyssey for on-foot 'Location'
|
||||||
|
###############################################################
|
||||||
|
|
||||||
|
###############################################################
|
||||||
|
# Track: Whether in a Taxi/Dropship
|
||||||
|
###############################################################
|
||||||
self.state['Taxi'] = entry.get('Taxi', None)
|
self.state['Taxi'] = entry.get('Taxi', None)
|
||||||
if not self.state['Taxi']:
|
if not self.state['Taxi']:
|
||||||
self.state['Dropship'] = None
|
self.state['Dropship'] = None
|
||||||
|
###############################################################
|
||||||
|
|
||||||
elif event_type == 'approachbody':
|
elif event_type == 'approachbody':
|
||||||
self.state['Body'] = entry['Body']
|
self.state['Body'] = entry['Body']
|
||||||
@ -1618,36 +1634,35 @@ class EDLogs(FileSystemEventHandler): # type: ignore # See below
|
|||||||
elif event_type == 'joinacrew':
|
elif event_type == 'joinacrew':
|
||||||
self.state['Captain'] = entry['Captain']
|
self.state['Captain'] = entry['Captain']
|
||||||
self.state['Role'] = 'Idle'
|
self.state['Role'] = 'Idle'
|
||||||
|
self.state['StarPos'] = None
|
||||||
|
self.system = None
|
||||||
|
self.state['SystemAddress'] = None
|
||||||
|
self.state['StarPos'] = None
|
||||||
self.state['Body'] = None
|
self.state['Body'] = None
|
||||||
self.state['BodyID'] = None
|
self.state['BodyID'] = None
|
||||||
self.system = None
|
self.state['BodyType'] = None
|
||||||
self.station = None
|
self.station = None
|
||||||
self.station_marketid = None
|
self.station_marketid = None
|
||||||
self.stationtype = None
|
self.stationtype = None
|
||||||
self.stationservices = None
|
self.stationservices = None
|
||||||
self.coordinates = None
|
|
||||||
self.state['SystemAddress'] = None
|
|
||||||
self.state['OnFoot'] = False
|
self.state['OnFoot'] = False
|
||||||
|
|
||||||
self.state['Body'] = None
|
|
||||||
self.state['BodyType'] = None
|
|
||||||
|
|
||||||
elif event_type == 'changecrewrole':
|
elif event_type == 'changecrewrole':
|
||||||
self.state['Role'] = entry['Role']
|
self.state['Role'] = entry['Role']
|
||||||
|
|
||||||
elif event_type == 'quitacrew':
|
elif event_type == 'quitacrew':
|
||||||
self.state['Captain'] = None
|
self.state['Captain'] = None
|
||||||
self.state['Role'] = None
|
self.state['Role'] = None
|
||||||
|
self.system = None
|
||||||
|
self.state['SystemAddress'] = None
|
||||||
|
self.state['StarPos'] = None
|
||||||
self.state['Body'] = None
|
self.state['Body'] = None
|
||||||
self.state['BodyID'] = None
|
self.state['BodyID'] = None
|
||||||
self.state['BodyType'] = None
|
self.state['BodyType'] = None
|
||||||
self.system = None
|
|
||||||
self.station = None
|
self.station = None
|
||||||
self.station_marketid = None
|
self.station_marketid = None
|
||||||
self.stationtype = None
|
self.stationtype = None
|
||||||
self.stationservices = None
|
self.stationservices = None
|
||||||
self.coordinates = None
|
|
||||||
self.state['SystemAddress'] = None
|
|
||||||
|
|
||||||
# TODO: on_foot: Will we get an event after this to know ?
|
# TODO: on_foot: Will we get an event after this to know ?
|
||||||
|
|
||||||
|
@ -2217,16 +2217,6 @@ def journal_entry( # noqa: C901, CCR001
|
|||||||
this.coordinates = state['StarPos']
|
this.coordinates = state['StarPos']
|
||||||
this.systemaddress = state['SystemAddress']
|
this.systemaddress = state['SystemAddress']
|
||||||
|
|
||||||
if event_name in ('location', 'fsdjump', 'docked', 'carrierjump'):
|
|
||||||
if 'StarPos' in entry:
|
|
||||||
this.coordinates = tuple(entry['StarPos'])
|
|
||||||
|
|
||||||
elif this.systemaddress != entry.get('SystemAddress'):
|
|
||||||
this.coordinates = None # Docked event doesn't include coordinates
|
|
||||||
|
|
||||||
if 'SystemAddress' not in entry:
|
|
||||||
logger.warning(f'"location" event without SystemAddress !!!:\n{entry}\n')
|
|
||||||
|
|
||||||
if event_name == 'docked':
|
if event_name == 'docked':
|
||||||
# Trigger a send/retry of pending EDDN messages
|
# Trigger a send/retry of pending EDDN messages
|
||||||
this.eddn.parent.after(this.eddn.REPLAY_DELAY, this.eddn.sender.queue_check_and_send, False)
|
this.eddn.parent.after(this.eddn.REPLAY_DELAY, this.eddn.sender.queue_check_and_send, False)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user