TraSCA/skill.py

81 lines
2.0 KiB
Python

SKILL_SCORE_DICT = {
".12--1<": 2.0,
".12--1o": 1.7,
".41/": 0.6,
".8-1<": 1.3,
".8-1o": 1.1,
".8-3<": 1.5,
".8-3o": 1.3,
".821<": 1.5,
"4.-/": 0.6,
"8.--/": 1.0,
"8.--<": 1.2,
"8.--o": 1.0,
"8.11<": 1.4,
"8.11o": 1.2,
"8.22/": 1.6,
"8.22o": 1.4,
"8.31<": 1.6,
}
FRONTWARD = 1
BACKWARD = 0
class Skill:
"""Class skill
Each object `skill` is composed by the following fields :
- numeric_code
- direction
- rotation_quantity
- position
- twist_in_quantity
- twist_out_quantity
"""
def __init__(self, skill_string):
skill_string = skill_string.strip().replace("\s", "")
self.numeric_code = skill_string
if skill_string.startswith("."):
self.direction = FRONTWARD
elif skill_string.find("."):
self.direction = BACKWARD
else:
self.rotation_quantity = None
position = skill_string[-1:]
if position == "o" or position == "<" or position == "/":
self.position = position
else:
self.position = None
rotation_quantity = len(skill_string)
if rotation_quantity == 4:
self.rotation_quantity = 1
start = 2
elif rotation_quantity == 5:
self.rotation_quantity = 2
start = 2
elif rotation_quantity == 7:
self.rotation_quantity = 3
start = 3
elif rotation_quantity == 8:
self.rotation_quantity = 4
start = 3
else:
self.rotation_quantity = None
self.twist_in_quantity = None
self.twist_out_quantity = None
print(f"Unknow skill: {skill_string}")
return
twisting = skill_string[start:-1]
self.twist_in_quantity = 0 if twisting[0] == "-" else int(twisting[0])
self.twist_out_quantity = 0 if twisting[-1:] == "-" else int(twisting[-1:])
def __str__(self):
return self.numeric_code