refactor: beachte, dass in Python Namen von Ordnern und Dateien immer klein geschieben werden
Auch vermeide Denglisch
This commit is contained in:
Executable
+52
@@ -0,0 +1,52 @@
|
||||
import csv
|
||||
import os.path
|
||||
|
||||
from mech_factory import AreaNames
|
||||
|
||||
|
||||
# noinspection SpellCheckingInspection
|
||||
class CsvDialect (csv.Dialect):
|
||||
lineterminator='\r\n'
|
||||
delimiter = ','
|
||||
quotechar = '"'
|
||||
quoting=csv.QUOTE_NONNUMERIC
|
||||
|
||||
|
||||
class ComponentReader:
|
||||
|
||||
def __init__(self):
|
||||
my_dirname = str(os.path.dirname(__file__))
|
||||
self._inner_structure_data = {}
|
||||
self._reactor_data = {}
|
||||
self._weapon_data = {}
|
||||
with open(os.path.join(my_dirname, 'tabellen', 'bauteile.csv')) as csvfile:
|
||||
component_reader = csv.DictReader(csvfile, dialect=CsvDialect)
|
||||
for row in component_reader:
|
||||
self._inner_structure_data[float(row['GTonnage'])] = row
|
||||
with open(os.path.join(my_dirname, 'tabellen', 'reaktoren.csv')) as csvfile:
|
||||
component_reader = csv.DictReader(csvfile, dialect=CsvDialect)
|
||||
for row in component_reader:
|
||||
self._reactor_data[float(row['RW'])] = row
|
||||
with open(os.path.join(my_dirname, 'tabellen', 'waffen.csv')) as csvfile:
|
||||
component_reader = csv.DictReader(csvfile, dialect=CsvDialect)
|
||||
for row in component_reader:
|
||||
self._weapon_data[row['Waffentyp']] = row
|
||||
|
||||
def inner_structure_from(self, tonnage: float) -> float:
|
||||
return float(self._inner_structure_data.get(tonnage, {}).get('Tonnage IS', 0.0))
|
||||
|
||||
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))
|
||||
case AreaNames.RIGHT_TORSO | AreaNames.LEFT_TORSO:
|
||||
return int(self._inner_structure_data.get(tonnage, {}).get('TorsoSeite', 0))
|
||||
case AreaNames.RIGHT_ARM | AreaNames.LEFT_ARM:
|
||||
return int(self._inner_structure_data.get(tonnage, {}).get('Arm', 0))
|
||||
case AreaNames.RIGHT_LEG | AreaNames.LEFT_LEG:
|
||||
return int(self._inner_structure_data.get(tonnage, {}).get('Bein', 0))
|
||||
Reference in New Issue
Block a user