100 lines
3.7 KiB
Python
100 lines
3.7 KiB
Python
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
|