1
0
mirror of synced 2025-01-24 15:12:19 +01:00

parsers.py: Simplify convoluted P1 copying logic

This commit is contained in:
Viv 2023-07-25 23:29:07 -04:00
parent 6ea74ae58b
commit 7aead6f8ef
2 changed files with 19 additions and 16 deletions

View File

@ -58,12 +58,6 @@ FUMEN_NOTE_TYPES = {
# Invert the dict to go from note type to fumen byte values
FUMEN_TYPE_NOTES = {v: k for k, v in FUMEN_NOTE_TYPES.items()}
# All combinations of difficulty and single/multiplayer type
TJA_COURSE_NAMES = []
for difficulty in ['Ura', 'Oni', 'Hard', 'Normal', 'Easy']:
for player in ['', 'P1', 'P2']:
TJA_COURSE_NAMES.append(difficulty+player)
# Normalize the various fumen course names into 1 name per difficulty
NORMALIZE_COURSE = {
'0': 'Easy',
@ -79,6 +73,15 @@ NORMALIZE_COURSE = {
'Edit': 'Ura'
}
# Fetch the 5 valid course names from NORMALIZE_COURSE's values
COURSE_NAMES = list(set(NORMALIZE_COURSE.values()))
# All combinations of difficulty and single/multiplayer type
TJA_COURSE_NAMES = []
for difficulty in COURSE_NAMES:
for player in ['', 'P1', 'P2']:
TJA_COURSE_NAMES.append(difficulty+player)
# Map course difficulty to filename IDs (e.g. Oni -> `song_m.bin`)
COURSE_IDS = {
'Easy': 'e',

View File

@ -5,8 +5,8 @@ from copy import deepcopy
from tja2fumen.types import (TJASong, TJAMeasure, TJAData, FumenCourse,
FumenMeasure, FumenBranch, FumenNote, FumenHeader)
from tja2fumen.constants import (NORMALIZE_COURSE, TJA_NOTE_TYPES,
BRANCH_NAMES, FUMEN_NOTE_TYPES)
from tja2fumen.constants import (NORMALIZE_COURSE, COURSE_NAMES, BRANCH_NAMES,
TJA_NOTE_TYPES, FUMEN_NOTE_TYPES)
###############################################################################
# TJA-parsing functions #
@ -128,14 +128,14 @@ def split_tja_lines_into_courses(lines):
else:
parsed_tja.courses[current_course].data.append(line)
# If a course has no song data, then this is likely because the course has
# "STYLE: Double" but no "STYLE: Single". To fix this, we copy over the P1
# chart from "STYLE: Double" to fill the "STYLE: Single" role.
for course_name, course in parsed_tja.courses.items():
if not course.data:
if course_name+"P1" in parsed_tja.courses.keys():
parsed_tja.courses[course_name] = \
deepcopy(parsed_tja.courses[course_name+"P1"])
# If a .tja has "STYLE: Double" but no "STYLE: Single", then it will be
# missing data for the "single player" chart. To fix this, we copy over
# the P1 chart from "STYLE: Double" to fill the "STYLE: Single" role.
for course_name in COURSE_NAMES:
course_single_player = parsed_tja.courses[course_name]
course_player_one = parsed_tja.courses[course_name+"P1"]
if course_player_one.data and not course_single_player.data:
parsed_tja.courses[course_name] = deepcopy(course_player_one)
# Remove any charts (e.g. P1/P2) not present in the TJA file (empty data)
for course_name in [k for k, v in parsed_tja.courses.items()