refactor: sammele die Events in eine eigene Datei

This commit is contained in:
2026-07-10 00:13:54 +02:00
parent 22fbdaa82f
commit d4002624f4
5 changed files with 62 additions and 59 deletions
+60
View File
@@ -0,0 +1,60 @@
from mech_factory.components import Area, AreaStatus, ItemStatus, OuterAmor, Zone
class StrikeEvent:
def __init__(self, zone: Zone, hits: int):
self._zone = zone
self._hits = hits
@property
def zone(self) -> Zone:
return self._zone
@property
def hits(self) -> int:
return self._hits
@hits.setter
def hits(self, hits: int):
self._hits = hits
def process_event(self) -> StrikeEvent:
while self.hits > 0:
if self.hits >= self.zone.armor:
self.hits -= self.zone.armor
self.zone.armor = 0
self.zone.state = AreaStatus.DESTROYED
if self.hits > 0:
self._zone = self.zone.parent
else:
self.zone.armor -= self.hits
self.zone.state = AreaStatus.DAMAGED
self.hits = 0
break
return self
class CriticalStrikeEvent:
def __init__(self, zone: OuterAmor, index: tuple[int, int]):
self.__dict__['_zone'] = zone
self.__dict__['_area'] = zone.area
self.__dict__['_index'] = index
self.__dict__['_item_is_empty'] = None
@property
def area(self) -> Area:
return self.__dict__['_area']
def process_event(self) -> CriticalStrikeEvent:
self.__dict__['_zone'].state = AreaStatus.DAMAGED
self.__dict__['_area'].state = AreaStatus.DAMAGED
item = self.__dict__['_area'].items[self.__dict__['_index']]
if item is None or item.state == ItemStatus.DESTROYED:
self.__dict__['_item_is_empty'] = True
else:
self.__dict__['_item_is_empty'] = False
item.process_strike()
return self
def is_empty(self):
return self.__dict__['_item_is_empty']
+1
View File
@@ -1,4 +1,5 @@
from MechFabrik.bauteile import CriticalStrikeEvent, InnerStructure, Item, StrikeEvent, ZoneNames
from events import CriticalStrikeEvent, StrikeEvent
class Mech(object):
@@ -65,39 +65,6 @@ class OuterAmor(Zone):
self.__dict__['_area'] = area
class StrikeEvent:
def __init__(self, zone: Zone, hits: int):
self._zone = zone
self._hits = hits
@property
def zone(self) -> Zone:
return self._zone
@property
def hits(self) -> int:
return self._hits
@hits.setter
def hits(self, hits: int):
self._hits = hits
def process_event(self) -> StrikeEvent:
while self.hits > 0:
if self.hits >= self.zone.armor:
self.hits -= self.zone.armor
self.zone.armor = 0
self.zone.state = AreaStatus.DESTROYED
if self.hits > 0:
self._zone = self.zone.parent
else:
self.zone.armor -= self.hits
self.zone.state = AreaStatus.DAMAGED
self.hits = 0
break
return self
class InnerStructure:
def __init__(self, tonnage: float, gyroskope: Gyroskope):
@@ -127,29 +94,3 @@ class InnerStructure:
def add_zone(self, index: ZoneNames, zone: OuterAmor):
self._zones[index] = zone
class CriticalStrikeEvent:
def __init__(self, zone: OuterAmor, index: tuple[int,int]):
self.__dict__['_zone'] = zone
self.__dict__['_area'] = zone.area
self.__dict__['_index'] = index
self.__dict__['_item_is_empty'] = None
@property
def area(self) -> Area:
return self.__dict__['_area']
def process_event(self) -> CriticalStrikeEvent:
self.__dict__['_zone'].state = AreaStatus.DAMAGED
self.__dict__['_area'].state = AreaStatus.DAMAGED
item = self.__dict__['_area'].items[self.__dict__['_index']]
if item is None or item.state == ItemStatus.DESTROYED:
self.__dict__['_item_is_empty'] = True
else:
self.__dict__['_item_is_empty'] = False
item.process_strike()
return self
def is_empty(self):
return self.__dict__['_item_is_empty']
+1
View File
@@ -1,4 +1,5 @@
from MechFabrik.bauteile.items import BigItem, DurableItem, Item, ItemStatus, ItemTypes
from events import CriticalStrikeEvent, StrikeEvent
from test_mech import AbstractTestMechAmor, INNER_ARMOR, NEXT_OUTER_ZONE, OUTER_ARMOR
from MechFabrik.bauteile import Area, AreaStatus, OuterAmor, StrikeEvent, CriticalStrikeEvent, ZoneNames