mirror of
https://github.com/nzp-team/Waypoint-Converter.git
synced 2024-11-12 23:44:36 +00:00
Unify waypoint parsing
This commit is contained in:
parent
83ee37661f
commit
95181df8e1
1 changed files with 21 additions and 29 deletions
50
waycon.py
50
waycon.py
|
@ -1,3 +1,4 @@
|
||||||
|
#!/bin/env python
|
||||||
import sys, argparse
|
import sys, argparse
|
||||||
|
|
||||||
def parseArgs():
|
def parseArgs():
|
||||||
|
@ -43,7 +44,7 @@ def startConversion(inputFile, outputFile, wayFormat):
|
||||||
print("PSP format detected")
|
print("PSP format detected")
|
||||||
if wayFormat.upper() == "PSP":
|
if wayFormat.upper() == "PSP":
|
||||||
raise ValueError("Already in PSP format!")
|
raise ValueError("Already in PSP format!")
|
||||||
wayArray = parsePSP(oldWayFile)
|
wayArray = parseOLD(oldWayFile, "PSP", 15, 2, 14)
|
||||||
elif header == "waypoint": # PC
|
elif header == "waypoint": # PC
|
||||||
print("PC format detected")
|
print("PC format detected")
|
||||||
if wayFormat.upper() == "PC":
|
if wayFormat.upper() == "PC":
|
||||||
|
@ -61,7 +62,7 @@ def startConversion(inputFile, outputFile, wayFormat):
|
||||||
print("BETA format detected")
|
print("BETA format detected")
|
||||||
if wayFormat.upper() == "BETA":
|
if wayFormat.upper() == "BETA":
|
||||||
raise ValueError("Already in BETA format!")
|
raise ValueError("Already in BETA format!")
|
||||||
wayArray = parseBETA(oldWayFile)
|
wayArray = parseOLD(oldWayFile, "BETA", 10, 0, 7)
|
||||||
except ValueError:
|
except ValueError:
|
||||||
print("Invalid waypoint co-ords")
|
print("Invalid waypoint co-ords")
|
||||||
|
|
||||||
|
@ -70,24 +71,35 @@ def startConversion(inputFile, outputFile, wayFormat):
|
||||||
print(waypoint)
|
print(waypoint)
|
||||||
exit(0)
|
exit(0)
|
||||||
|
|
||||||
# Hmmm, this seems awfully similar to the other one. Maybe refactor later.
|
def parseOLD(oldWayFile, detFormat, numLines, startL, endL):
|
||||||
def parsePSP(oldWayFile):
|
|
||||||
tempArray = [] # Temporarily stores waypoint fields
|
tempArray = [] # Temporarily stores waypoint fields
|
||||||
wayArray = [] # Array of waypoints
|
wayArray = [] # Array of waypoints
|
||||||
|
# Value for empty fields
|
||||||
|
if detFormat == "BETA":
|
||||||
|
blank = "0"
|
||||||
|
else:
|
||||||
|
blank = ""
|
||||||
|
# Start processing waypoints
|
||||||
for i, line in enumerate(oldWayFile):
|
for i, line in enumerate(oldWayFile):
|
||||||
relativeLineNum = (i+1)%15 # 15 lines per waypoint inc. empty line
|
relativeLineNum = (i+1)%numLines
|
||||||
# Ignore header stuff
|
# Ignore header stuff
|
||||||
if relativeLineNum > 2 and relativeLineNum < 14:
|
if relativeLineNum > startL and relativeLineNum < endL:
|
||||||
# Add data from field to temporary array
|
# Add data from field to temporary array
|
||||||
tempArray.append(line[line.index('=')+2:].strip())
|
if detFormat == "PSP":
|
||||||
if relativeLineNum == 14: # Reached end of that waypoint
|
tempArray.append(line[line.index('=')+2:].strip())
|
||||||
|
else:
|
||||||
|
tempArray.append(line.strip())
|
||||||
|
if relativeLineNum == endL: # Reached end of that waypoint
|
||||||
|
# NZP Beta 1.1 doesn't have special door targets
|
||||||
|
if detFormat == "BETA":
|
||||||
|
tempArray.insert(2,"")
|
||||||
# Store waypoint fields in dictionary
|
# Store waypoint fields in dictionary
|
||||||
waydict = {
|
waydict = {
|
||||||
"origin": tempArray[0],
|
"origin": tempArray[0],
|
||||||
"id": tempArray[1],
|
"id": tempArray[1],
|
||||||
"door": tempArray[2],
|
"door": tempArray[2],
|
||||||
# Remove empty targets
|
# Remove empty targets
|
||||||
"targets": [value for value in tempArray[3:] if value != ""]
|
"targets": [value for value in tempArray[3:] if value != blank]
|
||||||
}
|
}
|
||||||
tempArray.clear() # Clear temporary array for next waypoint
|
tempArray.clear() # Clear temporary array for next waypoint
|
||||||
wayArray.append(waydict) # Add waypoint to array
|
wayArray.append(waydict) # Add waypoint to array
|
||||||
|
@ -96,24 +108,4 @@ def parsePSP(oldWayFile):
|
||||||
def parsePC(oldWayFile):
|
def parsePC(oldWayFile):
|
||||||
return ["Notsee", "Zombies", "Portable", "2"]
|
return ["Notsee", "Zombies", "Portable", "2"]
|
||||||
|
|
||||||
def parseBETA(oldWayFile):
|
|
||||||
tempArray = [] # Temporarily stores waypoint fields
|
|
||||||
wayArray = [] # Array of waypoints
|
|
||||||
for i, line in enumerate(oldWayFile):
|
|
||||||
relativeLineNum = (i+1)%10 # 10 lines per waypoint
|
|
||||||
# Ignore 'owner' fields as they don't apply to modern format
|
|
||||||
if relativeLineNum > 0 and relativeLineNum < 7:
|
|
||||||
tempArray.append(line.strip()) # Add field to temporary array
|
|
||||||
if relativeLineNum == 0: # Reached end of that waypoint
|
|
||||||
# Store waypoint fields in dictionary
|
|
||||||
waydict = {
|
|
||||||
"origin": tempArray[0],
|
|
||||||
"id": tempArray[1],
|
|
||||||
# Remove empty targets
|
|
||||||
"targets": [value for value in tempArray[2:] if value != "0"]
|
|
||||||
}
|
|
||||||
tempArray.clear() # Clear temporary array for next waypoint
|
|
||||||
wayArray.append(waydict) # Add waypoint to array
|
|
||||||
return wayArray
|
|
||||||
|
|
||||||
parseArgs()
|
parseArgs()
|
||||||
|
|
Loading…
Reference in a new issue