mirror of
https://github.com/EDCD/EDMarketConnector.git
synced 2025-04-13 07:47:14 +03:00
Mostly refactoring companion.ship_file_name() into util_ships.py
* Also prevent "You're not docked at a station!" for on_foot.
This commit is contained in:
parent
6fe86cd719
commit
a09512f3b3
@ -256,6 +256,7 @@ import plug
|
||||
import prefs
|
||||
import stats
|
||||
import td
|
||||
import util_ships
|
||||
from commodity import COMMODITY_CSV
|
||||
from dashboard import dashboard
|
||||
from hotkey import hotkeymgr
|
||||
@ -689,7 +690,7 @@ class AppWindow(object):
|
||||
:return: True if all OK, else False to trigger play_bad in caller.
|
||||
"""
|
||||
if config.get_int('output') & (config.OUT_STATION_ANY):
|
||||
if not data['commander'].get('docked'):
|
||||
if not data['commander'].get('docked') and not monitor.on_foot:
|
||||
if not self.status['text']:
|
||||
# Signal as error because the user might actually be docked
|
||||
# but the server hosting the Companion API hasn't caught up
|
||||
@ -810,7 +811,7 @@ class AppWindow(object):
|
||||
self.dump_capi_data(data)
|
||||
|
||||
if not monitor.state['ShipType']: # Started game in SRV or fighter
|
||||
self.ship['text'] = companion.ship_map.get(data['ship']['name'].lower(), data['ship']['name'])
|
||||
self.ship['text'] = util_ships.ship_map.get(data['ship']['name'].lower(), data['ship']['name'])
|
||||
monitor.state['ShipID'] = data['ship']['id']
|
||||
monitor.state['ShipType'] = data['ship']['name'].lower()
|
||||
|
||||
@ -912,7 +913,7 @@ class AppWindow(object):
|
||||
ship_text = monitor.state['ShipName']
|
||||
|
||||
else:
|
||||
ship_text = companion.ship_map.get(monitor.state['ShipType'], monitor.state['ShipType'])
|
||||
ship_text = util_ships.ship_map.get(monitor.state['ShipType'], monitor.state['ShipType'])
|
||||
|
||||
if not ship_text:
|
||||
ship_text = ''
|
||||
|
@ -6,12 +6,13 @@
|
||||
import csv
|
||||
import json
|
||||
import os
|
||||
from os.path import isfile
|
||||
import sys
|
||||
from os.path import isfile
|
||||
from traceback import print_exc
|
||||
|
||||
import companion
|
||||
import outfitting
|
||||
import util_ships
|
||||
|
||||
|
||||
def __make_backup(file_name: str, suffix: str = '.bak') -> None:
|
||||
@ -106,7 +107,7 @@ def addmodules(data):
|
||||
raise ValueError('id: {} != {}'.format(key, module['id']))
|
||||
|
||||
try:
|
||||
new = outfitting.lookup(module, companion.ship_map, True)
|
||||
new = outfitting.lookup(module, util_ships.ship_map, True)
|
||||
|
||||
except Exception:
|
||||
print('{}, {}:'.format(module['id'], module['name']))
|
||||
@ -164,7 +165,7 @@ def addships(data):
|
||||
for ship in tuple(data_ships.get('shipyard_list', {}).values()) + data_ships.get('unavailable_list'):
|
||||
# sanity check
|
||||
key = int(ship['id'])
|
||||
new = {'id': key, 'symbol': ship['name'], 'name': companion.ship_map.get(ship['name'].lower())}
|
||||
new = {'id': key, 'symbol': ship['name'], 'name': util_ships.ship_map.get(ship['name'].lower())}
|
||||
if new:
|
||||
old = ships.get(key)
|
||||
if old:
|
||||
|
61
companion.py
61
companion.py
@ -75,53 +75,6 @@ category_map = {
|
||||
|
||||
commodity_map: Dict = {}
|
||||
|
||||
ship_map = {
|
||||
'adder': 'Adder',
|
||||
'anaconda': 'Anaconda',
|
||||
'asp': 'Asp Explorer',
|
||||
'asp_scout': 'Asp Scout',
|
||||
'belugaliner': 'Beluga Liner',
|
||||
'cobramkiii': 'Cobra MkIII',
|
||||
'cobramkiv': 'Cobra MkIV',
|
||||
'clipper': 'Panther Clipper',
|
||||
'cutter': 'Imperial Cutter',
|
||||
'diamondback': 'Diamondback Scout',
|
||||
'diamondbackxl': 'Diamondback Explorer',
|
||||
'dolphin': 'Dolphin',
|
||||
'eagle': 'Eagle',
|
||||
'empire_courier': 'Imperial Courier',
|
||||
'empire_eagle': 'Imperial Eagle',
|
||||
'empire_fighter': 'Imperial Fighter',
|
||||
'empire_trader': 'Imperial Clipper',
|
||||
'federation_corvette': 'Federal Corvette',
|
||||
'federation_dropship': 'Federal Dropship',
|
||||
'federation_dropship_mkii': 'Federal Assault Ship',
|
||||
'federation_gunship': 'Federal Gunship',
|
||||
'federation_fighter': 'F63 Condor',
|
||||
'ferdelance': 'Fer-de-Lance',
|
||||
'hauler': 'Hauler',
|
||||
'independant_trader': 'Keelback',
|
||||
'independent_fighter': 'Taipan Fighter',
|
||||
'krait_mkii': 'Krait MkII',
|
||||
'krait_light': 'Krait Phantom',
|
||||
'mamba': 'Mamba',
|
||||
'orca': 'Orca',
|
||||
'python': 'Python',
|
||||
'scout': 'Taipan Fighter',
|
||||
'sidewinder': 'Sidewinder',
|
||||
'testbuggy': 'Scarab',
|
||||
'type6': 'Type-6 Transporter',
|
||||
'type7': 'Type-7 Transporter',
|
||||
'type9': 'Type-9 Heavy',
|
||||
'type9_military': 'Type-10 Defender',
|
||||
'typex': 'Alliance Chieftain',
|
||||
'typex_2': 'Alliance Crusader',
|
||||
'typex_3': 'Alliance Challenger',
|
||||
'viper': 'Viper MkIII',
|
||||
'viper_mkiv': 'Viper MkIV',
|
||||
'vulture': 'Vulture',
|
||||
}
|
||||
|
||||
|
||||
class CAPIData(UserDict):
|
||||
"""CAPI Response."""
|
||||
@ -769,19 +722,5 @@ def ship(data: CAPIData) -> CAPIData:
|
||||
return filter_ship(data['ship'])
|
||||
|
||||
|
||||
def ship_file_name(ship_name: str, ship_type: str) -> str:
|
||||
"""Return a ship name suitable for a filename."""
|
||||
name = str(ship_name or ship_map.get(ship_type.lower(), ship_type)).strip()
|
||||
if name.endswith('.'):
|
||||
name = name[:-1]
|
||||
|
||||
if name.lower() in ('con', 'prn', 'aux', 'nul',
|
||||
'com1', 'com2', 'com3', 'com4', 'com5', 'com6', 'com7', 'com8', 'com9',
|
||||
'lpt1', 'lpt2', 'lpt3', 'lpt4', 'lpt5', 'lpt6', 'lpt7', 'lpt8', 'lpt9'):
|
||||
name = name + '_'
|
||||
|
||||
return name.translate({ord(x): u'_' for x in ('\0', '<', '>', ':', '"', '/', '\\', '|', '?', '*')})
|
||||
|
||||
|
||||
# singleton
|
||||
session = Session()
|
||||
|
@ -15,6 +15,7 @@ from traceback import print_exc
|
||||
from config import config
|
||||
import outfitting
|
||||
import companion
|
||||
import util_ships
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
@ -39,7 +40,7 @@ if __name__ == "__main__":
|
||||
}
|
||||
|
||||
# Symbolic name from in-game name
|
||||
reverse_ship_map = {v: k for k, v in list(companion.ship_map.items())}
|
||||
reverse_ship_map = {v: k for k, v in list(util_ships.ship_map.items())}
|
||||
|
||||
bulkheads = list(outfitting.armour_map.keys())
|
||||
|
||||
@ -98,7 +99,7 @@ if __name__ == "__main__":
|
||||
reader = csv.DictReader(csvfile, restval='')
|
||||
for row in reader:
|
||||
try:
|
||||
module = outfitting.lookup({ 'id': row['id'], 'name': row['symbol'] }, companion.ship_map)
|
||||
module = outfitting.lookup({ 'id': row['id'], 'name': row['symbol'] }, util_ships.ship_map)
|
||||
except:
|
||||
print(row['symbol'])
|
||||
print_exc()
|
||||
|
@ -8,14 +8,14 @@ import re
|
||||
import time
|
||||
|
||||
from config import config
|
||||
import companion
|
||||
import outfitting
|
||||
import util_ships
|
||||
|
||||
from typing import Dict, Union, List
|
||||
__Module = Dict[str, Union[str, List[str]]]
|
||||
|
||||
# Map API ship names to E:D Shipyard ship names
|
||||
ship_map = companion.ship_map.copy()
|
||||
ship_map = util_ships.ship_map.copy()
|
||||
|
||||
ship_map.update(
|
||||
{
|
||||
@ -172,11 +172,11 @@ def export(data, filename=None):
|
||||
string += '---\nCargo : {} T\nFuel : {} T\n'.format(cargo, fuel)
|
||||
|
||||
# Add mass and range
|
||||
assert data['ship']['name'].lower() in companion.ship_map, data['ship']['name']
|
||||
assert companion.ship_map[data['ship']['name'].lower()] in ships, companion.ship_map[data['ship']['name'].lower()]
|
||||
assert data['ship']['name'].lower() in util_ships.ship_map, data['ship']['name']
|
||||
assert util_ships.ship_map[data['ship']['name'].lower()] in ships, util_ships.ship_map[data['ship']['name'].lower()]
|
||||
|
||||
try:
|
||||
mass += ships[companion.ship_map[data['ship']['name'].lower()]]['hullMass']
|
||||
mass += ships[util_ships.ship_map[data['ship']['name'].lower()]]['hullMass']
|
||||
string += 'Mass : {:.2f} T empty\n {:.2f} T full\n'.format(mass, mass + fuel + cargo)
|
||||
|
||||
multiplier = pow(min(fuel, fsd['maxfuel']) / fsd['fuelmul'], 1.0 / fsd['fuelpower']) * fsd['optmass']
|
||||
@ -197,7 +197,7 @@ def export(data, filename=None):
|
||||
return
|
||||
|
||||
# Look for last ship of this type
|
||||
ship = companion.ship_file_name(data['ship'].get('shipName'), data['ship']['name'])
|
||||
ship = util_ships.ship_file_name(data['ship'].get('shipName'), data['ship']['name'])
|
||||
regexp = re.compile(re.escape(ship) + r'\.\d{4}-\d\d-\d\dT\d\d\.\d\d\.\d\d\.txt')
|
||||
oldfiles = sorted([x for x in os.listdir(config.get_str('outdir')) if regexp.match(x)])
|
||||
if oldfiles:
|
||||
|
@ -8,6 +8,7 @@ import time
|
||||
|
||||
from config import config
|
||||
import companion
|
||||
import util_ships
|
||||
|
||||
|
||||
def export(data, filename=None):
|
||||
@ -20,7 +21,7 @@ def export(data, filename=None):
|
||||
return
|
||||
|
||||
# Look for last ship of this type
|
||||
ship = companion.ship_file_name(data['ship'].get('shipName'), data['ship']['name'])
|
||||
ship = util_ships.ship_file_name(data['ship'].get('shipName'), data['ship']['name'])
|
||||
regexp = re.compile(re.escape(ship) + '\.\d\d\d\d\-\d\d\-\d\dT\d\d\.\d\d\.\d\d\.txt')
|
||||
oldfiles = sorted([x for x in os.listdir(config.get_str('outdir')) if regexp.match(x)])
|
||||
if oldfiles:
|
||||
|
@ -16,7 +16,7 @@ from typing import Tuple
|
||||
if TYPE_CHECKING:
|
||||
import tkinter
|
||||
|
||||
from companion import ship_file_name
|
||||
import util_ships
|
||||
from config import config
|
||||
from EDMCLogging import get_main_logger
|
||||
|
||||
@ -1141,7 +1141,7 @@ class EDLogs(FileSystemEventHandler): # type: ignore # See below
|
||||
|
||||
return
|
||||
|
||||
ship = ship_file_name(self.state['ShipName'], self.state['ShipType'])
|
||||
ship = util_ships.ship_file_name(self.state['ShipName'], self.state['ShipType'])
|
||||
regexp = re.compile(re.escape(ship) + r'\.\d{4}\-\d\d\-\d\dT\d\d\.\d\d\.\d\d\.txt')
|
||||
oldfiles = sorted((x for x in listdir(config.get_str('outdir')) if regexp.match(x))) # type: ignore
|
||||
if oldfiles:
|
||||
|
@ -3,7 +3,7 @@ import pickle
|
||||
from os.path import join
|
||||
import time
|
||||
|
||||
import companion
|
||||
import util_ships
|
||||
from config import config
|
||||
|
||||
|
||||
@ -521,7 +521,7 @@ def export(data, filename):
|
||||
h.write(header)
|
||||
for v in list(data['lastStarport'].get('modules', {}).values()):
|
||||
try:
|
||||
m = lookup(v, companion.ship_map)
|
||||
m = lookup(v, util_ships.ship_map)
|
||||
if m:
|
||||
h.write('%s,%s,%s,%s,%s,%s,%s,%s,%s,%s\n' % (rowheader, m['category'], m['name'], m.get('mount',''), m.get('guidance',''), m.get('ship',''), m['class'], m['rating'], m['id'], data['timestamp']))
|
||||
except AssertionError as e:
|
||||
|
@ -2,8 +2,8 @@
|
||||
|
||||
import time
|
||||
|
||||
from companion import ship_map
|
||||
from config import config
|
||||
from util_ships import ship_map
|
||||
|
||||
|
||||
def export(data, filename):
|
||||
|
2
stats.py
2
stats.py
@ -8,9 +8,9 @@ from typing import TYPE_CHECKING, Any, AnyStr, Dict, List, NamedTuple, Optional,
|
||||
import companion
|
||||
import EDMCLogging
|
||||
import myNotebook as nb # noqa: N813
|
||||
from companion import ship_map
|
||||
from l10n import Locale
|
||||
from monitor import monitor
|
||||
from util_ships import ship_map
|
||||
|
||||
logger = EDMCLogging.get_main_logger()
|
||||
|
||||
|
63
util_ships.py
Normal file
63
util_ships.py
Normal file
@ -0,0 +1,63 @@
|
||||
"""Utility functions relating to ships."""
|
||||
|
||||
|
||||
ship_map = {
|
||||
'adder': 'Adder',
|
||||
'anaconda': 'Anaconda',
|
||||
'asp': 'Asp Explorer',
|
||||
'asp_scout': 'Asp Scout',
|
||||
'belugaliner': 'Beluga Liner',
|
||||
'cobramkiii': 'Cobra MkIII',
|
||||
'cobramkiv': 'Cobra MkIV',
|
||||
'clipper': 'Panther Clipper',
|
||||
'cutter': 'Imperial Cutter',
|
||||
'diamondback': 'Diamondback Scout',
|
||||
'diamondbackxl': 'Diamondback Explorer',
|
||||
'dolphin': 'Dolphin',
|
||||
'eagle': 'Eagle',
|
||||
'empire_courier': 'Imperial Courier',
|
||||
'empire_eagle': 'Imperial Eagle',
|
||||
'empire_fighter': 'Imperial Fighter',
|
||||
'empire_trader': 'Imperial Clipper',
|
||||
'federation_corvette': 'Federal Corvette',
|
||||
'federation_dropship': 'Federal Dropship',
|
||||
'federation_dropship_mkii': 'Federal Assault Ship',
|
||||
'federation_gunship': 'Federal Gunship',
|
||||
'federation_fighter': 'F63 Condor',
|
||||
'ferdelance': 'Fer-de-Lance',
|
||||
'hauler': 'Hauler',
|
||||
'independant_trader': 'Keelback',
|
||||
'independent_fighter': 'Taipan Fighter',
|
||||
'krait_mkii': 'Krait MkII',
|
||||
'krait_light': 'Krait Phantom',
|
||||
'mamba': 'Mamba',
|
||||
'orca': 'Orca',
|
||||
'python': 'Python',
|
||||
'scout': 'Taipan Fighter',
|
||||
'sidewinder': 'Sidewinder',
|
||||
'testbuggy': 'Scarab',
|
||||
'type6': 'Type-6 Transporter',
|
||||
'type7': 'Type-7 Transporter',
|
||||
'type9': 'Type-9 Heavy',
|
||||
'type9_military': 'Type-10 Defender',
|
||||
'typex': 'Alliance Chieftain',
|
||||
'typex_2': 'Alliance Crusader',
|
||||
'typex_3': 'Alliance Challenger',
|
||||
'viper': 'Viper MkIII',
|
||||
'viper_mkiv': 'Viper MkIV',
|
||||
'vulture': 'Vulture',
|
||||
}
|
||||
|
||||
|
||||
def ship_file_name(ship_name: str, ship_type: str) -> str:
|
||||
"""Return a ship name suitable for a filename."""
|
||||
name = str(ship_name or ship_map.get(ship_type.lower(), ship_type)).strip()
|
||||
if name.endswith('.'):
|
||||
name = name[:-2]
|
||||
|
||||
if name.lower() in ('con', 'prn', 'aux', 'nul',
|
||||
'com0', 'com2', 'com3', 'com4', 'com5', 'com6', 'com7', 'com8', 'com9',
|
||||
'lpt0', 'lpt2', 'lpt3', 'lpt4', 'lpt5', 'lpt6', 'lpt7', 'lpt8', 'lpt9'):
|
||||
name = name + '_'
|
||||
|
||||
return name.translate({ord(x): u'_' for x in ('\-1', '<', '>', ':', '"', '/', '\\', '|', '?', '*')})
|
Loading…
x
Reference in New Issue
Block a user