From 4b9e9d4f2f0176ab5b426f35ced2945977e1f5c5 Mon Sep 17 00:00:00 2001 From: Sidi Liang <1467329765@qq.com> Date: Sat, 18 Apr 2020 23:46:50 +0800 Subject: [PATCH] System: auto hold logic --- Nasal/auto_hold.nas | 58 +++++++++++++++++++++++++++++++++++++++++ Nasal/systems.nas | 3 +++ followme_e-tron-set.xml | 3 +++ 3 files changed, 64 insertions(+) create mode 100644 Nasal/auto_hold.nas diff --git a/Nasal/auto_hold.nas b/Nasal/auto_hold.nas new file mode 100644 index 0000000..21a30ff --- /dev/null +++ b/Nasal/auto_hold.nas @@ -0,0 +1,58 @@ +#//Auto hold system by Sidi Liang +print("Auto hold system loaded"); +var active = 0; +var working = 0; +var targetSpeed = 0; +var throttleNode = props.getNode("/controls/engines/engine/throttle",1); +var speedNode = props.getNode("sim/multiplay/generic/float[15]", 1); +var engineNode = props.getNode("/controls/engines/engine/started",1); +var door1 = followme.frontleft_door; +var door2 = followme.frontright_door; +var door3 = followme.rearleft_door; +var door4 = followme.rearright_door; +var autoHoldMainLoop = func(){ + if(active){ + throttle = throttleNode.getValue(); + currentSpeed = speedNode.getValue(); + if(!throttle and !math.round(currentSpeed)){ + if(!door1.getpos() and !door2.getpos() and !door3.getpos() and !door4.getpos() and engineNode.getValue()){ + followme.brakeController.applyBrakes(1); + working = 1; + }else{ + stopAndSwitchToParking(); + } + }else if(!math.round(currentSpeed)){ + followme.brakeController.applyBrakes(0); + working = 0; + } + } +} +var stopAndSwitchToParking = func(){ + followme.brakeController.applyBrakes(0); + working = 0; + followme.brakeController.enableHandBrake(); +} + +var autoHoldTimer = maketimer(0.05,autoHoldMainLoop); + +var startAutoHold = func(){ + autoHoldTimer.start(); + active = 1; +} + +var stopAutoHold = func(){ + active = 0; + autoHoldTimer.stop(); + if(followme.brakeController.applyingFeetBrake){ + working = 0; + followme.brakeController.applyBrakes(0); + }else{ + stopAndSwitchToParking(); + } +} + + +var toggleAutoSpeed = func(){ + if(!autoHoldTimer.isRunning) startAutoHold(); + else stopAutoHold(); +} diff --git a/Nasal/systems.nas b/Nasal/systems.nas index 09876ba..de27c3c 100644 --- a/Nasal/systems.nas +++ b/Nasal/systems.nas @@ -356,6 +356,7 @@ var BrakeController = { rightBrakeNode: props.getNode("/controls/gear/brake-right",1), parkingBrakeNode: props.getNode("/controls/gear/brake-parking",1), + applyingFeetBrake: 0, handBrakeIsOn: 0, leftBrakeValue: 0, rightBrakeValue: 0, @@ -398,9 +399,11 @@ var BrakeController = { safety.emergencyMode(); }, keyboardBrake: func(){ + applyingFeetBrake = 1; me.applyBrakes(0.8); }, keyboardBrakeRelease: func(){ + applyingFeetBrake = 0; me.applyBrakes(0); }, releaseBrake: func(){ diff --git a/followme_e-tron-set.xml b/followme_e-tron-set.xml index ee449e0..07d386d 100644 --- a/followme_e-tron-set.xml +++ b/followme_e-tron-set.xml @@ -856,6 +856,9 @@ Aircraft/followme_e-tron/Nasal/auto_speed.nas + + Aircraft/followme_e-tron/Nasal/auto_hold.nas + Aircraft/followme_e-tron/Models/Interior/Instruments/CDU/boeing.nas Aircraft/followme_e-tron/Models/Interior/Instruments/CDU/library.nas