From 2cb27ddc0e873bbaada1d46fadbb584b05e9d845 Mon Sep 17 00:00:00 2001 From: Jonathan Harris <jonathan@marginal.org.uk> Date: Wed, 21 Oct 2015 15:33:14 +0100 Subject: [PATCH] Tidy up handling of Discovery Scanners and Docking Computer. --- coriolis.py | 10 +++++----- outfitting.py | 35 +++++++++++++++-------------------- 2 files changed, 20 insertions(+), 25 deletions(-) diff --git a/coriolis.py b/coriolis.py index b7368e8a..0eb4f69f 100644 --- a/coriolis.py +++ b/coriolis.py @@ -57,7 +57,7 @@ weaponmount_map = { # Modules that have a name as well as a group bulkheads = outfitting.armour_map.values() -scanners = [x[0] for x in outfitting.stellar_map.values()] +scanners = [x[0] for x in outfitting.misc_internal_map.values()] countermeasures = [x[0] for x in outfitting.countermeasure_map.values()] fixup_map = { 'Advanced Plasma Accelerator' : ('Plasma Accelerator', 'Advanced Plasma Accelerator'), @@ -134,15 +134,15 @@ def export(data): loadout['components'][category][standard_map[module['name']]] = thing else: # All other items have a "group" member, some also have a "name" - if module['name'] in scanners: + if module['name'] in fixup_map: + thing['group'], name = fixup_map[module['name']] + if name: thing['name'] = name + elif module['name'] in scanners: thing['group'] = 'Scanner' thing['name'] = module['name'] elif module['name'] in countermeasures: thing['group'] = 'Countermeasure' thing['name'] = module['name'] - elif module['name'] in fixup_map: - thing['group'], name = fixup_map[module['name']] - if name: thing['name'] = name else: thing['group'] = module['name'] diff --git a/outfitting.py b/outfitting.py index 5c5629f7..9a8b7293 100755 --- a/outfitting.py +++ b/outfitting.py @@ -174,6 +174,14 @@ rating_map = { '5': 'A', } +misc_internal_map = { + ('detailedsurfacescanner', 'tiny') : ('Detailed Surface Scanner', 'C'), + ('dockingcomputer', 'standard') : ('Standard Docking Computer', 'E'), + ('stellarbodydiscoveryscanner', 'standard') : ('Basic Discovery Scanner', 'E'), + ('stellarbodydiscoveryscanner', 'intermediate') : ('Intermediate Discovery Scanner', 'D'), + ('stellarbodydiscoveryscanner', 'advanced') : ('Advanced Discovery Scanner', 'C'), +} + standard_map = { # 'armour' : handled separately 'engine' : 'Thrusters', @@ -185,13 +193,6 @@ standard_map = { 'sensors' : 'Sensors', } -stellar_map = { - 'standard' : ('Basic Discovery Scanner', 'E'), - 'intermediate' : ('Intermediate Discovery Scanner', 'D'), - 'advanced' : ('Advanced Discovery Scanner', 'C'), - 'tiny' : ('Detailed Surface Scanner', 'C'), -} - internal_map = { 'cargorack' : 'Cargo Rack', 'collection' : 'Collector Limpet Controller', @@ -280,28 +281,22 @@ def lookup(module): elif name[0]=='hpt': raise AssertionError('%s: Unknown weapon "%s"' % (module['id'], name[1])) - # Stellar scanners - e.g. Int_StellarBodyDiscoveryScanner_Standard - elif name[1] in ['stellarbodydiscoveryscanner', 'detailedsurfacescanner']: - new['category'] = 'internal' - new['name'], new['rating'] = stellar_map[name[2]] - new['class'] = '1' + elif name[0]!='int': + raise AssertionError('%s: Unknown prefix "%s"' % (module['id'], name[0])) - # Docking Computer - e.g. Int_DockingComputer_Standard - elif name[1] == 'dockingcomputer' and name[2] == 'standard': + # Miscellaneous Class 1 - e.g. Int_StellarBodyDiscoveryScanner_Advanced, Int_DockingComputer_Standard + elif (name[1],name[2]) in misc_internal_map: + # Reported category is not necessarily helpful. e.g. "Int_DockingComputer_Standard" has category "utility" new['category'] = 'internal' - new['name'] = 'Standard Docking Computer' + new['name'], new['rating'] = misc_internal_map[(name[1],name[2])] new['class'] = '1' - new['rating'] = 'E' # Standard & Internal else: - # Reported category is not necessarily helpful. e.g. "Int_DockingComputer_Standard" has category "utility" - if name[0] != 'int': raise AssertionError('%s: Unknown prefix "%s"' % (module['id'], name[0])) - if name[1] == 'dronecontrol': # e.g. Int_DroneControl_Collection_Size1_Class1 name.pop(0) - if name[1] in standard_map: # e.g. Int_Engine_Size2_Class1 + if name[1] in standard_map: # e.g. Int_Engine_Size2_Class1, Int_ShieldGenerator_Size8_Class5_Strong new['category'] = 'standard' new['name'] = standard_map[len(name)>4 and (name[1],name[4]) or name[1]] elif name[1] in internal_map: # e.g. Int_CargoRack_Size8_Class1