System: auto hold logic

This commit is contained in:
Sidi Liang 2020-04-18 23:46:50 +08:00
parent 54c059fbf7
commit 4b9e9d4f2f
No known key found for this signature in database
GPG Key ID: 79F0A6B20B72F42F
3 changed files with 64 additions and 0 deletions

58
Nasal/auto_hold.nas Normal file
View File

@ -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();
}

View File

@ -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(){

View File

@ -856,6 +856,9 @@
<autospeed>
<file>Aircraft/followme_e-tron/Nasal/auto_speed.nas</file>
</autospeed>
<autohold>
<file>Aircraft/followme_e-tron/Nasal/auto_hold.nas</file>
</autohold>
<cdu>
<file>Aircraft/followme_e-tron/Models/Interior/Instruments/CDU/boeing.nas</file>
<file>Aircraft/followme_e-tron/Models/Interior/Instruments/CDU/library.nas</file>