Files
BattleTech/MechFabrik/__init__.py
T

59 lines
2.3 KiB
Python
Executable File

from MechFabrik.bauteile import Mech, InnerStructure, Gyroskope, Area, AreaNames, Cockpit, Reaktor
from MechFabrik.reader import ComponentReader
class MechFabrik(object):
def __init__(self, name: str, tonnage: float, movement_rate: int):
self.__components = ComponentReader()
self.__reactor_value = int(movement_rate * tonnage)
self.__build_inner_structure(tonnage, movement_rate)
self._mech = Mech(name, tonnage, movement_rate, self._inner_structure)
def __build_inner_structure(self, tonnage: float, movement_rate: int) -> None:
reactor_value = int(movement_rate * tonnage)
gyroscope = Gyroskope(float(round(reactor_value/100)))
self._inner_structure = InnerStructure(self.__components.inner_structure_from(tonnage), gyroscope)
self.__build_head_area()
self.__build_middle_torso_area()
def __build_head_area(self) -> None:
area = Area()
cockpit = Cockpit()
area.cockpit = cockpit
self._inner_structure.add_area(AreaNames.HEAD, area)
def __build_middle_torso_area(self) -> Area:
area_middle = Area()
area_left = Area()
area_right = Area()
area_left.parent = area_middle
area_right.parent = area_middle
reactor = Reaktor(self.__reactor_value, self.__components.reactor_tonnage_from(self.__reactor_value))
area_middle.reactor = reactor
area_middle.children = [area_right, area_left]
self.__build_arm(area_right, AreaNames.RIGHT_ARM)
self.__build_leg(area_right, AreaNames.RIGHT_LEG)
self.__build_arm(area_left, AreaNames.LEFT_ARM)
self.__build_leg(area_left, AreaNames.LEFT_LEG)
self._inner_structure.add_area(AreaNames.LEFT_TORSO, area_left)
self._inner_structure.add_area(AreaNames.RIGHT_TORSO, area_right)
self._inner_structure.add_area(AreaNames.MIDDLE_TORSO, area_middle)
return area_middle
def __build_arm(self, parent: Area, index: AreaNames):
arm = Area()
arm.parent = parent
parent.children.append(arm)
self._inner_structure.add_area(index, arm)
def __build_leg(self, parent: Area, index: AreaNames):
leg = Area()
leg.parent = parent
parent.children.append(leg)
self._inner_structure.add_area(index, leg)
def auslieferung(self) -> Mech:
return self._mech