refactor: verbessere die Aufteilung der Klassen

This commit is contained in:
2026-07-01 12:22:03 +02:00
parent 472b928950
commit 37418f34f6
8 changed files with 189 additions and 185 deletions
View File
+35
View File
@@ -0,0 +1,35 @@
from MechFabrik.bauteile import InnerStructure, Item, StrikeEvent, ZoneNames
class Mech(object):
def __init__(self, name: str, tonnage: float, movement_rate: int, inner_structure: InnerStructure):
self._movement_rate = movement_rate
self._tonnage = tonnage
self._name = name
self._inner_structure = inner_structure
@property
def name(self) -> str:
return self._name
@property
def tonnage(self) -> float:
return self._tonnage
@property
def inner_structure(self) -> InnerStructure:
return self._inner_structure
@property
def movement_rate(self) -> int:
return self._movement_rate
def set_item(self, key: tuple, item: Item):
pass
def strike(self, zone_name: ZoneNames, hits: int) -> StrikeEvent:
zone = self._inner_structure.zones.get(zone_name)
if zone is None:
raise Exception(f"Zone {zone_name} not found")
return StrikeEvent(zone, hits)
+3 -4
View File
@@ -1,7 +1,6 @@
from MechFabrik.bauteile import Activator, Joint, Mech, InnerStructure, Gyroskope, Area, AreaNames, Cockpit, OuterAmor, \
Reaktor, \
Sensors, \
Sustainment, ZoneNames
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.reader import ComponentReader
+2 -99
View File
@@ -1,5 +1,7 @@
import enum
from MechFabrik.bauteile.items import Item
class ZoneNames(enum.Enum):
HEAD = 'Kopf'
@@ -32,72 +34,6 @@ class AreaStatus(enum.Flag):
DESTROYED = 2
class ItemTypes(enum.Enum):
COCKPIT = 1
REAKTOR = 2
GYROSKOPE = 3
ACTIVATOR = 4
JOINT = 5
SENSORS = 6
SUSTAINMENT = 7
class Item(object):
def __init__(self, item_type: ItemTypes):
self._type = item_type
@property
def type(self):
return self._type
class BigItem(Item):
def __init__(self, item_type: ItemTypes, tonnage: float):
super().__init__(item_type)
self._tonnage = tonnage
@property
def tonnage(self) -> float:
return self._tonnage
class Cockpit(BigItem):
def __init__(self):
super().__init__(ItemTypes.COCKPIT, 3.0)
class Reaktor(BigItem):
def __init__(self, value: int, tonnage: float):
super().__init__(ItemTypes.REAKTOR, tonnage)
self._value = value
@property
def value(self):
return self._value
class Activator(Item):
def __init__(self):
super().__init__(ItemTypes.ACTIVATOR)
class Joint(Item):
def __init__(self):
super().__init__(ItemTypes.JOINT)
class Sensors(Item):
def __init__(self):
super().__init__(ItemTypes.SENSORS)
class Sustainment(Item):
def __init__(self):
super().__init__(ItemTypes.SUSTAINMENT)
class Zone:
def __init__(self):
@@ -201,36 +137,3 @@ class InnerStructure:
def add_zone(self, index: ZoneNames, zone: Zone):
self._zones[index] = zone
class Mech(object):
def __init__(self, name: str, tonnage: float, movement_rate: int, inner_structure: InnerStructure):
self._movement_rate = movement_rate
self._tonnage = tonnage
self._name = name
self._inner_structure = inner_structure
@property
def name(self) -> str:
return self._name
@property
def tonnage(self) -> float:
return self._tonnage
@property
def inner_structure(self) -> InnerStructure:
return self._inner_structure
@property
def movement_rate(self) -> int:
return self._movement_rate
def set_item(self, key: tuple, item: Item):
pass
def strike(self, zone_name: ZoneNames, hits: int) -> StrikeEvent:
zone = self._inner_structure.zones.get(zone_name)
if zone is None:
raise Exception(f"Zone {zone_name} not found")
return StrikeEvent(zone, hits)
+67
View File
@@ -0,0 +1,67 @@
import enum
class ItemTypes(enum.Enum):
COCKPIT = 1
REAKTOR = 2
GYROSKOPE = 3
ACTIVATOR = 4
JOINT = 5
SENSORS = 6
SUSTAINMENT = 7
class Item(object):
def __init__(self, item_type: ItemTypes):
self._type = item_type
@property
def type(self):
return self._type
class BigItem(Item):
def __init__(self, item_type: ItemTypes, tonnage: float):
super().__init__(item_type)
self._tonnage = tonnage
@property
def tonnage(self) -> float:
return self._tonnage
class Cockpit(BigItem):
def __init__(self):
super().__init__(ItemTypes.COCKPIT, 3.0)
class Reaktor(BigItem):
def __init__(self, value: int, tonnage: float):
super().__init__(ItemTypes.REAKTOR, tonnage)
self._value = value
@property
def value(self):
return self._value
class Activator(Item):
def __init__(self):
super().__init__(ItemTypes.ACTIVATOR)
class Joint(Item):
def __init__(self):
super().__init__(ItemTypes.JOINT)
class Sensors(Item):
def __init__(self):
super().__init__(ItemTypes.SENSORS)
class Sustainment(Item):
def __init__(self):
super().__init__(ItemTypes.SUSTAINMENT)
+78 -78
View File
@@ -1,80 +1,80 @@
"RW","Tonnage","TonnageXL","Hersteller"
10,0.50,0.50,"unbekant"
15,0.50,0.50,"unbekant"
20,0.50,0.50,"unbekant"
25,0.50,0.50,"unbekant"
30,1.00,0.50,"unbekant"
35,1.00,0.50,"unbekant"
40,1.00,0.50,"unbekant"
45,1.00,0.50,"unbekant"
50,1.50,1.00,"unbekant"
55,1.50,1.00,"unbekant"
60,1.50,1.00,"unbekant"
65,2.00,1.00,"unbekant"
70,2.00,1.00,"unbekant"
75,2.00,1.00,"unbekant"
80,2.50,1.50,"unbekant"
85,2.50,1.50,"unbekant"
90,3.00,1.50,"unbekant"
95,3.00,1.50,"unbekant"
100,3.00,1.50,"unbekant"
105,3.50,2.00,"unbekant"
110,3.50,2.00,"unbekant"
115,4.00,2.00,"unbekant"
120,4.00,2.00,"unbekant"
125,4.00,2.00,"unbekant"
130,4.50,2.50,"unbekant"
135,4.50,2.50,"unbekant"
140,5.00,2.50,"unbekant"
145,5.00,2.50,"unbekant"
150,5.50,3.00,"unbekant"
155,5.50,3.00,"unbekant"
160,6.00,3.00,"unbekant"
165,6.00,3.00,"unbekant"
170,6.00,3.00,"unbekant"
175,7.00,3.50,"unbekant"
180,7.00,3.50,"unbekant"
185,7.50,4.00,"unbekant"
190,7.50,4.00,"unbekant"
195,8.00,4.00,"unbekant"
200,8.50,4.50,"unbekant"
205,8.50,4.50,"unbekant"
210,9.00,4.50,"unbekant"
215,9.50,5.00,"unbekant"
220,10.00,5.00,"unbekant"
225,10.00,5.00,"unbekant"
230,10.50,5.50,"unbekant"
235,11.00,5.50,"unbekant"
240,11.50,6.00,"unbekant"
245,12.00,6.00,"unbekant"
250,12.50,6.50,"unbekant"
255,13.00,6.50,"unbekant"
260,13.50,7.00,"unbekant"
265,14.00,7.00,"unbekant"
270,14.50,7.50,"unbekant"
275,15.50,8.00,"unbekant"
280,16.00,8.00,"unbekant"
285,16.50,8.50,"unbekant"
290,17.50,9.00,"unbekant"
295,18.00,9.00,"unbekant"
300,19.00,9.50,"unbekant"
305,19.50,10.00,"unbekant"
310,20.50,10.50,"unbekant"
315,21.50,11.00,"unbekant"
320,22.50,11.50,"unbekant"
325,23.50,12.00,"unbekant"
10,0.50,0.50,"unbekannt"
15,0.50,0.50,"unbekannt"
20,0.50,0.50,"unbekannt"
25,0.50,0.50,"unbekannt"
30,1.00,0.50,"unbekannt"
35,1.00,0.50,"unbekannt"
40,1.00,0.50,"unbekannt"
45,1.00,0.50,"unbekannt"
50,1.50,1.00,"unbekannt"
55,1.50,1.00,"unbekannt"
60,1.50,1.00,"unbekannt"
65,2.00,1.00,"unbekannt"
70,2.00,1.00,"unbekannt"
75,2.00,1.00,"unbekannt"
80,2.50,1.50,"unbekannt"
85,2.50,1.50,"unbekannt"
90,3.00,1.50,"unbekannt"
95,3.00,1.50,"unbekannt"
100,3.00,1.50,"unbekannt"
105,3.50,2.00,"unbekannt"
110,3.50,2.00,"unbekannt"
115,4.00,2.00,"unbekannt"
120,4.00,2.00,"unbekannt"
125,4.00,2.00,"unbekannt"
130,4.50,2.50,"unbekannt"
135,4.50,2.50,"unbekannt"
140,5.00,2.50,"unbekannt"
145,5.00,2.50,"unbekannt"
150,5.50,3.00,"unbekannt"
155,5.50,3.00,"unbekannt"
160,6.00,3.00,"unbekannt"
165,6.00,3.00,"unbekannt"
170,6.00,3.00,"unbekannt"
175,7.00,3.50,"unbekannt"
180,7.00,3.50,"unbekannt"
185,7.50,4.00,"unbekannt"
190,7.50,4.00,"unbekannt"
195,8.00,4.00,"unbekannt"
200,8.50,4.50,"unbekannt"
205,8.50,4.50,"unbekannt"
210,9.00,4.50,"unbekannt"
215,9.50,5.00,"unbekannt"
220,10.00,5.00,"unbekannt"
225,10.00,5.00,"unbekannt"
230,10.50,5.50,"unbekannt"
235,11.00,5.50,"unbekannt"
240,11.50,6.00,"unbekannt"
245,12.00,6.00,"unbekannt"
250,12.50,6.50,"unbekannt"
255,13.00,6.50,"unbekannt"
260,13.50,7.00,"unbekannt"
265,14.00,7.00,"unbekannt"
270,14.50,7.50,"unbekannt"
275,15.50,8.00,"unbekannt"
280,16.00,8.00,"unbekannt"
285,16.50,8.50,"unbekannt"
290,17.50,9.00,"unbekannt"
295,18.00,9.00,"unbekannt"
300,19.00,9.50,"unbekannt"
305,19.50,10.00,"unbekannt"
310,20.50,10.50,"unbekannt"
315,21.50,11.00,"unbekannt"
320,22.50,11.50,"unbekannt"
325,23.50,12.00,"unbekannt"
330,24.50,12.50,"VOX"
335,25.50,13.00,"unbekant"
340,27.00,13.50,"unbekant"
345,28.50,14.50,"unbekant"
350,29.50,15.00,"unbekant"
355,31.50,16.00,"unbekant"
360,33.00,16.50,"unbekant"
365,34.50,17.50,"unbekant"
370,36.50,18.50,"unbekant"
375,38.50,19.50,"unbekant"
380,41.00,20.50,"unbekant"
385,43.50,22.00,"unbekant"
390,46.00,23.00,"unbekant"
395,49.00,24.50,"unbekant"
400,52.50,26.50,"unbekant"
335,25.50,13.00,"unbekannt"
340,27.00,13.50,"unbekannt"
345,28.50,14.50,"unbekannt"
350,29.50,15.00,"unbekannt"
355,31.50,16.00,"unbekannt"
360,33.00,16.50,"unbekannt"
365,34.50,17.50,"unbekannt"
370,36.50,18.50,"unbekannt"
375,38.50,19.50,"unbekannt"
380,41.00,20.50,"unbekannt"
385,43.50,22.00,"unbekannt"
390,46.00,23.00,"unbekannt"
395,49.00,24.50,"unbekannt"
400,52.50,26.50,"unbekannt"
1 RW Tonnage TonnageXL Hersteller
2 10 0.50 0.50 unbekant unbekannt
3 15 0.50 0.50 unbekant unbekannt
4 20 0.50 0.50 unbekant unbekannt
5 25 0.50 0.50 unbekant unbekannt
6 30 1.00 0.50 unbekant unbekannt
7 35 1.00 0.50 unbekant unbekannt
8 40 1.00 0.50 unbekant unbekannt
9 45 1.00 0.50 unbekant unbekannt
10 50 1.50 1.00 unbekant unbekannt
11 55 1.50 1.00 unbekant unbekannt
12 60 1.50 1.00 unbekant unbekannt
13 65 2.00 1.00 unbekant unbekannt
14 70 2.00 1.00 unbekant unbekannt
15 75 2.00 1.00 unbekant unbekannt
16 80 2.50 1.50 unbekant unbekannt
17 85 2.50 1.50 unbekant unbekannt
18 90 3.00 1.50 unbekant unbekannt
19 95 3.00 1.50 unbekant unbekannt
20 100 3.00 1.50 unbekant unbekannt
21 105 3.50 2.00 unbekant unbekannt
22 110 3.50 2.00 unbekant unbekannt
23 115 4.00 2.00 unbekant unbekannt
24 120 4.00 2.00 unbekant unbekannt
25 125 4.00 2.00 unbekant unbekannt
26 130 4.50 2.50 unbekant unbekannt
27 135 4.50 2.50 unbekant unbekannt
28 140 5.00 2.50 unbekant unbekannt
29 145 5.00 2.50 unbekant unbekannt
30 150 5.50 3.00 unbekant unbekannt
31 155 5.50 3.00 unbekant unbekannt
32 160 6.00 3.00 unbekant unbekannt
33 165 6.00 3.00 unbekant unbekannt
34 170 6.00 3.00 unbekant unbekannt
35 175 7.00 3.50 unbekant unbekannt
36 180 7.00 3.50 unbekant unbekannt
37 185 7.50 4.00 unbekant unbekannt
38 190 7.50 4.00 unbekant unbekannt
39 195 8.00 4.00 unbekant unbekannt
40 200 8.50 4.50 unbekant unbekannt
41 205 8.50 4.50 unbekant unbekannt
42 210 9.00 4.50 unbekant unbekannt
43 215 9.50 5.00 unbekant unbekannt
44 220 10.00 5.00 unbekant unbekannt
45 225 10.00 5.00 unbekant unbekannt
46 230 10.50 5.50 unbekant unbekannt
47 235 11.00 5.50 unbekant unbekannt
48 240 11.50 6.00 unbekant unbekannt
49 245 12.00 6.00 unbekant unbekannt
50 250 12.50 6.50 unbekant unbekannt
51 255 13.00 6.50 unbekant unbekannt
52 260 13.50 7.00 unbekant unbekannt
53 265 14.00 7.00 unbekant unbekannt
54 270 14.50 7.50 unbekant unbekannt
55 275 15.50 8.00 unbekant unbekannt
56 280 16.00 8.00 unbekant unbekannt
57 285 16.50 8.50 unbekant unbekannt
58 290 17.50 9.00 unbekant unbekannt
59 295 18.00 9.00 unbekant unbekannt
60 300 19.00 9.50 unbekant unbekannt
61 305 19.50 10.00 unbekant unbekannt
62 310 20.50 10.50 unbekant unbekannt
63 315 21.50 11.00 unbekant unbekannt
64 320 22.50 11.50 unbekant unbekannt
65 325 23.50 12.00 unbekant unbekannt
66 330 24.50 12.50 VOX
67 335 25.50 13.00 unbekant unbekannt
68 340 27.00 13.50 unbekant unbekannt
69 345 28.50 14.50 unbekant unbekannt
70 350 29.50 15.00 unbekant unbekannt
71 355 31.50 16.00 unbekant unbekannt
72 360 33.00 16.50 unbekant unbekannt
73 365 34.50 17.50 unbekant unbekannt
74 370 36.50 18.50 unbekant unbekannt
75 375 38.50 19.50 unbekant unbekannt
76 380 41.00 20.50 unbekant unbekannt
77 385 43.50 22.00 unbekant unbekannt
78 390 46.00 23.00 unbekant unbekannt
79 395 49.00 24.50 unbekant unbekannt
80 400 52.50 26.50 unbekant unbekannt
+1 -1
View File
@@ -1,4 +1,4 @@
"Waffentyp","Wärme","Schaden","Minimal","Nah","Mittel","Weit","Tonage","Zeilen","Schuss/Tonne"
"Waffentyp","Wärme","Schaden","Minimal","Nah","Mittel","Weit","Tonnage","Zeilen","Schuss/Tonne"
"L-Laser",1,3,0,1,2,3,0.5,1
"L-I-Laser",2,3,0,1,2,3,1,1
"M-Laser",3,5,0,"1 - 3","4 - 6","7 - 9",1,1
1 Waffentyp Wärme Schaden Minimal Nah Mittel Weit Tonage Tonnage Zeilen Schuss/Tonne
2 L-Laser 1 3 0 1 2 3 0.5 1
3 L-I-Laser 2 3 0 1 2 3 1 1
4 M-Laser 3 5 0 1 - 3 4 - 6 7 - 9 1 1
+3 -3
View File
@@ -1,9 +1,9 @@
import unittest
from Hangar.mech import Mech
from MechFabrik import MechFabrik
from MechFabrik.bauteile import InnerStructure, Gyroskope, AreaNames, Area, Cockpit, Item, ItemTypes, OuterAmor, \
Reaktor, Mech, \
Zone, ZoneNames
from MechFabrik.bauteile import Gyroskope, InnerStructure, AreaNames, Area, OuterAmor, Zone, ZoneNames
from MechFabrik.bauteile.items import Cockpit, Item, ItemTypes, Reaktor
from test_mech import AbstractTestMechAmor, INNER_ARMOR, OUTER_ARMOR