def __init__(self): self.__engineVibrationCtrl = EngineController() self.__fireVibrationCtrl = SwitchController('crit_fire_veff') self.__trackBreakingVibrationCtrl = TrackBreakingController() self.__deathVibrationCtrl = DeathController() self.__rammingVibrationCtrl = RammingController()
class ControllersManager: def __init__(self): self.__engineVibrationCtrl = EngineController() self.__fireVibrationCtrl = SwitchController('crit_fire_veff') self.__trackBreakingVibrationCtrl = TrackBreakingController() self.__deathVibrationCtrl = DeathController() self.__rammingVibrationCtrl = RammingController() def destroy(self): self.__engineVibrationCtrl.destroy() self.__fireVibrationCtrl.destroy() self.__rammingVibrationCtrl.destroy() VibroManager.g_instance.stopAllEffects() def update(self, vehicle, isLeftTrackBroken, isRightTrackBroken): if not VibroManager.g_instance.canWork(): return self.__deathVibrationCtrl.update(vehicle.isAlive()) self.__updateEngine(vehicle) if vehicle.isAlive(): self.__trackBreakingVibrationCtrl.update(vehicle, isLeftTrackBroken, isRightTrackBroken) else: self.__fireVibrationCtrl.switch(False) VibroManager.g_instance.update() def switchFireVibrations(self, enableFire): if self.__fireVibrationCtrl is not None: self.__fireVibrationCtrl.switch(enableFire) def executeRammingVibrations(self, vehicleSpeed, matKind): if VibroManager.g_instance.canWork(): self.__rammingVibrationCtrl.execute(vehicleSpeed, matKind) def executeHitVibrations(self, hitEffectCode): if VibroManager.g_instance.canWork(): HitController(hitEffectCode) def executeShootingVibrations(self, caliber): if VibroManager.g_instance.canWork(): ShootingController(caliber) def executeCriticalHitVibrations(self, vehicle, extrasName): if not VibroManager.g_instance.canWork(): return if extrasName == 'gunHealth': OnceController('crit_run_veff') elif extrasName == 'engineHealth': OnceController('crit_engine_veff') else: for tankman in vehicle.typeDescriptor.type.tankmen: if extrasName == tankman.name: OnceController('crit_contusion_veff') break def __updateEngine(self, vehicle): dirFlags = vehicle.engineMode[1] if dirFlags & 4 != 0: self.__engineVibrationCtrl.setTurn('left') elif dirFlags & 8 != 0: self.__engineVibrationCtrl.setTurn('right') else: self.__engineVibrationCtrl.setTurn('') self.__engineVibrationCtrl.update(vehicle)
class ControllersManager: def __init__(self): self.__engineVibrationCtrl = EngineController() self.__fireVibrationCtrl = SwitchController('crit_fire_veff') self.__trackBreakingVibrationCtrl = TrackBreakingController() self.__deathVibrationCtrl = DeathController() self.__rammingVibrationCtrl = RammingController() def destroy(self): self.__engineVibrationCtrl.destroy() self.__fireVibrationCtrl.destroy() self.__rammingVibrationCtrl.destroy() VibroManager.g_instance.stopAllEffects() def update(self, vehicle, isLeftTrackBroken, isRightTrackBroken): if not VibroManager.g_instance.canWork(): return self.__deathVibrationCtrl.update(vehicle.isAlive()) self.__updateEngine(vehicle) if vehicle.isAlive(): self.__trackBreakingVibrationCtrl.update(vehicle, isLeftTrackBroken, isRightTrackBroken) else: self.__fireVibrationCtrl.switch(False) VibroManager.g_instance.update() def switchFireVibrations(self, enableFire): if self.__fireVibrationCtrl is not None: self.__fireVibrationCtrl.switch(enableFire) return def executeRammingVibrations(self, vehicleSpeed, matKind): if VibroManager.g_instance.canWork(): self.__rammingVibrationCtrl.execute(vehicleSpeed, matKind) def executeHitVibrations(self, hitEffectCode): if VibroManager.g_instance.canWork(): HitController(hitEffectCode) def executeShootingVibrations(self, caliber): if VibroManager.g_instance.canWork(): ShootingController(caliber) def executeCriticalHitVibrations(self, vehicle, extrasName): if not VibroManager.g_instance.canWork(): return if extrasName == 'gunHealth': OnceController('crit_run_veff') elif extrasName == 'engineHealth': OnceController('crit_engine_veff') else: for tankman in vehicle.typeDescriptor.type.tankmen: if extrasName == tankman.name: OnceController('crit_contusion_veff') break def __updateEngine(self, vehicle): dirFlags = vehicle.engineMode[1] if dirFlags & 4 != 0: self.__engineVibrationCtrl.setTurn('left') elif dirFlags & 8 != 0: self.__engineVibrationCtrl.setTurn('right') else: self.__engineVibrationCtrl.setTurn('') self.__engineVibrationCtrl.update(vehicle)
os.getenv('SWITCH_INPUT_PIN', 5)) Config.set_config_variable('switch_output_pin', os.getenv('SWITCH_OUTPUT_PIN', 6)) Config.set_config_variable('motor_input_pin', os.getenv('MOTOR_INPUT_PIN', 7)) Config.set_config_variable('motor_output_pin', os.getenv('MOTOR_OUTPUT_PIN', 8)) Config.set_config_variable('oven_input_pin', os.getenv('OVEN_INPUT_PIN', 9)) Config.set_config_variable('oven_output_pin', os.getenv('OVEN_OUTPUT_PIN', 10)) # Setup machine_status = MachineStatus() pulse_transmitter = PulseTransmitter() controllers = [ OvenController(machine_status, pulse_transmitter), MotorController(machine_status, pulse_transmitter), ExtruderController(machine_status, pulse_transmitter), StamperController(machine_status, pulse_transmitter), SwitchController(machine_status, pulse_transmitter) ] # Start controlling the machine thread = threading.Thread(target=control_the_machine, args=(), daemon=True) thread.start() # Run the API app.run(host=Config.get_config_variable('app_host'), port=Config.get_config_variable('app_port'))