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

Move util_ships.py ship_map to data.py ship_name_map

Also refactors data.py to edmc_data.py as I'm having weird issues with
PyCharm debugger not starting, and this seems to be to do with module
name clashes.
This commit is contained in:
Athanasius 2021-04-03 11:40:17 +01:00
parent a80635fb46
commit ad8c63c64c
12 changed files with 103 additions and 108 deletions

View File

@ -265,9 +265,9 @@ import plug
import prefs
import stats
import td
import util_ships
from commodity import COMMODITY_CSV
from dashboard import dashboard
from edmc_data import ship_name_map
from hotkey import hotkeymgr
from l10n import Translations
from monitor import monitor
@ -824,7 +824,7 @@ class AppWindow(object):
self.dump_capi_data(data)
if not monitor.state['ShipType']: # Started game in SRV or fighter
self.ship['text'] = util_ships.ship_map.get(data['ship']['name'].lower(), data['ship']['name'])
self.ship['text'] = ship_name_map.get(data['ship']['name'].lower(), data['ship']['name'])
monitor.state['ShipID'] = data['ship']['id']
monitor.state['ShipType'] = data['ship']['name'].lower()
@ -928,7 +928,7 @@ class AppWindow(object):
ship_text = monitor.state['ShipName']
else:
ship_text = util_ships.ship_map.get(monitor.state['ShipType'], monitor.state['ShipType'])
ship_text = ship_name_map.get(monitor.state['ShipType'], monitor.state['ShipType'])
if not ship_text:
ship_text = ''

View File

@ -11,9 +11,8 @@ from os.path import isfile
from traceback import print_exc
import companion
import data
import outfitting
import util_ships
from edmc_data import ship_name_map
def __make_backup(file_name: str, suffix: str = '.bak') -> None:
@ -108,7 +107,7 @@ def addmodules(data):
raise ValueError('id: {} != {}'.format(key, module['id']))
try:
new = outfitting.lookup(module, util_ships.ship_map, True)
new = outfitting.lookup(module, ship_name_map, True)
except Exception:
print('{}, {}:'.format(module['id'], module['name']))
@ -166,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': util_ships.ship_map.get(ship['name'].lower())}
new = {'id': key, 'symbol': ship['name'], 'name': ship_name_map.get(ship['name'].lower())}
if new:
old = ships.get(key)
if old:

View File

@ -6,7 +6,7 @@ import hashlib
import time
from config import config
from data import commodity_bracketmap as bracketmap
from edmc_data import commodity_bracketmap as bracketmap
# DEFAULT means semi-colon separation

View File

@ -27,7 +27,7 @@ from typing import TYPE_CHECKING, Any, Dict, List, Union, cast
import requests
from config import appname, appversion, config
from data import companion_category_map as category_map
from edmc_data import companion_category_map as category_map
from EDMCLogging import get_main_logger
from monitor import monitor
from protocol import protocolhandler

View File

@ -4,20 +4,15 @@
#
import csv
import base64
from collections import OrderedDict
import pickle
import json
import pickle
import subprocess
import sys
from collections import OrderedDict
from traceback import print_exc
from config import config
import outfitting
import companion
import util_ships
from data import coriolis_ship_map
from edmc_data import coriolis_ship_map, ship_name_map
if __name__ == "__main__":
@ -32,7 +27,7 @@ if __name__ == "__main__":
data = json.load(open('coriolis-data/dist/index.json'))
# Symbolic name from in-game name
reverse_ship_map = {v: k for k, v in list(util_ships.ship_map.items())}
reverse_ship_map = {v: k for k, v in list(ship_name_map.items())}
bulkheads = list(outfitting.armour_map.keys())
@ -91,7 +86,7 @@ if __name__ == "__main__":
reader = csv.DictReader(csvfile, restval='')
for row in reader:
try:
module = outfitting.lookup({ 'id': row['id'], 'name': row['symbol'] }, util_ships.ship_map)
module = outfitting.lookup({ 'id': row['id'], 'name': row['symbol'] }, ship_name_map)
except:
print(row['symbol'])
print_exc()

View File

@ -424,3 +424,50 @@ GuiFocusOrrery = 8
GuiFocusFSS = 9
GuiFocusSAA = 10
GuiFocusCodex = 11
ship_name_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',
}

View File

@ -1,20 +1,23 @@
# Export ship loadout in E:D Shipyard plain text format
import pickle
from collections import defaultdict
import os
from os.path import join
import pickle
import re
import time
from collections import defaultdict
from os.path import join
from typing import Dict, List, Union
from config import config
from data import edshipyard_slot_map as slot_map
import outfitting
import util_ships
from config import config
from edmc_data import edshipyard_slot_map as slot_map
from edmc_data import ship_name_map
from typing import Dict, Union, List
__Module = Dict[str, Union[str, List[str]]]
# Map API ship names to ED Shipyard names
ship_map = ship_name_map.copy()
# Ship masses
# TODO: prefer something other than pickle for this storage (dev readability, security)
@ -142,11 +145,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 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()]
assert data['ship']['name'].lower() in ship_name_map, data['ship']['name']
assert ship_name_map[data['ship']['name'].lower()] in ships, ship_name_map[data['ship']['name'].lower()]
try:
mass += ships[util_ships.ship_map[data['ship']['name'].lower()]]['hullMass']
mass += ships[ship_name_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']

View File

@ -1,28 +1,27 @@
from collections import OrderedDict
import pickle
from os.path import join
import time
from collections import OrderedDict
from os.path import join
import util_ships
from config import config
from data import outfitting_armour_map as armour_map
from data import outfitting_weapon_map as weapon_map
from data import outfitting_missiletype_map as missiletype_map
from data import outfitting_weaponmount_map as weaponmount_map
from data import outfitting_weaponclass_map as weaponclass_map
from data import outfitting_weaponrating_map as weaponrating_map
from data import outfitting_weaponoldvariant_map as weaponoldvariant_map
from data import outfitting_countermeasure_map as countermeasure_map
from data import outfitting_utility_map as utility_map
from data import outfitting_cabin_map as cabin_map
from data import outfitting_rating_map as rating_map
from data import outfitting_corrosion_rating_map as corrosion_rating_map
from data import outfitting_planet_rating_map as planet_rating_map
from data import outfitting_fighter_rating_map as fighter_rating_map
from data import outfitting_misc_internal_map as misc_internal_map
from data import outfitting_standard_map as standard_map
from data import outfitting_internal_map as internal_map
from edmc_data import outfitting_armour_map as armour_map
from edmc_data import outfitting_cabin_map as cabin_map
from edmc_data import outfitting_corrosion_rating_map as corrosion_rating_map
from edmc_data import outfitting_countermeasure_map as countermeasure_map
from edmc_data import outfitting_fighter_rating_map as fighter_rating_map
from edmc_data import outfitting_internal_map as internal_map
from edmc_data import outfitting_misc_internal_map as misc_internal_map
from edmc_data import outfitting_missiletype_map as missiletype_map
from edmc_data import outfitting_planet_rating_map as planet_rating_map
from edmc_data import outfitting_rating_map as rating_map
from edmc_data import outfitting_standard_map as standard_map
from edmc_data import outfitting_utility_map as utility_map
from edmc_data import outfitting_weapon_map as weapon_map
from edmc_data import outfitting_weaponclass_map as weaponclass_map
from edmc_data import outfitting_weaponmount_map as weaponmount_map
from edmc_data import outfitting_weaponoldvariant_map as weaponoldvariant_map
from edmc_data import outfitting_weaponrating_map as weaponrating_map
from edmc_data import ship_name_map
# Module mass, FSD data etc
moduledata = OrderedDict()
@ -30,7 +29,7 @@ moduledata = OrderedDict()
# Given a module description from the Companion API returns a description of the module in the form of a
# dict { category, name, [mount], [guidance], [ship], rating, class } using the same terms found in the
# English langauge game. For fitted modules, dict also includes { enabled, priority }.
# ship_map tells us what ship names to use for Armour - i.e. EDDN schema names or in-game names.
# ship_name_map tells us what ship names to use for Armour - i.e. EDDN schema names or in-game names.
#
# Returns None if the module is user-specific (i.e. decal, paintjob, kit) or PP-specific in station outfitting.
# (Given the ad-hocery in this implementation a big lookup table might have been simpler and clearer).
@ -209,7 +208,7 @@ def export(data, filename):
h.write(header)
for v in list(data['lastStarport'].get('modules', {}).values()):
try:
m = lookup(v, util_ships.ship_map)
m = lookup(v, ship_name_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:

View File

@ -3,7 +3,7 @@
import time
from config import config
from util_ships import ship_map
from edmc_data import ship_name_map
def export(data, filename):
@ -19,6 +19,6 @@ def export(data, filename):
h = open(filename, 'wt')
h.write(header)
for (name,fdevid) in [(ship_map.get(ship['name'].lower(), ship['name']), ship['id']) for ship in list((data['lastStarport']['ships'].get('shipyard_list') or {}).values()) + data['lastStarport']['ships'].get('unavailable_list')]:
for (name,fdevid) in [(ship_name_map.get(ship['name'].lower(), ship['name']), ship['id']) for ship in list((data['lastStarport']['ships'].get('shipyard_list') or {}).values()) + data['lastStarport']['ships'].get('unavailable_list')]:
h.write('%s,%s,%s,%s\n' % (rowheader, name, fdevid, data['timestamp']))
h.close()

View File

@ -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 edmc_data import ship_name_map
from l10n import Locale
from monitor import monitor
from util_ships import ship_map
logger = EDMCLogging.get_main_logger()
@ -216,7 +216,7 @@ def ships(companion_data: Dict[str, Any]) -> List[ShipRet]:
# Set current system, not last docked
out.append(ShipRet(
id=str(ships[0]['id']),
type=ship_map.get(ships[0]['name'].lower(), ships[0]['name']),
type=ship_name_map.get(ships[0]['name'].lower(), ships[0]['name']),
name=str(ships[0].get('shipName', '')),
system=companion_data['lastSystem']['name'],
station='',
@ -225,7 +225,7 @@ def ships(companion_data: Dict[str, Any]) -> List[ShipRet]:
out.extend(
ShipRet(
id=str(ship['id']),
type=ship_map.get(ship['name'].lower(), ship['name']),
type=ship_name_map.get(ship['name'].lower(), ship['name']),
name=ship.get('shipName', ''),
system=ship['starsystem']['name'],
station=ship['station']['name'],
@ -238,7 +238,7 @@ def ships(companion_data: Dict[str, Any]) -> List[ShipRet]:
return [
ShipRet(
id=str(ship['id']),
type=ship_map.get(ship['name'].lower(), ship['name']),
type=ship_name_map.get(ship['name'].lower(), ship['name']),
name=ship.get('shipName', ''),
system=ship['starsystem']['name'],
station=ship['station']['name'],

2
td.py
View File

@ -11,7 +11,7 @@ import time
from config import applongname, appversion, config
# These are specific to Trade Dangerous, so don't move to data.py
# These are specific to Trade Dangerous, so don't move to edmc_data.py
demandbracketmap = { 0: '?',
1: 'L',
2: 'M',

View File

@ -1,57 +1,9 @@
"""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',
}
from edmc_data import ship_name_map
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()
name = str(ship_name or ship_name_map.get(ship_type.lower(), ship_type)).strip()
if name.endswith('.'):
name = name[:-2]