diff --git a/exts/imports/misc_classes.py b/exts/imports/misc_classes.py new file mode 100644 index 0000000..67e04b1 --- /dev/null +++ b/exts/imports/misc_classes.py @@ -0,0 +1,99 @@ +import configparser +from . import guid + + +class Color: + def __init__(self, r=0, g=0, b=0, a=0): + self.r = self.float_to_hex(r) if isinstance(r, float) else r + self.g = self.float_to_hex(g) if isinstance(g, float) else g + self.b = self.float_to_hex(b) if isinstance(b, float) else b + self.a = self.float_to_hex(a) if isinstance(a, float) else a + + @staticmethod + def float_to_hex(a: float): + return ((a - 0.0)/(1.0 - 0.0)) * (255 - 0) + 0.0 + + +class Dino: + def __init__(self, dino_data: configparser.ConfigParser): + self.dino_data_orig = dino_data + self.dino_data = self._get_dino_data(dino_data['Dino Data']) + self.colors = self._get_colors(dino_data['Colorization']) + self.stats = self._get_colors(dino_data['Max Character Status Values']) + self.ancestry = self._get_ancestry(dino_data['Dino Ancestry'], dino_data) + self.guid = self.get_guid() + + def get_guid(self): + return guid.Guid(self.dino_data['DinoID1'], self.dino_data['DinoID2']) + + @staticmethod + def _get_colors(colorization): + colors = list() + for color, values in colorization.items(): + value = values.strip('()').split(',') + c = dict() + for v in value: + v = v.split('=') + c[v[0]] = float(v[1]) + colors.append(Color(**c)) + return colors + + @staticmethod + def _get_stats(stat_values): + stats = [stat for stat in stat_values.values()] + stats_dict = dict() + stats_dict['Health'] = float(stats[0]) + stats_dict['Stamina'] = float(stats[1]) + stats_dict['Torpidity'] = float(stats[2]) + stats_dict['Oxygen'] = float(stats[3]) + stats_dict['food'] = float(stats[4]) + stats_dict['Water'] = float(stats[5]) + stats_dict['Temperature'] = float(stats[6]) + stats_dict['Weight'] = float(stats[7]) + stats_dict['Melee Damage'] = float(stats[8]) + stats_dict['Movement Speed'] = float(stats[9]) + stats_dict['Fortitude'] = float(stats[10]) + stats_dict['Crafting Skill'] = float(stats[11]) + return stats_dict + + @staticmethod + def _get_dino_data(dino_data): + data = [d for d in dino_data.values()] + data_dict = dict() + data_dict['DinoID1'] = int(data[0]) + data_dict['DinoID2'] = int(data[1]) + data_dict['DinoClass'] = data[2] + data_dict['DinoNameTag'] = data[3] + if data[4] == 'True': + data_dict['bIsFemale'] = True + else: + data_dict['bIsFemale'] = False + if data[5] == 'True': + data_dict['bNeutered'] = True + else: + data_dict['bNeutered'] = False + data_dict['TamerString'] = data[6] + data_dict['TamedName'] = data[7] + data_dict['ImprinterName'] = data[8] + data_dict['RandomMutationsMale'] = int(data[9]) + data_dict['RandomMutationsFemale'] = int(data[10]) + data_dict['BabyAge'] = float(data[11]) + data_dict['CharacterLevel'] = int(data[12]) + data_dict['DinoImprintingQuality'] = float(data[13]) + return data_dict + + @staticmethod + def _get_ancestry(ancestry_data, data): + ancestry = [a for a in ancestry_data.values()] + ancestry_dict = dict() + ancestry_dict['DinoAncestorsCount'] = int(ancestry[0]) + ancestry_dict['DinoAncestorsMale'] = int(ancestry[1]) + + if ancestry_dict['DinoAncestorsCount'] != 0: + if 'DinoAncestors' in data.sections(): + dino_anc = [a for a in data['DinoAncestors'].values()] + ancestors = list() + for dino in dino_anc: + dino = dino.split(';') + for field in dino: + pass diff --git a/exts/imports/process_files.py b/exts/imports/process_files.py index c45a907..36d2b85 100644 --- a/exts/imports/process_files.py +++ b/exts/imports/process_files.py @@ -115,7 +115,7 @@ def process_file(in_file, file_type) -> ConfigParser: config = rename_section(config, section, section.title()) else: config.remove_section(section) - print(config.sections(), config['Dino Ancestry']['DinoAncestorsCount']) + print(f"{config.sections()} {config['Dino Ancestry']['DinoAncestorsCount']}") return config