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
 | 
					        return self.id
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class Nucon:
 | 
					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.base_url = f'http://{host}:{port}/'
 | 
				
			||||||
        self.dummy_mode = False
 | 
					        self.dummy_mode = False
 | 
				
			||||||
        self._parameters = self._create_parameters()
 | 
					        self._parameters = self._create_parameters()
 | 
				
			||||||
@ -159,16 +159,16 @@ class Nucon:
 | 
				
			|||||||
            'COOLANT_CORE_CIRCULATION_PUMP_1_SPEED': (float, False),
 | 
					            'COOLANT_CORE_CIRCULATION_PUMP_1_SPEED': (float, False),
 | 
				
			||||||
            'COOLANT_CORE_CIRCULATION_PUMP_2_SPEED': (float, False),
 | 
					            'COOLANT_CORE_CIRCULATION_PUMP_2_SPEED': (float, False),
 | 
				
			||||||
            'RODS_STATUS': (RodsState, False),
 | 
					            'RODS_STATUS': (RodsState, False),
 | 
				
			||||||
            'RODS_MOVEMENT_SPEED': (float, False),
 | 
					            #'RODS_MOVEMENT_SPEED': (float, False),
 | 
				
			||||||
            'RODS_MOVEMENT_SPEED_DECREASED_HIGH_TEMPERATURE': (bool, False),
 | 
					            #'RODS_MOVEMENT_SPEED_DECREASED_HIGH_TEMPERATURE': (bool, False),
 | 
				
			||||||
            'RODS_DEFORMED': (bool, False),
 | 
					            #'RODS_DEFORMED': (bool, False),
 | 
				
			||||||
            'RODS_TEMPERATURE': (float, False),
 | 
					            #'RODS_TEMPERATURE': (float, False),
 | 
				
			||||||
            'RODS_MAX_TEMPERATURE': (float, False),
 | 
					            #'RODS_MAX_TEMPERATURE': (float, False),
 | 
				
			||||||
            'RODS_POS_ORDERED': (float, True),
 | 
					            #'RODS_POS_ORDERED': (float, True),
 | 
				
			||||||
            'RODS_POS_ACTUAL': (float, False),
 | 
					            #'RODS_POS_ACTUAL': (float, False),
 | 
				
			||||||
            'RODS_POS_REACHED': (bool, False),
 | 
					            #'RODS_POS_REACHED': (bool, False),
 | 
				
			||||||
            'RODS_QUANTITY': (int, False),
 | 
					            #'RODS_QUANTITY': (int, False),
 | 
				
			||||||
            'RODS_ALIGNED': (bool, False),
 | 
					            #'RODS_ALIGNED': (bool, False),
 | 
				
			||||||
            'GENERATOR_0_KW': (float, False),
 | 
					            'GENERATOR_0_KW': (float, False),
 | 
				
			||||||
            'GENERATOR_1_KW': (float, False),
 | 
					            'GENERATOR_1_KW': (float, False),
 | 
				
			||||||
            'GENERATOR_2_KW': (float, False),
 | 
					            'GENERATOR_2_KW': (float, False),
 | 
				
			||||||
@ -210,16 +210,22 @@ class Nucon:
 | 
				
			|||||||
        value = self._query(parameter)
 | 
					        value = self._query(parameter)
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        if parameter.enum_type:
 | 
					        if parameter.enum_type:
 | 
				
			||||||
 | 
					            try:
 | 
				
			||||||
                return parameter.enum_type(value)
 | 
					                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:
 | 
					        elif parameter.param_type == bool:
 | 
				
			||||||
            if isinstance(value, str):
 | 
					            if isinstance(value, str):
 | 
				
			||||||
                if value.lower() not in ('true', 'false'):
 | 
					                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'
 | 
					                return value.lower() == 'true'
 | 
				
			||||||
            else:
 | 
					            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:
 | 
					        else:
 | 
				
			||||||
 | 
					            try:
 | 
				
			||||||
                return parameter.param_type(value)
 | 
					                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:
 | 
					    def set(self, parameter: Union[str, NuconParameter], value: Union[float, int, bool, str, Enum], force: bool = False) -> None:
 | 
				
			||||||
        if isinstance(parameter, str):
 | 
					        if isinstance(parameter, str):
 | 
				
			||||||
@ -240,12 +246,20 @@ class Nucon:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        self._set_value(parameter, str(value))
 | 
					        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:
 | 
					    def _query(self, parameter: NuconParameter) -> str:
 | 
				
			||||||
        response = requests.get(self.base_url, params={"variable": parameter.id})
 | 
					        response = requests.get(self.base_url, params={"variable": parameter.id})
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        if response.status_code != 200:
 | 
					        if response.status_code != 200:
 | 
				
			||||||
            raise Exception(f"Failed to query parameter {parameter.id}. Status code: {response.status_code}")
 | 
					            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()
 | 
					        return response.text.strip()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def _set_value(self, parameter: NuconParameter, value: str) -> None:
 | 
					    def _set_value(self, parameter: NuconParameter, value: str) -> None:
 | 
				
			||||||
@ -301,6 +315,8 @@ class Nucon:
 | 
				
			|||||||
        self.dummy_mode = dummy_mode
 | 
					        self.dummy_mode = dummy_mode
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def __getattr__(self, name):
 | 
					    def __getattr__(self, name):
 | 
				
			||||||
 | 
					        if isinstance(name, int):
 | 
				
			||||||
 | 
					            return self.__getattr__(list(self._parameters.keys())[name])
 | 
				
			||||||
        if name in self._parameters:
 | 
					        if name in self._parameters:
 | 
				
			||||||
            return self._parameters[name]
 | 
					            return self._parameters[name]
 | 
				
			||||||
        raise AttributeError(f"'{self.__class__.__name__}' object has no attribute '{name}'")
 | 
					        raise AttributeError(f"'{self.__class__.__name__}' object has no attribute '{name}'")
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user