Feature: nutze richtige Rüstung in den einzelnen Zonen
This commit is contained in:
+62
-42
@@ -8,7 +8,18 @@ class MechFabrik(object):
|
|||||||
|
|
||||||
def __init__(self, name: str, tonnage: float, movement_rate: int):
|
def __init__(self, name: str, tonnage: float, movement_rate: int):
|
||||||
self.__components = ComponentReader()
|
self.__components = ComponentReader()
|
||||||
|
self.__tonnage = tonnage
|
||||||
self.__reactor_value = int(movement_rate * tonnage)
|
self.__reactor_value = int(movement_rate * tonnage)
|
||||||
|
self.__areas = {
|
||||||
|
AreaNames.HEAD: Area(),
|
||||||
|
AreaNames.MIDDLE_TORSO: Area(),
|
||||||
|
AreaNames.LEFT_TORSO: Area(),
|
||||||
|
AreaNames.RIGHT_TORSO: Area(),
|
||||||
|
AreaNames.LEFT_ARM: Area(),
|
||||||
|
AreaNames.RIGHT_ARM: Area(),
|
||||||
|
AreaNames.LEFT_LEG: Area(),
|
||||||
|
AreaNames.RIGHT_LEG: Area(),
|
||||||
|
}
|
||||||
self.__build_inner_structure(tonnage, movement_rate)
|
self.__build_inner_structure(tonnage, movement_rate)
|
||||||
self._mech = Mech(name, tonnage, movement_rate, self._inner_structure)
|
self._mech = Mech(name, tonnage, movement_rate, self._inner_structure)
|
||||||
|
|
||||||
@@ -20,29 +31,28 @@ class MechFabrik(object):
|
|||||||
self.__build_middle_torso_area(gyroscope)
|
self.__build_middle_torso_area(gyroscope)
|
||||||
|
|
||||||
def __build_head_area(self) -> None:
|
def __build_head_area(self) -> None:
|
||||||
area = Area()
|
|
||||||
cockpit = Cockpit()
|
cockpit = Cockpit()
|
||||||
area.cockpit = cockpit
|
self.__areas[AreaNames.HEAD].cockpit = cockpit
|
||||||
area.items = {
|
self.__areas[AreaNames.HEAD].items = {
|
||||||
(1, 1): Sustainment(),
|
(1, 1): Sustainment(),
|
||||||
(1, 2): Sensors(),
|
(1, 2): Sensors(),
|
||||||
(1, 3): area.cockpit,
|
(1, 3): cockpit,
|
||||||
(1, 4): None,
|
(1, 4): None,
|
||||||
(1, 5): Sensors(),
|
(1, 5): Sensors(),
|
||||||
(1, 6): Sustainment(),
|
(1, 6): Sustainment(),
|
||||||
}
|
}
|
||||||
self._inner_structure.add_area(AreaNames.HEAD, area)
|
self.__areas[AreaNames.HEAD].inner_armor = 3
|
||||||
|
|
||||||
def __build_middle_torso_area(self, gyroscope: Gyroskope) -> Area:
|
def __build_middle_torso_area(self, gyroscope: Gyroskope) -> None:
|
||||||
area_middle = Area()
|
self.__areas[AreaNames.LEFT_TORSO].parent = self.__areas[AreaNames.MIDDLE_TORSO]
|
||||||
area_left = Area()
|
self.__areas[AreaNames.RIGHT_TORSO].parent = self.__areas[AreaNames.MIDDLE_TORSO]
|
||||||
area_right = Area()
|
|
||||||
area_left.parent = area_middle
|
|
||||||
area_right.parent = area_middle
|
|
||||||
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
|
self.__areas[AreaNames.MIDDLE_TORSO].reactor = reactor
|
||||||
area_middle.children = [area_right, area_left]
|
self.__areas[AreaNames.MIDDLE_TORSO].children = [
|
||||||
area_middle.items = {
|
self.__areas[AreaNames.RIGHT_TORSO],
|
||||||
|
self.__areas[AreaNames.LEFT_TORSO]
|
||||||
|
]
|
||||||
|
self.__areas[AreaNames.MIDDLE_TORSO].items = {
|
||||||
(1, 1): reactor,
|
(1, 1): reactor,
|
||||||
(1, 2): reactor,
|
(1, 2): reactor,
|
||||||
(1, 3): reactor,
|
(1, 3): reactor,
|
||||||
@@ -56,19 +66,24 @@ class MechFabrik(object):
|
|||||||
(2, 5): None,
|
(2, 5): None,
|
||||||
(2, 6): None,
|
(2, 6): None,
|
||||||
}
|
}
|
||||||
self.__build_arm(area_right, AreaNames.RIGHT_ARM)
|
self.__areas[AreaNames.MIDDLE_TORSO].inner_armor = self.__components.inner_amor_for_tonnage_and_area(
|
||||||
self.__build_leg(area_right, AreaNames.RIGHT_LEG)
|
self.__tonnage,
|
||||||
self.__build_arm(area_left, AreaNames.LEFT_ARM)
|
AreaNames.MIDDLE_TORSO
|
||||||
self.__build_leg(area_left, AreaNames.LEFT_LEG)
|
)
|
||||||
self._inner_structure.add_area(AreaNames.LEFT_TORSO, area_left)
|
self.__areas[AreaNames.LEFT_TORSO].inner_armor = self.__components.inner_amor_for_tonnage_and_area(
|
||||||
self._inner_structure.add_area(AreaNames.RIGHT_TORSO, area_right)
|
self.__tonnage, AreaNames.LEFT_TORSO)
|
||||||
self._inner_structure.add_area(AreaNames.MIDDLE_TORSO, area_middle)
|
self.__areas[AreaNames.RIGHT_TORSO].inner_armor = self.__components.inner_amor_for_tonnage_and_area(
|
||||||
return area_middle
|
self.__tonnage,
|
||||||
|
AreaNames.RIGHT_TORSO
|
||||||
|
)
|
||||||
|
self.__build_arm(self.__areas[AreaNames.RIGHT_TORSO], AreaNames.RIGHT_ARM)
|
||||||
|
self.__build_leg(self.__areas[AreaNames.RIGHT_TORSO], AreaNames.RIGHT_LEG)
|
||||||
|
self.__build_arm(self.__areas[AreaNames.LEFT_TORSO], AreaNames.LEFT_ARM)
|
||||||
|
self.__build_leg(self.__areas[AreaNames.LEFT_TORSO], AreaNames.LEFT_LEG)
|
||||||
|
|
||||||
def __build_arm(self, parent: Area, index: AreaNames):
|
def __build_arm(self, parent: Area, index: AreaNames):
|
||||||
arm = Area()
|
self.__areas[index].parent = parent
|
||||||
arm.parent = parent
|
self.__areas[index].items = {
|
||||||
arm.items = {
|
|
||||||
(1, 1): Joint(),
|
(1, 1): Joint(),
|
||||||
(1, 2): Activator(),
|
(1, 2): Activator(),
|
||||||
(1, 3): Activator(),
|
(1, 3): Activator(),
|
||||||
@@ -82,13 +97,13 @@ class MechFabrik(object):
|
|||||||
(2, 5): None,
|
(2, 5): None,
|
||||||
(2, 6): None,
|
(2, 6): None,
|
||||||
}
|
}
|
||||||
parent.children.append(arm)
|
self.__areas[index].inner_armor = self.__components.inner_amor_for_tonnage_and_area(self.__tonnage, index)
|
||||||
self._inner_structure.add_area(index, arm)
|
parent.children.append(self.__areas[index])
|
||||||
|
|
||||||
|
|
||||||
def __build_leg(self, parent: Area, index: AreaNames):
|
def __build_leg(self, parent: Area, index: AreaNames):
|
||||||
leg = Area()
|
self.__areas[index].parent = parent
|
||||||
leg.parent = parent
|
self.__areas[index].items = {
|
||||||
leg.items = {
|
|
||||||
(1, 1): Joint(),
|
(1, 1): Joint(),
|
||||||
(1, 2): Activator(),
|
(1, 2): Activator(),
|
||||||
(1, 3): Activator(),
|
(1, 3): Activator(),
|
||||||
@@ -96,23 +111,28 @@ class MechFabrik(object):
|
|||||||
(1, 5): None,
|
(1, 5): None,
|
||||||
(1, 6): None,
|
(1, 6): None,
|
||||||
}
|
}
|
||||||
parent.children.append(leg)
|
self.__areas[index].inner_armor = self.__components.inner_amor_for_tonnage_and_area(self.__tonnage, index)
|
||||||
self._inner_structure.add_area(index, leg)
|
parent.children.append(self.__areas[index])
|
||||||
|
|
||||||
def auslieferung(self) -> Mech:
|
def auslieferung(self) -> Mech:
|
||||||
|
for (index, area) in self.__areas.items():
|
||||||
|
self._inner_structure.add_area(index, area)
|
||||||
return self._mech
|
return self._mech
|
||||||
|
|
||||||
def setHeadAmore(self, param):
|
def set_head_armor(self, armor: int) -> None:
|
||||||
pass
|
self.__areas[AreaNames.HEAD].armor = armor
|
||||||
|
|
||||||
def setMidleTorsoAmore(self, param):
|
def set_middle_torso_armor(self, armor: int) -> None:
|
||||||
pass
|
self.__areas[AreaNames.MIDDLE_TORSO].armor = armor
|
||||||
|
|
||||||
def setSideTorsoAmore(self, param):
|
def set_side_torso_armor(self, armor: int) -> None:
|
||||||
pass
|
self.__areas[AreaNames.RIGHT_TORSO].armor = armor
|
||||||
|
self.__areas[AreaNames.LEFT_TORSO].armor = armor
|
||||||
|
|
||||||
def setArmAmore(self, param):
|
def set_arm_armor(self, armor: int) -> None:
|
||||||
pass
|
self.__areas[AreaNames.RIGHT_ARM].armor = armor
|
||||||
|
self.__areas[AreaNames.LEFT_ARM].armor = armor
|
||||||
|
|
||||||
def setLegAmore(self, param):
|
def set_leg_armor(self, armor: int) -> None:
|
||||||
pass
|
self.__areas[AreaNames.RIGHT_LEG].armor = armor
|
||||||
|
self.__areas[AreaNames.LEFT_LEG].armor = armor
|
||||||
|
|||||||
@@ -85,7 +85,8 @@ class Area:
|
|||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.__dict__['_content'] = {
|
self.__dict__['_content'] = {
|
||||||
'children': [],
|
'children': [],
|
||||||
'items': {}
|
'items': {},
|
||||||
|
'armor': 0,
|
||||||
}
|
}
|
||||||
|
|
||||||
def __setattr__(self, key, value):
|
def __setattr__(self, key, value):
|
||||||
@@ -154,5 +155,12 @@ class Mech(object):
|
|||||||
def set_item(self, key: tuple, item: Item):
|
def set_item(self, key: tuple, item: Item):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def strike(self, area_name, param):
|
def strike(self, area_name, hits: int):
|
||||||
pass
|
area = self._inner_structure.areas.get(area_name)
|
||||||
|
if area.armor > hits:
|
||||||
|
area.armor -= hits
|
||||||
|
return
|
||||||
|
hits_rest = hits - area.armor
|
||||||
|
if area.inner_armor > hits_rest:
|
||||||
|
area.inner_armor -= hits_rest
|
||||||
|
area.armor = 0
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
import csv
|
import csv
|
||||||
import os.path
|
import os.path
|
||||||
|
|
||||||
|
from MechFabrik import AreaNames
|
||||||
|
|
||||||
|
|
||||||
# noinspection SpellCheckingInspection
|
# noinspection SpellCheckingInspection
|
||||||
class CsvDialect (csv.Dialect):
|
class CsvDialect (csv.Dialect):
|
||||||
@@ -34,3 +36,20 @@ class ComponentReader:
|
|||||||
|
|
||||||
def reactor_tonnage_from(self, reactor_value: int) -> float:
|
def reactor_tonnage_from(self, reactor_value: int) -> float:
|
||||||
return float(self._reactor_data.get(reactor_value, {}).get('Tonnage', 0.0))
|
return float(self._reactor_data.get(reactor_value, {}).get('Tonnage', 0.0))
|
||||||
|
|
||||||
|
def inner_amor_for_tonnage_and_area(self, tonnage: float, area: AreaNames) -> int:
|
||||||
|
match area:
|
||||||
|
case AreaNames.HEAD:
|
||||||
|
return 3
|
||||||
|
case AreaNames.MIDDLE_TORSO:
|
||||||
|
return int(self._inner_structure_data.get(tonnage, {}).get('TorsoMitte', 0))
|
||||||
|
pass
|
||||||
|
case AreaNames.RIGHT_TORSO | AreaNames.LEFT_TORSO:
|
||||||
|
return int(self._inner_structure_data.get(tonnage, {}).get('TorsoSeite', 0))
|
||||||
|
pass
|
||||||
|
case AreaNames.RIGHT_ARM | AreaNames.LEFT_ARM:
|
||||||
|
return int(self._inner_structure_data.get(tonnage, {}).get('Arm', 0))
|
||||||
|
pass
|
||||||
|
case AreaNames.RIGHT_LEG | AreaNames.LEFT_LEG:
|
||||||
|
return int(self._inner_structure_data.get(tonnage, {}).get('Bein', 0))
|
||||||
|
return 0
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
"GTonnage","Tonnage IS","Tonnage Endo","TorsoMitte","TorsoSeite","Arm","Bein","Tonnage" "SD"
|
"GTonnage","Tonnage IS","Tonnage Endo","TorsoMitte","TorsoSeite","Arm","Bein","Tonnage SD"
|
||||||
10,1.0,0.5,4,3,1,2,0.5
|
10,1.0,0.5,4,3,1,2,0.5
|
||||||
15,1.5,1.0,5,4,2,3,0.5
|
15,1.5,1.0,5,4,2,3,0.5
|
||||||
20,2.0,1.0,6,5,3,4,0.5
|
20,2.0,1.0,6,5,3,4,0.5
|
||||||
|
|||||||
|
Can't render this file because it contains an unexpected character in line 1 and column 87.
|
Reference in New Issue
Block a user