Update exposed vars to match game V2
This commit is contained in:
parent
9adee35a6f
commit
d5a0212824
@ -105,7 +105,7 @@ class NuconParameter:
|
||||
return self.id
|
||||
|
||||
class Nucon:
|
||||
def __init__(self, host: str = 'localhost', port: int = 8786):
|
||||
def __init__(self, host: str = 'localhost', port: int = 8785):
|
||||
self.base_url = f'http://{host}:{port}/'
|
||||
self.dummy_mode = False
|
||||
self._parameters = self._create_parameters()
|
||||
@ -159,16 +159,16 @@ class Nucon:
|
||||
'COOLANT_CORE_CIRCULATION_PUMP_1_SPEED': (float, False),
|
||||
'COOLANT_CORE_CIRCULATION_PUMP_2_SPEED': (float, False),
|
||||
'RODS_STATUS': (RodsState, False),
|
||||
'RODS_MOVEMENT_SPEED': (float, False),
|
||||
'RODS_MOVEMENT_SPEED_DECREASED_HIGH_TEMPERATURE': (bool, False),
|
||||
'RODS_DEFORMED': (bool, False),
|
||||
'RODS_TEMPERATURE': (float, False),
|
||||
'RODS_MAX_TEMPERATURE': (float, False),
|
||||
'RODS_POS_ORDERED': (float, True),
|
||||
'RODS_POS_ACTUAL': (float, False),
|
||||
'RODS_POS_REACHED': (bool, False),
|
||||
'RODS_QUANTITY': (int, False),
|
||||
'RODS_ALIGNED': (bool, False),
|
||||
#'RODS_MOVEMENT_SPEED': (float, False),
|
||||
#'RODS_MOVEMENT_SPEED_DECREASED_HIGH_TEMPERATURE': (bool, False),
|
||||
#'RODS_DEFORMED': (bool, False),
|
||||
#'RODS_TEMPERATURE': (float, False),
|
||||
#'RODS_MAX_TEMPERATURE': (float, False),
|
||||
#'RODS_POS_ORDERED': (float, True),
|
||||
#'RODS_POS_ACTUAL': (float, False),
|
||||
#'RODS_POS_REACHED': (bool, False),
|
||||
#'RODS_QUANTITY': (int, False),
|
||||
#'RODS_ALIGNED': (bool, False),
|
||||
'GENERATOR_0_KW': (float, False),
|
||||
'GENERATOR_1_KW': (float, False),
|
||||
'GENERATOR_2_KW': (float, False),
|
||||
@ -210,16 +210,22 @@ class Nucon:
|
||||
value = self._query(parameter)
|
||||
|
||||
if parameter.enum_type:
|
||||
try:
|
||||
return parameter.enum_type(value)
|
||||
except ValueError as e:
|
||||
raise ValueError(f"Failed to convert {value} to {parameter.enum_type.__name__} for parameter {parameter.id}: {e}")
|
||||
elif parameter.param_type == bool:
|
||||
if isinstance(value, str):
|
||||
if value.lower() not in ('true', 'false'):
|
||||
raise ValueError(f"Invalid boolean value: {value}")
|
||||
raise ValueError(f"Invalid boolean value for parameter {parameter.id}: {value}")
|
||||
return value.lower() == 'true'
|
||||
else:
|
||||
raise ValueError(f"Expected string for boolean parameter, got {type(value)}")
|
||||
raise ValueError(f"Expected string for boolean parameter {parameter.id}, got {type(value)}")
|
||||
else:
|
||||
try:
|
||||
return parameter.param_type(value)
|
||||
except ValueError as e:
|
||||
raise ValueError(f"Failed to convert {value} to {parameter.param_type.__name__} for parameter {parameter.id}: {e}")
|
||||
|
||||
def set(self, parameter: Union[str, NuconParameter], value: Union[float, int, bool, str, Enum], force: bool = False) -> None:
|
||||
if isinstance(parameter, str):
|
||||
@ -240,12 +246,20 @@ class Nucon:
|
||||
|
||||
self._set_value(parameter, str(value))
|
||||
|
||||
def get_type(self, parameter: Union[str, NuconParameter]) -> Type:
|
||||
if isinstance(parameter, str):
|
||||
parameter = self._parameters[parameter]
|
||||
return parameter.param_type
|
||||
|
||||
def _query(self, parameter: NuconParameter) -> str:
|
||||
response = requests.get(self.base_url, params={"variable": parameter.id})
|
||||
|
||||
if response.status_code != 200:
|
||||
raise Exception(f"Failed to query parameter {parameter.id}. Status code: {response.status_code}")
|
||||
|
||||
if response.text.strip() == 'NOT FOUND':
|
||||
raise Exception(f"Failed to query parameter {parameter.id}. Returned 'NOT FOUND'")
|
||||
|
||||
return response.text.strip()
|
||||
|
||||
def _set_value(self, parameter: NuconParameter, value: str) -> None:
|
||||
@ -301,6 +315,8 @@ class Nucon:
|
||||
self.dummy_mode = dummy_mode
|
||||
|
||||
def __getattr__(self, name):
|
||||
if isinstance(name, int):
|
||||
return self.__getattr__(list(self._parameters.keys())[name])
|
||||
if name in self._parameters:
|
||||
return self._parameters[name]
|
||||
raise AttributeError(f"'{self.__class__.__name__}' object has no attribute '{name}'")
|
||||
|
Loading…
Reference in New Issue
Block a user