Simplify how HP values are stored and parsed (#49)
- Merge 42 LUTs into 1 LUT - Greatly simplify HP methods Fixes #48.
This commit is contained in:
parent
3704d0a627
commit
1bf83d09dc
@ -73,7 +73,7 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
pyinstaller src\tja2fumen\__init__.py `
|
pyinstaller src\tja2fumen\__init__.py `
|
||||||
--name tja2fumen-${{ github.event.inputs.release_version }} `
|
--name tja2fumen-${{ github.event.inputs.release_version }} `
|
||||||
--add-data="src\tja2fumen\soulgauge_LUTs\*.csv;tja2fumen\soulgauge_LUTs" `
|
--add-data="src\tja2fumen\hp_values.csv;tja2fumen\" `
|
||||||
--onefile `
|
--onefile `
|
||||||
--exclude-module bz2 `
|
--exclude-module bz2 `
|
||||||
--exclude-module hashlib `
|
--exclude-module hashlib `
|
||||||
|
@ -1 +1 @@
|
|||||||
include src/tja2fumen/soulgauge_LUTs/*.csv
|
include src/tja2fumen/hp_values.csv
|
2501
src/tja2fumen/hp_values.csv
Normal file
2501
src/tja2fumen/hp_values.csv
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -208,66 +208,26 @@ class FumenHeader:
|
|||||||
return "<"
|
return "<"
|
||||||
|
|
||||||
def set_hp_bytes(self, n_notes, difficulty, stars):
|
def set_hp_bytes(self, n_notes, difficulty, stars):
|
||||||
|
difficulty = 'Oni' if difficulty in ['Ura', 'Edit'] else difficulty
|
||||||
self._get_hp_from_LUTs(n_notes, difficulty, stars)
|
self._get_hp_from_LUTs(n_notes, difficulty, stars)
|
||||||
if difficulty == 'Easy':
|
self.b440_b443_hp_clear = {'Easy': 6000, 'Normal': 7000, 'Hard': 7000, 'Oni': 8000}[difficulty]
|
||||||
self.b440_b443_hp_clear = 6000
|
|
||||||
elif difficulty in ['Normal', 'Hard']:
|
|
||||||
self.b440_b443_hp_clear = 7000
|
|
||||||
elif difficulty in ['Oni', 'Ura', 'Edit']:
|
|
||||||
self.b440_b443_hp_clear = 8000
|
|
||||||
|
|
||||||
def _get_hp_from_LUTs(self, n_notes, difficulty, stars):
|
def _get_hp_from_LUTs(self, n_notes, difficulty, stars):
|
||||||
if difficulty in ['Oni', 'Ura']:
|
if n_notes > 2500:
|
||||||
if 9 <= stars:
|
return
|
||||||
key = "Oni-9-10"
|
star_to_key = {
|
||||||
elif stars == 8:
|
'Oni': {1: '17', 2: '17', 3: '17', 4: '17', 5: '17', 6: '17', 7: '17', 8: '8', 9: '910', 10: '910'},
|
||||||
key = "Oni-8"
|
'Hard': {1: '12', 2: '12', 3: '3', 4: '4', 5: '58', 6: '58', 7: '58', 8: '58', 9: '58', 10: '58'},
|
||||||
elif stars <= 7:
|
'Normal': {1: '12', 2: '12', 3: '3', 4: '4', 5: '57', 6: '57', 7: '57', 8: '57', 9: '57', 10: '57'},
|
||||||
key = "Oni-1-7"
|
'Easy': {1: '1', 2: '23', 3: '23', 4: '45', 5: '45', 6: '45', 7: '45', 8: '45', 9: '45', 10: '45'},
|
||||||
elif difficulty == 'Hard':
|
}
|
||||||
if 5 <= stars:
|
key = f"{difficulty}-{star_to_key[difficulty][stars]}"
|
||||||
key = "Hard-5-8"
|
|
||||||
elif stars == 4:
|
|
||||||
key = "Hard-4"
|
|
||||||
elif stars == 3:
|
|
||||||
key = "Hard-3"
|
|
||||||
elif stars <= 2:
|
|
||||||
key = "Hard-1-2"
|
|
||||||
elif difficulty == 'Normal':
|
|
||||||
if 5 <= stars:
|
|
||||||
key = "Normal-5-7"
|
|
||||||
elif stars == 4:
|
|
||||||
key = "Normal-4"
|
|
||||||
elif stars == 3:
|
|
||||||
key = "Normal-3"
|
|
||||||
elif stars <= 2:
|
|
||||||
key = "Normal-1-2"
|
|
||||||
elif difficulty == 'Easy':
|
|
||||||
if 4 <= stars:
|
|
||||||
key = "Easy-4-5"
|
|
||||||
elif 2 <= stars <= 3:
|
|
||||||
key = "Easy-2-3"
|
|
||||||
elif stars <= 1:
|
|
||||||
key = "Easy-1"
|
|
||||||
pkg_dir = os.path.dirname(os.path.realpath(__file__))
|
pkg_dir = os.path.dirname(os.path.realpath(__file__))
|
||||||
with open(os.path.join(pkg_dir, "soulgauge_LUTs", f"byte1213_{key}.csv"), newline='') as csvfile:
|
with open(os.path.join(pkg_dir, "hp_values.csv"), newline='') as csvfile:
|
||||||
lut_reader = csv.reader(csvfile, delimiter=',')
|
rows = [row for row in csv.reader(csvfile, delimiter=',')]
|
||||||
for row in lut_reader:
|
self.b444_b447_hp_gain_good = int(rows[n_notes][rows[0].index(f"good_{key}")])
|
||||||
if int(row[0]) == n_notes:
|
self.b448_b451_hp_gain_ok = int(rows[n_notes][rows[0].index(f"ok_{key}")])
|
||||||
self.b444_b447_hp_gain_good = int(row[1])
|
self.b452_b455_hp_loss_bad = int(rows[n_notes][rows[0].index(f"bad_{key}")])
|
||||||
break
|
|
||||||
with open(os.path.join(pkg_dir, "soulgauge_LUTs", f"byte1617_{key}.csv"), newline='') as csvfile:
|
|
||||||
lut_reader = csv.reader(csvfile, delimiter=',')
|
|
||||||
for row in lut_reader:
|
|
||||||
if int(row[0]) == n_notes:
|
|
||||||
self.b448_b451_hp_gain_ok = int(row[1])
|
|
||||||
break
|
|
||||||
with open(os.path.join(pkg_dir, "soulgauge_LUTs", f"byte2021_{key}.csv"), newline='') as csvfile:
|
|
||||||
lut_reader = csv.reader(csvfile, delimiter=',')
|
|
||||||
for row in lut_reader:
|
|
||||||
if int(row[0]) == n_notes:
|
|
||||||
self.b452_b455_hp_loss_bad = int(row[1]) - 765
|
|
||||||
break
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def raw_bytes(self):
|
def raw_bytes(self):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user