diff --git a/Hangar/__init__.py b/Hangar/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Hangar/mech.py b/Hangar/mech.py new file mode 100644 index 0000000..ccab62f --- /dev/null +++ b/Hangar/mech.py @@ -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) diff --git a/MechFabrik/__init__.py b/MechFabrik/__init__.py index 164936a..6d43725 100755 --- a/MechFabrik/__init__.py +++ b/MechFabrik/__init__.py @@ -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 diff --git a/MechFabrik/bauteile/__init__.py b/MechFabrik/bauteile/__init__.py index 678d405..c88d5fc 100755 --- a/MechFabrik/bauteile/__init__.py +++ b/MechFabrik/bauteile/__init__.py @@ -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) diff --git a/MechFabrik/bauteile/items.py b/MechFabrik/bauteile/items.py new file mode 100644 index 0000000..354130b --- /dev/null +++ b/MechFabrik/bauteile/items.py @@ -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) diff --git a/MechFabrik/tabellen/reaktoren.csv b/MechFabrik/tabellen/reaktoren.csv index de92a35..0eaed1d 100755 --- a/MechFabrik/tabellen/reaktoren.csv +++ b/MechFabrik/tabellen/reaktoren.csv @@ -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" \ No newline at end of file +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" \ No newline at end of file diff --git a/MechFabrik/tabellen/waffen.csv b/MechFabrik/tabellen/waffen.csv index 480f444..4ccee80 100755 --- a/MechFabrik/tabellen/waffen.csv +++ b/MechFabrik/tabellen/waffen.csv @@ -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 diff --git a/tests/test_mech_bau.py b/tests/test_mech_bau.py index 1a8a168..a202bda 100755 --- a/tests/test_mech_bau.py +++ b/tests/test_mech_bau.py @@ -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