Add alternate DNA format import

This commit is contained in:
DarkPhoenix
2020-06-12 02:20:32 +03:00
parent ac40dfd018
commit c4b490907d
2 changed files with 36 additions and 7 deletions

View File

@@ -46,15 +46,11 @@ DNA_OPTIONS = (
def importDna(string, fitName=None):
sMkt = Market.getInstance()
ids = list(map(int, re.findall(r'\d+', string)))
for id_ in ids:
try:
try:
try:
Ship(sMkt.getItem(sMkt.getItem(id_)))
except ValueError:
Citadel(sMkt.getItem(sMkt.getItem(id_)))
Ship(sMkt.getItem(id_))
except ValueError:
Citadel(sMkt.getItem(id_))
string = string[string.index(str(id_)):]
@@ -66,7 +62,29 @@ def importDna(string, fitName=None):
pass
string = string[:string.index("::") + 2]
info = string.split(":")
return processImportInfo(info, fitName, ";")
def importDnaAlt(string, fitName=None):
sMkt = Market.getInstance()
ids = list(map(int, re.findall(r'\d+', string)))
for id_ in ids:
try:
try:
Ship(sMkt.getItem(id_))
except ValueError:
Citadel(sMkt.getItem(id_))
string = string[string.index(str(id_)):]
break
except (KeyboardInterrupt, SystemExit):
raise
except:
pyfalog.warning("Exception caught in importDna")
pass
info = string.split(":")
return processImportInfo(info, fitName, "*")
def processImportInfo(info, fitName, amountSeparator):
sMkt = Market.getInstance()
f = Fit()
try:
try:
@@ -89,7 +107,11 @@ def importDna(string, fitName=None):
moduleList = []
for itemInfo in info[1:]:
if itemInfo:
itemID, amount = itemInfo.split(";")
if amountSeparator in itemInfo:
itemID, amount = itemInfo.split(amountSeparator)
else:
itemID = itemInfo
amount = 1
item = sMkt.getItem(int(itemID), eager="group.category")
if item.category.name == "Drone":

View File

@@ -31,7 +31,7 @@ from logbook import Logger
from eos import db
from eos.const import ImplantLocation
from service.fit import Fit as svcFit
from service.port.dna import exportDna, importDna
from service.port.dna import exportDna, importDna, importDnaAlt
from service.port.eft import (
exportEft, importEft, importEftCfg,
isValidDroneImport, isValidFighterImport, isValidCargoImport,
@@ -250,6 +250,9 @@ class Port:
m = re.search(dnaChatPattern, firstLine)
if m:
return "DNA", True, (cls.importDna(m.group("dna"), fitName=m.group("fitName")),)
m = re.search(r"DNA:(?P<dna>\d+(:\d+(\*\d+)?)*)", firstLine)
if m:
return "DNA", True, (cls.importDnaAlt(m.group("dna")),)
if activeFit is not None:
# Try to import mutated module
@@ -297,6 +300,10 @@ class Port:
def importDna(string, fitName=None):
return importDna(string, fitName=fitName)
@staticmethod
def importDnaAlt(string, fitName=None):
return importDnaAlt(string, fitName=fitName)
@staticmethod
def exportDna(fit, options, callback=None):
return exportDna(fit, options, callback=callback)