Feature: Füge Bauteile in die Zonen hinzu

This commit is contained in:
2025-08-14 19:07:06 +02:00
parent ff0dc0d556
commit 83e9651e13
2 changed files with 70 additions and 10 deletions
+50 -5
View File
@@ -1,4 +1,6 @@
from MechFabrik.bauteile import Mech, InnerStructure, Gyroskope, Area, AreaNames, Cockpit, Reaktor from MechFabrik.bauteile import Activator, Joint, Mech, InnerStructure, Gyroskope, Area, AreaNames, Cockpit, Reaktor, \
Sensors, \
Sustainment
from MechFabrik.reader import ComponentReader from MechFabrik.reader import ComponentReader
@@ -12,18 +14,26 @@ class MechFabrik(object):
def __build_inner_structure(self, tonnage: float, movement_rate: int) -> None: def __build_inner_structure(self, tonnage: float, movement_rate: int) -> None:
reactor_value = int(movement_rate * tonnage) reactor_value = int(movement_rate * tonnage)
gyroscope = Gyroskope(float(round(reactor_value/100))) gyroscope = Gyroskope(float(round(reactor_value / 100)))
self._inner_structure = InnerStructure(self.__components.inner_structure_from(tonnage), gyroscope) self._inner_structure = InnerStructure(self.__components.inner_structure_from(tonnage), gyroscope)
self.__build_head_area() self.__build_head_area()
self.__build_middle_torso_area() self.__build_middle_torso_area(gyroscope)
def __build_head_area(self) -> None: def __build_head_area(self) -> None:
area = Area() area = Area()
cockpit = Cockpit() cockpit = Cockpit()
area.cockpit = cockpit area.cockpit = cockpit
area.items = {
(1, 1): Sustainment(),
(1, 2): Sensors(),
(1, 3): area.cockpit,
(1, 4): None,
(1, 5): Sensors(),
(1, 6): Sustainment(),
}
self._inner_structure.add_area(AreaNames.HEAD, area) self._inner_structure.add_area(AreaNames.HEAD, area)
def __build_middle_torso_area(self) -> Area: def __build_middle_torso_area(self, gyroscope: Gyroskope) -> Area:
area_middle = Area() area_middle = Area()
area_left = Area() area_left = Area()
area_right = Area() area_right = Area()
@@ -32,6 +42,20 @@ class MechFabrik(object):
reactor = Reaktor(self.__reactor_value, self.__components.reactor_tonnage_from(self.__reactor_value)) reactor = Reaktor(self.__reactor_value, self.__components.reactor_tonnage_from(self.__reactor_value))
area_middle.reactor = reactor area_middle.reactor = reactor
area_middle.children = [area_right, area_left] area_middle.children = [area_right, area_left]
area_middle.items = {
(1, 1): reactor,
(1, 2): reactor,
(1, 3): reactor,
(1, 4): gyroscope,
(1, 5): gyroscope,
(1, 6): gyroscope,
(2, 1): gyroscope,
(2, 2): reactor,
(2, 3): reactor,
(2, 4): reactor,
(2, 5): None,
(2, 6): None,
}
self.__build_arm(area_right, AreaNames.RIGHT_ARM) self.__build_arm(area_right, AreaNames.RIGHT_ARM)
self.__build_leg(area_right, AreaNames.RIGHT_LEG) self.__build_leg(area_right, AreaNames.RIGHT_LEG)
self.__build_arm(area_left, AreaNames.LEFT_ARM) self.__build_arm(area_left, AreaNames.LEFT_ARM)
@@ -44,15 +68,36 @@ class MechFabrik(object):
def __build_arm(self, parent: Area, index: AreaNames): def __build_arm(self, parent: Area, index: AreaNames):
arm = Area() arm = Area()
arm.parent = parent arm.parent = parent
arm.items = {
(1, 1): Joint(),
(1, 2): Activator(),
(1, 3): Activator(),
(1, 4): Activator(),
(1, 5): None,
(1, 6): None,
(2, 1): None,
(2, 2): None,
(2, 3): None,
(2, 4): None,
(2, 5): None,
(2, 6): None,
}
parent.children.append(arm) parent.children.append(arm)
self._inner_structure.add_area(index, arm) self._inner_structure.add_area(index, arm)
def __build_leg(self, parent: Area, index: AreaNames): def __build_leg(self, parent: Area, index: AreaNames):
leg = Area() leg = Area()
leg.parent = parent leg.parent = parent
leg.items = {
(1, 1): Joint(),
(1, 2): Activator(),
(1, 3): Activator(),
(1, 4): Activator(),
(1, 5): None,
(1, 6): None,
}
parent.children.append(leg) parent.children.append(leg)
self._inner_structure.add_area(index, leg) self._inner_structure.add_area(index, leg)
def auslieferung(self) -> Mech: def auslieferung(self) -> Mech:
return self._mech return self._mech
+20 -5
View File
@@ -43,13 +43,13 @@ class TestMechBau(unittest.TestCase):
right_arm = self._test_areas(mech=mech, parent=right_torso, index=AreaNames.RIGHT_ARM, children=0) right_arm = self._test_areas(mech=mech, parent=right_torso, index=AreaNames.RIGHT_ARM, children=0)
right_leg = self._test_areas(mech=mech, parent=right_torso, index=AreaNames.RIGHT_LEG, children=0) right_leg = self._test_areas(mech=mech, parent=right_torso, index=AreaNames.RIGHT_LEG, children=0)
self.assertCountEqual([right_arm, right_leg], right_torso.children) self.assertCountEqual([right_arm, right_leg], right_torso.children)
self._test_for_arm_left_items(right_arm) self._test_for_arm_items(right_arm)
self._test_for_arm_left_items(right_leg) self._test_for_leg_items(right_leg)
left_arm = self._test_areas(mech=mech, parent=left_torso, index=AreaNames.LEFT_ARM, children=0) left_arm = self._test_areas(mech=mech, parent=left_torso, index=AreaNames.LEFT_ARM, children=0)
left_leg = self._test_areas(mech=mech, parent=left_torso, index=AreaNames.LEFT_LEG, children=0) left_leg = self._test_areas(mech=mech, parent=left_torso, index=AreaNames.LEFT_LEG, children=0)
self.assertCountEqual([left_arm, left_leg], left_torso.children) self.assertCountEqual([left_arm, left_leg], left_torso.children)
self._test_for_arm_left_items(left_arm) self._test_for_arm_items(left_arm)
self._test_for_arm_left_items(left_leg) self._test_for_leg_items(left_leg)
def _test_middle_torso(self, mech) -> Area: def _test_middle_torso(self, mech) -> Area:
middle_torso = mech.inner_structure.areas.get(AreaNames.MIDDLE_TORSO) middle_torso = mech.inner_structure.areas.get(AreaNames.MIDDLE_TORSO)
@@ -74,6 +74,7 @@ class TestMechBau(unittest.TestCase):
return area return area
def _test_for_head_items(self, area: Area): def _test_for_head_items(self, area: Area):
self.assertEqual(6, len(area.items))
self.__test_for_items(area, [ self.__test_for_items(area, [
((1, 1), ItemTypes.SUSTAINMENT), ((1, 1), ItemTypes.SUSTAINMENT),
((1, 2), ItemTypes.SENSORS), ((1, 2), ItemTypes.SENSORS),
@@ -85,6 +86,7 @@ class TestMechBau(unittest.TestCase):
self.assertIsNone(area.items[(1, 4)]) self.assertIsNone(area.items[(1, 4)])
def _test_for_middle_torso_items(self, area: Area): def _test_for_middle_torso_items(self, area: Area):
self.assertEqual(12, len(area.items))
self.__test_for_items(area, [ self.__test_for_items(area, [
((1, 1), ItemTypes.REAKTOR), ((1, 1), ItemTypes.REAKTOR),
((1, 2), ItemTypes.REAKTOR), ((1, 2), ItemTypes.REAKTOR),
@@ -103,10 +105,23 @@ class TestMechBau(unittest.TestCase):
self.assertIsNone(area.items[(2, 6)]) self.assertIsNone(area.items[(2, 6)])
def _test_for_side_torso_items(self, area: Area): def _test_for_side_torso_items(self, area: Area):
self.assertEqual(12, len(area.items))
for (group, key) in ((group, key + 1) for group in [1,2] for key in range(6)): for (group, key) in ((group, key + 1) for group in [1,2] for key in range(6)):
self.assertIsNone(area.items[key]) self.assertIsNone(area.items[key])
def _test_for_arm_left_items(self, area: Area): def _test_for_arm_items(self, area: Area):
self.assertEqual(12, len(area.items))
self._test_for_arm_leg_items(area)
for key in (key + 1 for key in range(6)):
self.assertIsNone(area.items[(2, key)])
pass
def _test_for_leg_items(self, area: Area):
self.assertEqual(6, len(area.items))
self._test_for_arm_leg_items(area)
pass
def _test_for_arm_leg_items(self, area: Area):
self.__test_for_items(area, [ self.__test_for_items(area, [
((1, 1), ItemTypes.JOINT), ((1, 1), ItemTypes.JOINT),
((1, 2), ItemTypes.ACTIVATOR), ((1, 2), ItemTypes.ACTIVATOR),