Stop hardcoding song['length']
Instead, rely on len(song['measures') as the single source of truth for measures
This commit is contained in:
parent
6286a3a78d
commit
0bef98c10d
@ -221,7 +221,6 @@ def convertTJAToFumen(tja):
|
||||
tjaConverted['headerMetadata'] = b"".join(i.to_bytes(1, 'little') for i in headerMetadata)
|
||||
tjaConverted['headerPadding'] = simpleHeaders[0] # Use a basic, known set of header bytes
|
||||
tjaConverted['order'] = '<'
|
||||
tjaConverted['length'] = len(tjaConverted['measures'])
|
||||
tjaConverted['unknownMetadata'] = 0
|
||||
tjaConverted['branches'] = False
|
||||
tjaConverted['scoreInit'] = tja['scoreInit']
|
||||
|
@ -317,7 +317,6 @@ def readFumen(fumenFile, byteOrder=None):
|
||||
song['headerPadding'] = fumenHeader[:432]
|
||||
song['headerMetadata'] = fumenHeader[-80:]
|
||||
song['order'] = order
|
||||
song["length"] = totalMeasures
|
||||
|
||||
# I am unsure what byte this represents
|
||||
unknownMetadata = readStruct(file, order, format_string="I", seek=0x204)[0]
|
||||
|
@ -13,7 +13,7 @@ def writeFumen(file, song):
|
||||
# Preallocate space in the file
|
||||
len_metadata = 8
|
||||
len_measures = 0
|
||||
for measureNumber in range(song['length']):
|
||||
for measureNumber in range(len(song['measures'])):
|
||||
len_measures += 40
|
||||
measure = song['measures'][measureNumber]
|
||||
for branchNumber in range(len(branchNames)):
|
||||
@ -28,12 +28,12 @@ def writeFumen(file, song):
|
||||
|
||||
# Write metadata
|
||||
writeStruct(file, order, format_string="B", value_list=[putBool(song['branches'])], seek=0x1b0)
|
||||
writeStruct(file, order, format_string="I", value_list=[song['length']], seek=0x200)
|
||||
writeStruct(file, order, format_string="I", value_list=[len(song['measures'])], seek=0x200)
|
||||
writeStruct(file, order, format_string="I", value_list=[song['unknownMetadata']], seek=0x204)
|
||||
|
||||
# Write measure data
|
||||
file.seek(0x208)
|
||||
for measureNumber in range(song['length']):
|
||||
for measureNumber in range(len(song['measures'])):
|
||||
measure = song['measures'][measureNumber]
|
||||
measureStruct = [measure['bpm'], measure['fumenOffset'], int(measure['gogo']), int(measure['barline'])]
|
||||
measureStruct.extend([measure['padding1']] + measure['branchInfo'] + [measure['padding2']])
|
||||
|
@ -66,7 +66,6 @@ def test_converted_tja_vs_cached_fumen(id_song, tmp_path, entry_point):
|
||||
assert_song_property(co_song, ca_song, 'branches')
|
||||
assert_song_property(co_song, ca_song, 'scoreInit')
|
||||
assert_song_property(co_song, ca_song, 'scoreDiff')
|
||||
assert_song_property(co_song, ca_song, 'length')
|
||||
assert_song_property(co_song, ca_song, 'measures', func=len)
|
||||
# 3. Check measure data
|
||||
for i_measure, (co_measure, ca_measure) in enumerate(zip(co_song['measures'], ca_song['measures'])):
|
||||
|
Loading…
x
Reference in New Issue
Block a user