System: Added custom light controller.

This commit is contained in:
Sidi Liang 2019-07-27 15:05:00 +08:00
parent 8ea07c42a7
commit 17cd865dc3
4 changed files with 259 additions and 5 deletions

13
.gitignore vendored Normal file
View File

@ -0,0 +1,13 @@
# .gitignore
####################################
######## OS generated files ########
####################################
.DS_Store
.DS_Store?
*.swp
._*
.Spotlight-V100
.Trashes
Icon?
ehthumbs.db
Thumbs.db

BIN
Models/.DS_Store vendored

Binary file not shown.

View File

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

View File

@ -107,6 +107,22 @@
<name>d</name>
<desc>Steer right 50%</desc>
</key>
<key>
<name>h</name>
<desc>Horn</desc>
</key>
<key>
<name>f</name>
<desc>Toggle false indicator light</desc>
</key>
<key>
<name>[</name>
<desc>Toggle left indicator light</desc>
</key>
<key>
<name>]</name>
<desc>Toggle right indicator light</desc>
</key>
<text>
You can select the message to be displayed on the bar, through the "Follow Me > Select message" menu.
</text>
@ -190,18 +206,27 @@
<name>[</name>
<desc>Toggle left indicator lights</desc>
<binding>
<command>property-toggle</command>
<property>/controls/lighting/indicator-left</property>
<command>nasal</command>
<script>followme.indicatorController.left_indicator_toggle();</script>
</binding>
</key>
<key n="93">
<name>]</name>
<desc>Toggle right indicator lights</desc>
<binding>
<command>property-toggle</command>
<property>/controls/lighting/indicator-right</property>
<command>nasal</command>
<script>followme.indicatorController.right_indicator_toggle();</script>
</binding>
</key>
<key n="102">
<name>f</name>
<desc>false-light</desc>
<repeatable>false</repeatable>
<binding>
<command>nasal</command>
<script>followme.indicatorController.false_light_toggle();</script>
</binding>
</key>
<key n="109">
<name>m</name>
<desc>Toggle direction</desc>