From d8df5db7f443233b51e26dffe555358e0b77f6b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torsten=20L=C3=BCcke?= Date: Thu, 9 Jul 2026 17:11:09 +0200 Subject: [PATCH] =?UTF-8?q?tests:=20verarbeite=20kritische=20Treffer=20auc?= =?UTF-8?q?h=20bei=20gro=C3=9Fen=20Bauteilen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- MechFabrik/__init__.py | 4 +-- MechFabrik/bauteile/__init__.py | 9 ------- MechFabrik/bauteile/items.py | 26 ++++++++++++++----- tests/test_mech_bau.py | 4 +-- tests/test_mech_process.py | 46 ++++++++++++++++++++++++--------- 5 files changed, 57 insertions(+), 32 deletions(-) diff --git a/MechFabrik/__init__.py b/MechFabrik/__init__.py index 6d43725..97c0717 100755 --- a/MechFabrik/__init__.py +++ b/MechFabrik/__init__.py @@ -1,6 +1,6 @@ from Hangar.mech import Mech -from MechFabrik.bauteile import InnerStructure, Gyroskope, Area, AreaNames, OuterAmor, ZoneNames -from MechFabrik.bauteile.items import Activator, Cockpit, Joint, Reaktor, Sensors, Sustainment +from MechFabrik.bauteile import InnerStructure, Area, AreaNames, OuterAmor, ZoneNames +from MechFabrik.bauteile.items import Activator, Cockpit, Gyroskope, Joint, Reaktor, Sensors, Sustainment from MechFabrik.reader import ComponentReader diff --git a/MechFabrik/bauteile/__init__.py b/MechFabrik/bauteile/__init__.py index aaf18e0..e2ac656 100755 --- a/MechFabrik/bauteile/__init__.py +++ b/MechFabrik/bauteile/__init__.py @@ -98,15 +98,6 @@ class StrikeEvent: return self -class Gyroskope: - def __init__(self, tonnage: float): - self._tonnage = tonnage - - @property - def tonnage(self) -> float: - return self._tonnage - - class InnerStructure: def __init__(self, tonnage: float, gyroskope: Gyroskope): diff --git a/MechFabrik/bauteile/items.py b/MechFabrik/bauteile/items.py index 92e1139..f590522 100644 --- a/MechFabrik/bauteile/items.py +++ b/MechFabrik/bauteile/items.py @@ -18,7 +18,7 @@ class ItemStatus(enum.Flag): class Item(object): - def __init__(self, item_type: ItemTypes): + def __init__(self, item_type: ItemTypes, **another: dict): self._type = item_type self._state = ItemStatus.FINE @@ -37,8 +37,8 @@ class Item(object): class BigItem(Item): - def __init__(self, item_type: ItemTypes, tonnage: float): - super().__init__(item_type) + def __init__(self, item_type: ItemTypes, tonnage: float, **another: dict): + super().__init__(item_type, **another) self._tonnage = tonnage @property @@ -46,15 +46,27 @@ class BigItem(Item): return self._tonnage +class DurableItem(Item): + + def __init__(self, item_type: ItemTypes, max_strike: int, **another): + super().__init__(item_type) + self._max_strike = max_strike + + +class Gyroskope(BigItem, DurableItem): + def __init__(self, tonnage: float): + super().__init__(item_type = ItemTypes.GYROSKOPE, tonnage=tonnage, max_strike=2) + + class Cockpit(BigItem): def __init__(self): super().__init__(ItemTypes.COCKPIT, 3.0) -class Reaktor(BigItem): +class Reaktor(BigItem, DurableItem): def __init__(self, value: int, tonnage: float): - super().__init__(ItemTypes.REAKTOR, tonnage) + super().__init__(item_type = ItemTypes.REAKTOR, tonnage=tonnage, max_strike=3) self._value = value @property @@ -72,9 +84,9 @@ class Joint(Item): super().__init__(ItemTypes.JOINT) -class Sensors(Item): +class Sensors(DurableItem): def __init__(self): - super().__init__(ItemTypes.SENSORS) + super().__init__(ItemTypes.SENSORS, 2) class Sustainment(Item): diff --git a/tests/test_mech_bau.py b/tests/test_mech_bau.py index a202bda..6faff79 100755 --- a/tests/test_mech_bau.py +++ b/tests/test_mech_bau.py @@ -2,8 +2,8 @@ import unittest from Hangar.mech import Mech from MechFabrik import MechFabrik -from MechFabrik.bauteile import Gyroskope, InnerStructure, AreaNames, Area, OuterAmor, Zone, ZoneNames -from MechFabrik.bauteile.items import Cockpit, Item, ItemTypes, Reaktor +from MechFabrik.bauteile import InnerStructure, AreaNames, Area, OuterAmor, Zone, ZoneNames +from MechFabrik.bauteile.items import Cockpit, Gyroskope, Item, ItemTypes, Reaktor from test_mech import AbstractTestMechAmor, INNER_ARMOR, OUTER_ARMOR diff --git a/tests/test_mech_process.py b/tests/test_mech_process.py index 5e28d36..e6a360a 100755 --- a/tests/test_mech_process.py +++ b/tests/test_mech_process.py @@ -1,5 +1,4 @@ -from MechFabrik import Cockpit, Sensors, Sustainment -from MechFabrik.bauteile.items import ItemStatus +from MechFabrik.bauteile.items import BigItem, DurableItem, Item, ItemStatus, ItemTypes from test_mech import AbstractTestMechAmor, INNER_ARMOR, NEXT_OUTER_ZONE, OUTER_ARMOR from MechFabrik.bauteile import Area, AreaStatus, OuterAmor, StrikeEvent, CriticalStrikeEvent, ZoneNames @@ -99,32 +98,55 @@ class TestMechAmor(AbstractTestMechAmor): parent = Area() area = Area() area.parent = parent - cockpit = Cockpit() - area.cockpit = cockpit + big_item_01 = BigItem(ItemTypes.SUSTAINMENT, 5.0) + item_01 = Item(ItemTypes.SUSTAINMENT) + durable_item_01 = DurableItem(ItemTypes.SUSTAINMENT, 3) area.items = { - (1, 1): Sustainment(), - (1, 2): Sensors(), - (1, 3): cockpit, + (1, 1): big_item_01, + (1, 2): durable_item_01, + (1, 3): durable_item_01, (1, 4): None, - (1, 5): cockpit, - (1, 6): Sustainment(), + (1, 5): item_01, + (1, 6): None, } zone = OuterAmor(area) - event = CriticalStrikeEvent(zone, (1, 2)).process_event() + event = CriticalStrikeEvent(zone, (1, 1)).process_event() self.assertEqual(AreaStatus.DAMAGED, zone.state) self.assertEqual(AreaStatus.DAMAGED, area.state) self.assertIsInstance(event, CriticalStrikeEvent) self.assertFalse(event.is_empty()) self.assertEqual(area, event.area) - self.assertEqual(ItemStatus.DESTROYED, area.items[(1, 2)].state) + self.assertEqual(ItemStatus.DESTROYED, area.items[(1, 1)].state) + + event = CriticalStrikeEvent(zone, (1, 5)).process_event() + self.assertEqual(AreaStatus.DAMAGED, zone.state) + self.assertEqual(AreaStatus.DAMAGED, area.state) + self.assertIsInstance(event, CriticalStrikeEvent) + self.assertFalse(event.is_empty()) + self.assertEqual(area, event.area) + self.assertEqual(ItemStatus.DESTROYED, area.items[(1, 5)].state) + + event = CriticalStrikeEvent(zone, (1, 2)).process_event() + self.assertIsInstance(event, CriticalStrikeEvent) + self.assertFalse(event.is_empty()) + self.assertEqual(area, event.area) + self.assertEqual(ItemStatus.DAMAGED, area.items[(1, 2)].state) + self.assertEqual(ItemStatus.DAMAGED, area.items[(1, 3)].state) event = CriticalStrikeEvent(zone, (1, 3)).process_event() self.assertIsInstance(event, CriticalStrikeEvent) self.assertFalse(event.is_empty()) self.assertEqual(area, event.area) - self.assertEqual(ItemStatus.DESTROYED, area.items[(1, 3)].state) + self.assertEqual(ItemStatus.DAMAGED, area.items[(1, 2)].state) + self.assertEqual(ItemStatus.DAMAGED, area.items[(1, 3)].state) + + event = CriticalStrikeEvent(zone, (1, 2)).process_event() + self.assertIsInstance(event, CriticalStrikeEvent) + self.assertFalse(event.is_empty()) + self.assertEqual(area, event.area) + self.assertEqual(ItemStatus.DESTROYED, area.items[(1, 2)].state) self.assertEqual(ItemStatus.DESTROYED, area.items[(1, 5)].state) event = CriticalStrikeEvent(zone, (1, 4)).process_event()