import enum from mech_factory.components.items import Gyroskope, Item, ItemStatus class ZoneNames(enum.Enum): HEAD = 'Kopf' MIDDLE_TORSO_FRONT = 'Torso Mitte Vorn' MIDDLE_TORSO_REAR = 'Torso Mitte Rücken' RIGHT_TORSO_FRONT = 'Rechter Torso Vorn' RIGHT_TORSO_REAR = 'Rechter Torso Rücken' LEFT_TORSO_FRONT = 'Linker Torso Vorn' LEFT_TORSO_REAR = 'Linker Torso Rücken' RIGHT_LEG = 'Rechtes Bein' RIGHT_ARM = 'Rechter Arm' LEFT_LEG = 'Linkes Bein' LEFT_ARM = 'Linker Arm' class AreaNames(enum.Enum): HEAD = 'Kopf' MIDDLE_TORSO = 'Torso Mitte' RIGHT_TORSO = 'Rechter Torso' LEFT_TORSO = 'Linker Torso' RIGHT_LEG = 'Rechtes Bein' RIGHT_ARM = 'Rechter Arm' LEFT_LEG = 'Linkes Bein' LEFT_ARM = 'Linker Arm' class AreaStatus(enum.Flag): FINE = 0 DAMAGED = 1 DESTROYED = 2 class Zone: def __init__(self): self.__dict__['_armor'] = 0 self.__dict__['_parent'] = None self.__dict__['_state'] = AreaStatus.FINE def __setattr__(self, key, value): self.__dict__['_' + key] = value def __getattr__(self, item): return self.__dict__['_' + item] class Area(Zone): def __init__(self): super().__init__() self.__dict__['_outer_amor'] = list() self.__dict__['_children'] = list() self.__dict__['_items'] = dict() class OuterAmor(Zone): def __init__(self, area: Area): super().__init__() self.__dict__['_parent'] = area self.__dict__['_area'] = area class InnerStructure: def __init__(self, tonnage: float, gyroskope: Gyroskope): self._gyroskope = gyroskope self._tonnage = tonnage self._areas = dict() self._zones = dict() @property def tonnage(self) -> float: return self._tonnage @property def gyroskope(self) -> Gyroskope: return self._gyroskope @property def areas(self) -> dict[AreaNames, Area]: return self._areas def add_area(self, index: AreaNames, area: Area): self._areas[index] = area @property def zones(self) -> dict[ZoneNames, OuterAmor]: return self._zones def add_zone(self, index: ZoneNames, zone: OuterAmor): self._zones[index] = zone