diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..8be089c
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,13 @@
+# .gitignore
+####################################
+######## OS generated files ########
+####################################
+.DS_Store
+.DS_Store?
+*.swp
+._*
+.Spotlight-V100
+.Trashes
+Icon?
+ehthumbs.db
+Thumbs.db
diff --git a/Models/.DS_Store b/Models/.DS_Store
deleted file mode 100644
index c98c2b4..0000000
Binary files a/Models/.DS_Store and /dev/null differ
diff --git a/Nasal/systems.nas b/Nasal/systems.nas
index 0155697..0078457 100644
--- a/Nasal/systems.nas
+++ b/Nasal/systems.nas
@@ -23,7 +23,8 @@ var liveryFuse_update = {
aircraft.livery.init("Aircraft/followme_e-tron/Models/Messages");
liveryFuse.init("Aircraft/followme_e-tron/Models/Texture");
-props.getNode("/",1).setValue("/systems/horn",false);
+props.getNode("/",1).setValue("/systems/horn", 0);
+props.getNode("/",1).setValue("/systems/false-light", 0);
var frontleft_door = aircraft.door.new("/controls/doors/frontleft", 1);
var frontright_door = aircraft.door.new("/controls/doors/frontright", 1);
@@ -37,6 +38,221 @@ var beacon = aircraft.light.new( "/sim/model/lights/indicator-left", [0.8, 0.5],
beacon_switch = props.globals.getNode("controls/switches/indicator-right", 2);
var beacon = aircraft.light.new( "/sim/model/lights/indicator-right", [0.8, 0.5], "/controls/lighting/indicator-right");
+props.getNode("/",1).setValue("/controls/lighting/indicator-left", 0);
+props.getNode("/",1).setValue("/controls/lighting/indicator-right", 0);
+
+
+
+#var Led = {
+#
+# new: func() { return { parents:[Led] },
+# node: props.getNode("/sim/model/livery/texture",1),
+# blankTexture: "Messages/blanco.png",
+# currentMessage: "",
+# messageHistory : [],
+#
+# display: func(content){
+# me.node.setValue(content);
+# },
+#
+#
+#};
+
+
+
+var Indicator = {
+
+ # Usage: #
+ # var leftIndicator = Indicator.new("left"); #
+ # var rightIndicator = Indicator.new("right"); #
+ # #
+
+ type: "",
+ new: func(type) { return { parents:[Indicator], type: type}; },
+ state: 0,
+ switchOn: func(){
+ props.getNode("/", 1).setValue("/controls/lighting/indicator-"~me.type, 1);
+ me.state = 1;
+ },
+ switchOff: func(){
+ props.getNode("/", 1).setValue("/controls/lighting/indicator-"~me.type, 0);
+ me.state = 0;
+ },
+ isOn: func(){
+ return me.state;
+ },
+ isOff: func(){
+ if(me.state){
+ return 0;
+ }else{
+ return 1;
+ }
+ },
+};
+
+
+
+
+var IndicatorController = {
+
+ #
+ # Usage:
+ # mode:
+ # 0:Off
+ # 1:Right without led
+ # 2:Left without led
+ # 3:both without led
+ # 4:Right with led
+ # 5:Left with led
+ # 6:both with led(WIP)
+ # getMode(): Get currrent mode
+ # setMode(mode): Set mode(0,1,2), return 0 if fail
+ #
+ #
+ #
+ #
+ #
+
+
+
+ new: func() { return { parents:[IndicatorController]}; },
+
+ leftIndicator : Indicator.new("left"),
+ rightIndicator : Indicator.new("right"),
+
+ mode:0,
+
+ falseLight: 0,
+
+ ledMessage: props.getNode("/sim/model/livery/texture",1),
+
+ currentMessage: "",
+
+ textureRight: "Messages/right.png",
+
+ textureLeft: "Messages/left.png",
+
+ saveLedMessage: func(){
+ me.currentMessage = me.ledMessage.getValue();
+ },
+
+ getSavedMessage: func(){
+ return me.currentMessage;
+ },
+
+ clearSavedMessage: func(){
+ me.currentMessage = "";
+ },
+
+ setLedMessage: func(content){
+ me.ledMessage.setValue(content);
+ },
+
+ resumeLedMessage: func(){
+ if(me.getSavedMessage()){
+ me.setLedMessage(me.getSavedMessage());
+ me.clearSavedMessage();
+ }
+ },
+
+ getMode: func(){
+ return me.mode;
+ },
+
+ setMode: func(targetMode){
+ if(targetMode == 0){
+ me.resumeLedMessage();
+ me.rightIndicator.switchOff();
+ me.leftIndicator.switchOff();
+ me.mode = targetMode;
+
+ if(me.falseLight == 1){
+ me.setMode(3);
+ }
+
+ }else if(targetMode == 1){
+ me.resumeLedMessage();
+ me.rightIndicator.switchOn();
+ me.leftIndicator.switchOff();
+ me.mode = targetMode;
+ }else if(targetMode == 2){
+ me.resumeLedMessage();
+ me.rightIndicator.switchOff();
+ me.leftIndicator.switchOn();
+ me.mode = targetMode;
+ }else if(targetMode == 3){
+ me.resumeLedMessage();
+ me.rightIndicator.switchOn();
+ me.leftIndicator.switchOn();
+ me.mode = targetMode;
+ }else if(targetMode == 4){
+
+ me.resumeLedMessage();
+ me.saveLedMessage();
+
+ me.rightIndicator.switchOn();
+ me.leftIndicator.switchOff();
+
+ me.setLedMessage(me.textureRight);
+
+ me.mode = targetMode;
+ }else if(targetMode == 5){
+
+ me.resumeLedMessage();
+ me.saveLedMessage();
+
+ me.rightIndicator.switchOff();
+ me.leftIndicator.switchOn();
+
+ me.setLedMessage(me.textureLeft);
+
+ me.mode = targetMode;
+ }else if(targetMode == 6){
+ me.mode = targetMode;
+ }else{
+ return 0;
+ }
+ },
+
+ right_indicator_toggle : func(){
+ if(me.getMode() != 4){
+ me.setMode(4);
+ }else if(me.getMode() == 4){
+ me.setMode(0);
+ }
+ },
+
+ left_indicator_toggle : func(){
+ if(me.getMode() != 5){
+ me.setMode(5);
+ }else if(me.getMode() == 5){
+ me.setMode(0);
+ }
+ },
+
+ falseLightOn : func(){
+ print("falseLight turned on");
+ me.falseLight = 1;
+ me.setMode(3);
+ },
+
+ falseLightOff : func(){
+ print("falseLight turned off");
+ me.falseLight = 0;
+ me.setMode(0);
+ },
+
+ false_light_toggle : func(){
+ if(me.falseLight == 0){
+ me.falseLightOn();
+ }else if(me.falseLight == 1){
+ me.falseLightOff();
+ }
+ },
+
+};
+
+var indicatorController = IndicatorController.new();
var brakesABS = func(){
diff --git a/followme_e-tron-set.xml b/followme_e-tron-set.xml
index 269128f..dab5292 100644
--- a/followme_e-tron-set.xml
+++ b/followme_e-tron-set.xml
@@ -107,6 +107,22 @@
d
Steer right 50%
+
+ h
+ Horn
+
+
+ f
+ Toggle false indicator light
+
+
+ [
+ Toggle left indicator light
+
+
+ ]
+ Toggle right indicator light
+
You can select the message to be displayed on the bar, through the "Follow Me > Select message" menu.
@@ -190,18 +206,27 @@
[
Toggle left indicator lights
- property-toggle
- /controls/lighting/indicator-left
+ nasal
+
]
Toggle right indicator lights
- property-toggle
- /controls/lighting/indicator-right
+ nasal
+
+
+ f
+ false-light
+ false
+
+ nasal
+
+
+
m
Toggle direction