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)
 def __init__(self):
     self.__engineVibrationCtrl = EngineController()
     self.__fireVibrationCtrl = SwitchController('crit_fire_veff')
     self.__trackBreakingVibrationCtrl = TrackBreakingController()
     self.__deathVibrationCtrl = DeathController()
     self.__rammingVibrationCtrl = RammingController()
Exemple #5
0
                               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'))