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):
|
||||
self.__components = ComponentReader()
|
||||
self.__tonnage = 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._mech = Mech(name, tonnage, movement_rate, self._inner_structure)
|
||||
|
||||
@@ -20,29 +31,28 @@ class MechFabrik(object):
|
||||
self.__build_middle_torso_area(gyroscope)
|
||||
|
||||
def __build_head_area(self) -> None:
|
||||
area = Area()
|
||||
cockpit = Cockpit()
|
||||
area.cockpit = cockpit
|
||||
area.items = {
|
||||
self.__areas[AreaNames.HEAD].cockpit = cockpit
|
||||
self.__areas[AreaNames.HEAD].items = {
|
||||
(1, 1): Sustainment(),
|
||||
(1, 2): Sensors(),
|
||||
(1, 3): area.cockpit,
|
||||
(1, 3): cockpit,
|
||||
(1, 4): None,
|
||||
(1, 5): Sensors(),
|
||||
(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:
|
||||
area_middle = Area()
|
||||
area_left = Area()
|
||||
area_right = Area()
|
||||
area_left.parent = area_middle
|
||||
area_right.parent = area_middle
|
||||
def __build_middle_torso_area(self, gyroscope: Gyroskope) -> None:
|
||||
self.__areas[AreaNames.LEFT_TORSO].parent = self.__areas[AreaNames.MIDDLE_TORSO]
|
||||
self.__areas[AreaNames.RIGHT_TORSO].parent = self.__areas[AreaNames.MIDDLE_TORSO]
|
||||
reactor = Reaktor(self.__reactor_value, self.__components.reactor_tonnage_from(self.__reactor_value))
|
||||
area_middle.reactor = reactor
|
||||
area_middle.children = [area_right, area_left]
|
||||
area_middle.items = {
|
||||
self.__areas[AreaNames.MIDDLE_TORSO].reactor = reactor
|
||||
self.__areas[AreaNames.MIDDLE_TORSO].children = [
|
||||
self.__areas[AreaNames.RIGHT_TORSO],
|
||||
self.__areas[AreaNames.LEFT_TORSO]
|
||||
]
|
||||
self.__areas[AreaNames.MIDDLE_TORSO].items = {
|
||||
(1, 1): reactor,
|
||||
(1, 2): reactor,
|
||||
(1, 3): reactor,
|
||||
@@ -56,19 +66,24 @@ class MechFabrik(object):
|
||||
(2, 5): None,
|
||||
(2, 6): None,
|
||||
}
|
||||
self.__build_arm(area_right, AreaNames.RIGHT_ARM)
|
||||
self.__build_leg(area_right, AreaNames.RIGHT_LEG)
|
||||
self.__build_arm(area_left, AreaNames.LEFT_ARM)
|
||||
self.__build_leg(area_left, AreaNames.LEFT_LEG)
|
||||
self._inner_structure.add_area(AreaNames.LEFT_TORSO, area_left)
|
||||
self._inner_structure.add_area(AreaNames.RIGHT_TORSO, area_right)
|
||||
self._inner_structure.add_area(AreaNames.MIDDLE_TORSO, area_middle)
|
||||
return area_middle
|
||||
self.__areas[AreaNames.MIDDLE_TORSO].inner_armor = self.__components.inner_amor_for_tonnage_and_area(
|
||||
self.__tonnage,
|
||||
AreaNames.MIDDLE_TORSO
|
||||
)
|
||||
self.__areas[AreaNames.LEFT_TORSO].inner_armor = self.__components.inner_amor_for_tonnage_and_area(
|
||||
self.__tonnage, AreaNames.LEFT_TORSO)
|
||||
self.__areas[AreaNames.RIGHT_TORSO].inner_armor = self.__components.inner_amor_for_tonnage_and_area(
|
||||
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):
|
||||
arm = Area()
|
||||
arm.parent = parent
|
||||
arm.items = {
|
||||
self.__areas[index].parent = parent
|
||||
self.__areas[index].items = {
|
||||
(1, 1): Joint(),
|
||||
(1, 2): Activator(),
|
||||
(1, 3): Activator(),
|
||||
@@ -82,13 +97,13 @@ class MechFabrik(object):
|
||||
(2, 5): None,
|
||||
(2, 6): None,
|
||||
}
|
||||
parent.children.append(arm)
|
||||
self._inner_structure.add_area(index, arm)
|
||||
self.__areas[index].inner_armor = self.__components.inner_amor_for_tonnage_and_area(self.__tonnage, index)
|
||||
parent.children.append(self.__areas[index])
|
||||
|
||||
|
||||
def __build_leg(self, parent: Area, index: AreaNames):
|
||||
leg = Area()
|
||||
leg.parent = parent
|
||||
leg.items = {
|
||||
self.__areas[index].parent = parent
|
||||
self.__areas[index].items = {
|
||||
(1, 1): Joint(),
|
||||
(1, 2): Activator(),
|
||||
(1, 3): Activator(),
|
||||
@@ -96,23 +111,28 @@ class MechFabrik(object):
|
||||
(1, 5): None,
|
||||
(1, 6): None,
|
||||
}
|
||||
parent.children.append(leg)
|
||||
self._inner_structure.add_area(index, leg)
|
||||
self.__areas[index].inner_armor = self.__components.inner_amor_for_tonnage_and_area(self.__tonnage, index)
|
||||
parent.children.append(self.__areas[index])
|
||||
|
||||
def auslieferung(self) -> Mech:
|
||||
for (index, area) in self.__areas.items():
|
||||
self._inner_structure.add_area(index, area)
|
||||
return self._mech
|
||||
|
||||
def setHeadAmore(self, param):
|
||||
pass
|
||||
def set_head_armor(self, armor: int) -> None:
|
||||
self.__areas[AreaNames.HEAD].armor = armor
|
||||
|
||||
def setMidleTorsoAmore(self, param):
|
||||
pass
|
||||
def set_middle_torso_armor(self, armor: int) -> None:
|
||||
self.__areas[AreaNames.MIDDLE_TORSO].armor = armor
|
||||
|
||||
def setSideTorsoAmore(self, param):
|
||||
pass
|
||||
def set_side_torso_armor(self, armor: int) -> None:
|
||||
self.__areas[AreaNames.RIGHT_TORSO].armor = armor
|
||||
self.__areas[AreaNames.LEFT_TORSO].armor = armor
|
||||
|
||||
def setArmAmore(self, param):
|
||||
pass
|
||||
def set_arm_armor(self, armor: int) -> None:
|
||||
self.__areas[AreaNames.RIGHT_ARM].armor = armor
|
||||
self.__areas[AreaNames.LEFT_ARM].armor = armor
|
||||
|
||||
def setLegAmore(self, param):
|
||||
pass
|
||||
def set_leg_armor(self, armor: int) -> None:
|
||||
self.__areas[AreaNames.RIGHT_LEG].armor = armor
|
||||
self.__areas[AreaNames.LEFT_LEG].armor = armor
|
||||
|
||||
@@ -85,7 +85,8 @@ class Area:
|
||||
def __init__(self):
|
||||
self.__dict__['_content'] = {
|
||||
'children': [],
|
||||
'items': {}
|
||||
'items': {},
|
||||
'armor': 0,
|
||||
}
|
||||
|
||||
def __setattr__(self, key, value):
|
||||
@@ -154,5 +155,12 @@ class Mech(object):
|
||||
def set_item(self, key: tuple, item: Item):
|
||||
pass
|
||||
|
||||
def strike(self, area_name, param):
|
||||
pass
|
||||
def strike(self, area_name, hits: int):
|
||||
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 os.path
|
||||
|
||||
from MechFabrik import AreaNames
|
||||
|
||||
|
||||
# noinspection SpellCheckingInspection
|
||||
class CsvDialect (csv.Dialect):
|
||||
@@ -34,3 +36,20 @@ class ComponentReader:
|
||||
|
||||
def reactor_tonnage_from(self, reactor_value: int) -> float:
|
||||
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
|
||||
15,1.5,1.0,5,4,2,3,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